# "fxml_99" Rexx Address Book Application

This directory contains the Rexx implementation (cf. MainApp.rexMainApp.rex) of the JavaFX address book tutorial from:

- Java 1.7/7 ("JavaFX 2"): Address Book Tutorial
- Java 1.8/8 ("JavaFX 8"): Address Book Tutorial

Hint: if you wish to look at the ooRexx code with syntax highlighting, then you can use the free and open-source editor `"[g]vim"`, which is available for practically all platforms and can be downloaded from its homepage at http://www.vim.org/.

. <directory> (List of this directory)
  Display all of this directory's files and directories.
.. <directory> (List of parent directory)
  Display all of the parent directory's files and directories.

The following Rexx packages (Rexx programs) are used in this application.

MainApp.rex, usage: "`rexx MainApp.rex [json-file]`" or (on Linux use `rexxj.sh` instead) "`rexxj.cmd MainApp.rex [json-file]`"
  The main Rexx program that sets up and starts the JavaFX application. This program will cause JavaFX to load and process the GUI defined in the XML text files (file type of `.fxml`) and implements the controllers for the different GUI-FXML files.
put_FXID_objects_into.my.app.rex
  A utilty Rexx program/package that is called from within each GUI-FXML file which makes all its JavaFX objects (those that have a "fx:id" attribute defined) available to all running Rexx programs.
json-rgf.cls
  A Rexx package allowing to read and write JSON encoded data. Used to read and write address book data.

The following `FXML` files define individual GUI controls (cf. `introduction_to_fxml.html` ):

RootLayout.fxml
  This FXML text file defines the root GUI which is used to place the PersonOverview.fxml GUI into its center area and which gets displayed in the application's primary stage (a window).
PersonOverview.fxml
  This FXML text file defines the GUI to display all address book persons in a list (using a TableView) and depict the details of a selected person on the right hand side together with a menu to create, edit or delete persons in the list.
PersonEditDialog.fxml
  This FXML text file defines the GUI to display and edit a person's detail. It will be displayed in its own window (a Stage), but modal to the primary stage.
BirthdayStatistics.fxml
  This FXML text file defines the GUI to display and edit a bar chart depicting the frequency of the birthday months. This GUI will be displayed in its own window (a Stage), but modal to the primary stage.
PersonPrinterDialog.fxml
  This FXML text file defines the GUI to display and print the generated print data. It uses the JavaFX javafx.scene.web.WebView class, which is a JavaFX HTML 5 browser control (cf. the Oracle tutorial https://docs.oracle.com/javafx/2/webview/jfxpub-webview.htm).

The following file defines the CSS (cascading style sheet) rules to apply to all the JavaFX GUI elements:

DarkTheme.css
  The CSS rules to format all GUI elements of this application, cf. JavaFX 8 Tutorial - Part 4: CSS Styling.
DarkThemePrint.css
  The CSS rules to format all GUI elements of this application for printing. As of 2017-01-04 note: JavaFX 8.0 `WebEngine` uses WebKit as the user agent to render the generated HTML 5 data.

  Rony G. Flatscher, 2016-12-06, 2017-01-04, 2021-06-27 Wien/Vienna, Austria, Europe