Class RdcUtilities

java.lang.Object
org.tentackle.fx.rdc.RdcUtilities
Direct Known Subclasses:
RdcUtilitiesWithBackgroundPool

@Service(RdcUtilities.class) public class RdcUtilities extends Object
RDC-related utility methods.
Author:
harald
  • Constructor Details

    • RdcUtilities

      public RdcUtilities()
      Creates the RDC utilities.
  • Method Details

    • getInstance

      public static RdcUtilities getInstance()
      The singleton.
      Returns:
      the singleton
    • invalidateCaches

      public void invalidateCaches()
      Invalidates the caches for search- and crud dialogs.
    • displayCrudStage

      public <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, null if no consumer
      configurator - optional crud configurator
    • getCrud

      public <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.
    • getCrud

      public <T extends PersistentDomainObject<T>> javafx.stage.Stage getCrud(T pdo, boolean editable)
      Gets a CRUD stage for a PDO.
      Useful to check whether a PDO is being edited or shown currently.
      Type Parameters:
      T - the pdo type
      Parameters:
      pdo - the pdo
      editable - true if user may edit the pdo, false if to view only
      Returns:
      the CRUD showing stage, null if there is no such stage
    • displaySearchStage

      public <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 <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 <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
    • showSaveDiscardCancelDialog

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

      public <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
    • runInBackground

      public <V> void runInBackground(javafx.scene.Node node, 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.

      The optional node will get the wait cursor set, while the task is executed in background.

      The default implementation creates a AbstractSessionTask and runs it on behalf of the ModificationTracker. If the runner itself is a SessionDependable it gets the session set as well before it is invoked. The result is then passed to updateUI and executed via Platform.runLater(Runnable).

      Type Parameters:
      V - the type returned by the runner
      Parameters:
      node - the optional node this background task is related to, null if none
      runner - the code running in another thread in parallel to the FX thread
      updateUI - optional UI updater invoked from within the FX event queue, null if none
      failedUI - optional UI updater invoked if execution failed, null if log only as error
    • createDragboard

      public javafx.scene.input.Dragboard createDragboard(javafx.scene.Node node, PersistentDomainObject<?>... pdos)
      Creates the dragboard for a node and PDOs.
      Parameters:
      node - the drag source
      pdos - the PDOs
      Returns:
      the dragboard, null if PDOs are not transferable
    • getPdoKeysFromDragboard

      public List<IdentifiableKey<PersistentDomainObject<?>>> getPdoKeysFromDragboard(javafx.scene.input.Dragboard dragboard)
      Gets all PDO keys from the dragboard.
      Parameters:
      dragboard - the dragboard
      Returns:
      the keys, empty list if the dragboard's string is null or empty
    • getPdoKeyFromDragboard

      public IdentifiableKey<PersistentDomainObject<?>> getPdoKeyFromDragboard(javafx.scene.input.Dragboard dragboard)
      Gets the PDO key from the dragboard.
      If the dragboard contains more than one key, the first will be returned.
      Parameters:
      dragboard - the dragboard
      Returns:
      the key, null if the dragboard's string is null or empty
    • getPdosFromDragboard

      public List<PersistentDomainObject<?>> getPdosFromDragboard(javafx.scene.input.Dragboard dragboard, DomainContext context)
      Gets all PDOs from a dragboard.
      Parameters:
      dragboard - the dragboard
      context - the domain context
      Returns:
      the PDOs, empty list if dragboard doesn't contain a pdo key or no such pdos
    • getPdoFromDragboard

      public PersistentDomainObject<?> getPdoFromDragboard(javafx.scene.input.Dragboard dragboard, DomainContext context)
      Gets the PDO from a dragboard.
      If the dragboard contains more than one key, the first PDO will be returned.
      Parameters:
      dragboard - the dragboard
      context - the domain context
      Returns:
      the PDO, null if dragboard doesn't contain a pdo key or no such pdo
    • selectFile

      public File selectFile(String prefName, String prefKey, String fileExtension, String fileType, javafx.stage.Stage owner)
      Selects a file via file chooser dialog and remembers the decision in the user preferences.
      Parameters:
      prefName - the preferences name
      prefKey - the preferences key
      fileExtension - the filename extension (including the leading dot)
      fileType - the localized name of the file type
      owner - the dialog owner for the selection dialog, null if none
      Returns:
      the selected file, null if aborted
    • getMainStage

      public javafx.stage.Stage getMainStage()
      Gets the main stage of the current application.
      Returns:
      the main stage
    • isSearchCachingEnabled

      protected <T extends PersistentDomainObject<T>> boolean isSearchCachingEnabled(T pdo)
      Determines whether the search controller is cached.
      Type Parameters:
      T - the PDO type
      Parameters:
      pdo - the PDO
      Returns:
      true if cached
    • isCrudCachingEnabled

      protected <T extends PersistentDomainObject<T>> boolean isCrudCachingEnabled(T pdo)
      Determines whether the crud controller is cached.
      Type Parameters:
      T - the PDO type
      Parameters:
      pdo - the PDO
      Returns:
      true if cached