Class Rdc

java.lang.Object
org.tentackle.fx.rdc.Rdc

public class Rdc extends Object
Collected factory methods for FX-RDC-related stuff.
Enhances code readability.
Author:
harald
  • Method Details

    • createPdoCrud

      public static <T extends PersistentDomainObject<T>> PdoCrud<T> createPdoCrud(T pdo, boolean editable, boolean modal)
      Creates a CRUD controller for a pdo.
      Type Parameters:
      T - the pdo type
      Parameters:
      pdo - the pdo
      editable - true if user may edit the pdo, false if to view only
      modal - true if modal mode
      Returns:
      the crud controller
    • createPdoSearch

      public static <T extends PersistentDomainObject<T>> PdoSearch<T> createPdoSearch(T pdo)
      Creates a search controller for a pdo.
      Type Parameters:
      T - the pdo type
      Parameters:
      pdo - the pdo
      Returns:
      the search controller
    • createGuiProvider

      public static <T extends PersistentDomainObject<T>> GuiProvider<T> createGuiProvider(T pdo)
      Creates a service object that provides methods related to the rdc gui.

      Throws a PdoRuntimeException if provider could not be created.

      Type Parameters:
      T - the PDO's class
      Parameters:
      pdo - the PDO
      Returns:
      the GUI provider, never null
    • createTablePopup

      public static <S> TablePopup<S> createTablePopup(FxTableView<S> table, String preferencesSuffix, String title)
      Creates a table popup for a table view.
      Type Parameters:
      S - the row type
      Parameters:
      table - the table
      preferencesSuffix - the optional preferences suffix to load/save table preferences
      title - the optional title of the printed table
      Returns:
      the popup
    • createTablePopup

      public static <S> TablePopup<S> createTablePopup(FxTreeTableView<S> treeTable, String preferencesSuffix, String title)
      Creates a table popup for a tree table view.
      Type Parameters:
      S - the row type
      Parameters:
      treeTable - the treetable
      preferencesSuffix - the optional preferences suffix to load/save table preferences
      title - the optional title of the printed table
      Returns:
      the popup
    • createTreeItem

      public static <T extends PersistentDomainObject<T>> javafx.scene.control.TreeItem<T> createTreeItem(T pdo)
      Creates a tree item for a pdo.
      Type Parameters:
      T - the pdo type
      Parameters:
      pdo - the pdo
      Returns:
      the tree item
    • createTreeCell

      public static <T extends PersistentDomainObject<T>> javafx.scene.control.TreeCell<T> createTreeCell(javafx.scene.control.TreeView<T> treeView)
      Creates a tree cell for a pdo type.
      Usage:
         treeView.setCellFactory(Rdc::createTreeCell);
       
      Type Parameters:
      T - the pdo type
      Parameters:
      treeView - the treeview
      Returns:
      the tree cell
    • createTableCell

      public static <S, T extends PersistentDomainObject<T>> PdoTableCell<S,T> createTableCell(TableColumnConfiguration<S,T> columnConfig)
      Creates a table cell for a pdo type. Usage:
         tableColumn.setCellFactory(Rdc::createTableCell);
       
      Type Parameters:
      S - the table row's type
      T - the table cell's pdo type
      Parameters:
      columnConfig - the table column configuration
      Returns:
      the tree table cell
    • createTreeTableCell

      public static <S, T extends PersistentDomainObject<T>> PdoTreeTableCell<S,T> createTreeTableCell(TableColumnConfiguration<S,T> columnConfig)
      Creates a tree table cell for a pdo type. Usage:
         treeTableColumn.setCellFactory(Rdc::createTreeTableCell);
       
      Type Parameters:
      S - the table row's type
      T - the table cell's pdo type
      Parameters:
      columnConfig - the table column configuration
      Returns:
      the tree table cell
    • displayCrudStage

      public static <T extends PersistentDomainObject<T>> void displayCrudStage(T pdo, boolean editable, javafx.stage.Window owner)
      CRUD of a PDO in a non-modal separate window.
      Type Parameters:
      T - the pdo type
      Parameters:
      pdo - the pdo
      editable - true if user may edit the pdo, false if to view only
      owner - the owner, null if none
    • displayCrudStage

      public static <T extends PersistentDomainObject<T>> void displayCrudStage(T pdo, boolean editable, javafx.stage.Modality modality, javafx.stage.Window owner, Consumer<T> updatedPdo)
      CRUD of a PDO in a separate window.
      Type Parameters:
      T - the pdo type
      Parameters:
      pdo - the pdo
      editable - true if user may edit the pdo, false if to view only
      modality - the modality
      owner - the owner, null if none
      updatedPdo - the consumer for the possibly changed pdo if modal
    • displayCrudStage

      public static <T extends PersistentDomainObject<T>> void displayCrudStage(T pdo, javafx.collections.ObservableList<T> pdoList, boolean editable, javafx.stage.Modality modality, javafx.stage.Window owner, Consumer<T> updatedPdo, Consumer<PdoCrud<T>> configurator)
      CRUD of a PDO in a separate window.
      Type Parameters:
      T - the pdo type
      Parameters:
      pdo - the pdo
      pdoList - the optional list of PDOs to navigate in the list
      editable - true if user may edit the pdo, false if to view only
      modality - the modality
      owner - the owner, null if none
      updatedPdo - the consumer for the possibly changed pdo if modal
      configurator - optional crud configurator
    • getCrud

      public static <T extends PersistentDomainObject<T>> PdoCrud<T> getCrud(T pdo, javafx.collections.ObservableList<T> pdoList, boolean editable, javafx.stage.Modality modality, javafx.stage.Window owner)
      Gets a CRUD for a PDO.
      If the PDO is already being edited the corresponding stage will be brought to front and null is returned.
      Type Parameters:
      T - the pdo type
      Parameters:
      pdo - the pdo
      pdoList - the optional list of PDOs to navigate in the list
      editable - true if user may edit the pdo, false if to view only
      modality - the modality
      owner - the owner, null if none
      Returns:
      the CRUD, null if there is already a CRUD editing this PDO.
    • displaySearchStage

      public static <T extends PersistentDomainObject<T>> void displaySearchStage(T pdo, javafx.stage.Window owner, boolean createPdoAllowed)
      Searches for PDOs in a non-modal separate window.
      Type Parameters:
      T - the pdo type
      Parameters:
      pdo - the pdo as a template
      owner - the owner, null if none
      createPdoAllowed - true if allow to create a new PDO from within the search dialog
    • displaySearchStage

      public static <T extends PersistentDomainObject<T>> void displaySearchStage(T pdo, javafx.stage.Modality modality, javafx.stage.Window owner, boolean createPdoAllowed, Consumer<javafx.collections.ObservableList<T>> selectedItems)
      Searches for PDOs in a separate window.
      Type Parameters:
      T - the pdo type
      Parameters:
      pdo - the pdo as a template
      modality - the modality
      owner - the owner, null if none
      createPdoAllowed - true if allow to create a new PDO from within the search dialog
      selectedItems - the consumer for the selected PDOs if modal, null if not modal
    • displaySearchStage

      public static <T extends PersistentDomainObject<T>> void displaySearchStage(T pdo, javafx.stage.Modality modality, javafx.stage.Window owner, boolean createPdoAllowed, Consumer<javafx.collections.ObservableList<T>> selectedItems, Consumer<PdoSearch<T>> configurator)
      Searches for PDOs in a separate window.
      Type Parameters:
      T - the pdo type
      Parameters:
      pdo - the pdo as a template
      modality - the modality
      owner - the owner, null if none
      createPdoAllowed - true if allow to create a new PDO from within the search dialog
      selectedItems - the consumer for the selected PDOs if modal, null if not modal
      configurator - the optional configurator for the PdoSearch
    • getSearch

      public static <T extends PersistentDomainObject<T>> PdoSearch<T> getSearch(T pdo, javafx.stage.Modality modality, javafx.stage.Window owner)
      Gets a search controller for a PDO.
      Type Parameters:
      T - the pdo type
      Parameters:
      pdo - the pdo
      modality - the modality
      owner - the owner, null if none
      Returns:
      the search controller, never null
    • showTree

      public static <T extends PersistentDomainObject<T>> void showTree(T pdo)
      Shows the tree of a PDO in a modal scene.
      Type Parameters:
      T - the PDO type
      Parameters:
      pdo - the PDO
    • showSaveDiscardCancelDialog

      public static void showSaveDiscardCancelDialog(Consumer<Boolean> doIt)
      Shows a question dialog whether to save, discard or cancel editing of a PDO.
      Parameters:
      doIt - consumer invoked with true to save, false to discard changes, null to cancel and do nothing
    • closeStageHierarchy

      public static void closeStageHierarchy(javafx.scene.Node node)
      Closes the stage hierarchy of given node, except the main stage.
      Parameters:
      node - the node
    • bg

      public static <V> void bg(Supplier<V> runner, Consumer<V> updateUI, Consumer<RuntimeException> failedUI)
      Runs some code in another thread and optionally updates the UI.
      The method is provided to hide the concrete implementation and make it replaceable.
      Use this method whenever some lengthy operation (database I/O, for example) would otherwise block the event queue.

      Example:

         Rdc.bg(() -> {
                    on(MyPdo.class).findWhateverItTakes()...
                    ...
                    return "Done";
                },
                s -> Fx.info(s));
       
      Type Parameters:
      V - the type returned by the runner
      Parameters:
      runner - the code running in another thread in parallel to the FX thread
      updateUI - optional UI updater invoked from within the FX event queue
      failedUI - optional UI updater invoked if execution failed
      See Also:
    • bg

      public static <V> void bg(Supplier<V> runner, Consumer<V> updateUI)
      Same as bg(Supplier, Consumer, Consumer) but with a predefined exception consumer.
      The exception is shown as an error dialog.
      Type Parameters:
      V - the type returned by the runner
      Parameters:
      runner - the code running in another thread in parallel to the FX thread
      updateUI - optional UI updater invoked from within the FX event queue
    • bg

      public static void bg(Runnable runner)
      Runs some code in another thread.
      Parameters:
      runner - the code running in another thread in parallel to the FX thread
      See Also: