Class XalTreeView<T>

java.lang.Object
javafx.scene.Node
javafx.scene.Parent
javafx.scene.layout.Region
javafx.scene.layout.Pane
javafx.scene.layout.VBox
xal.extension.fxapplication.widgets.XalTreeView<T>
All Implemented Interfaces:
javafx.css.Styleable, javafx.event.EventTarget
Direct Known Subclasses:
AcceleratorTreeView, ComboSequencesTreeView, PowerSuppliesTreeView

public abstract class XalTreeView<T> extends javafx.scene.layout.VBox
This class represents a VBox that contains a titlebar, a TreeView, and a Bottom bar. The TreeView is supposed to contain elements of the XAL SMF.

It implements methods to add, remove, find, and select elements in the TreeView.

The title bar can be used to add a title referring to the TreeView, and buttons for functions like filters.

The bottom bar is intended for buttons to add/remove elements.

The widget can be used independently or coupled to the application document.

In the first case, use the update method to set the accelerator that will be used to get the data.

For integration with the application document, use the setDocument method. It will update the tree every time either the accelerator is changed.

One can also define listener for single and double click events.

Author:
Juan F. Esteban Müller <JuanF.EstebanMuller@ess.eu>
  • Property Summary

    Properties
    Type
    Property
    Description
    javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.control.TreeItem<T>>
    Returns the selected item property of the TreeView.

    Properties inherited from class javafx.scene.layout.VBox

    alignment, fillWidth, spacing

    Properties inherited from class javafx.scene.layout.Region

    background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width

    Properties inherited from class javafx.scene.Parent

    needsLayout

    Properties inherited from class javafx.scene.Node

    accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, focusVisible, focusWithin, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, viewOrder, visible
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final javafx.scene.layout.HBox
     
    protected boolean
     
    protected boolean
     
    protected final javafx.scene.layout.HBox
     
    protected final javafx.scene.layout.HBox
     
    protected final javafx.scene.control.TreeView
     

    Fields inherited from class javafx.scene.layout.Region

    USE_COMPUTED_SIZE, USE_PREF_SIZE

    Fields inherited from class javafx.scene.Node

    BASELINE_OFFSET_SAME_AS_HEIGHT
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addDoubleClickEventHandler(javafx.event.EventHandler<javafx.scene.input.MouseEvent> eventHandler)
    Adds a new double-click event handler to the TreeView TreeCell objects.
    abstract javafx.scene.control.TreeItem<T>
    addElement(T node)
    This method allows to add a node in the TreeView after adding it to the accelerator, avoiding to reload the full treeview.
    protected javafx.scene.control.TreeItem<T>
    addElement(T node, javafx.scene.control.TreeItem<T> parentItem)
     
    protected void
    addItem(javafx.scene.control.TreeItem<T> item, javafx.scene.control.TreeItem<T> parentItem)
     
    void
    addSingleClickEventHandler(javafx.event.EventHandler<javafx.scene.input.MouseEvent> eventHandler)
    Adds a new single-click event handler to the TreeView TreeCell objects.
    void
    Clear the selection.
    void
    Disables the default click event handler in the TreeView.
    protected void
    doubleClickEventHandler(javafx.scene.input.MouseEvent event)
     
    void
    Enables the default click event handler in the TreeView.
    javafx.scene.control.TreeItem<T>
    Find the TreeItem element with the following node ID.
    protected javafx.scene.control.TreeItem<T>
    findElement(javafx.scene.control.TreeItem<T> parentNode, String nodeId)
     
    javafx.scene.layout.HBox
    Get the HBox object that is defined below the TreeView.
    protected javafx.scene.image.ImageView
    getIcon(T node)
     
    protected abstract String
    getId(javafx.scene.control.TreeItem<T> selectedItem)
    This method should be implemented by subclasses to get the node ID corresponding to a TreeItem object.
    javafx.scene.control.TreeItem<T>
    Returns the TreeItem object corresponding to the selected item.
    Returns the object represented by the selected TreeItem.
    Returns the node ID of the selected item.
    javafx.scene.control.MultipleSelectionModel<javafx.scene.control.TreeItem<T>>
     
    javafx.scene.layout.HBox
    Get the HBox object that is defined above the TreeView.
    javafx.scene.control.TreeView
     
    protected javafx.scene.control.TreeItem<T>
    newItem(T node)
     
    void
     
    void
    removeDoubleClickEventHandler(javafx.event.EventHandler<javafx.scene.input.MouseEvent> eventHandler)
    Removes a double-click event handler from the TreeView TreeCell objects.
    void
    removeSingleClickEventHandler(javafx.event.EventHandler<javafx.scene.input.MouseEvent> eventHandler)
    Removes a single-click event handler from the TreeView TreeCell objects.
    javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.control.TreeItem<T>>
    Returns the selected item property of the TreeView.
    boolean
    Select the node with the given node ID, if found on the TreeView.
    protected boolean
    selectElement(javafx.scene.control.TreeItem<T> parentNode, String nodeId)
     
    abstract void
    This method uses the accelerator property to update the tree every time the accelerator is changed, and vice versa.
    protected void
    singleClickEventHandler(javafx.scene.input.MouseEvent event)
     
    abstract void
    update(Accelerator accelerator)
    The method should repopulate the TreeView using the data from the Accelerator object passed as an argument.

    Methods inherited from class javafx.scene.layout.VBox

    alignmentProperty, clearConstraints, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, fillWidthProperty, getAlignment, getClassCssMetaData, getContentBias, getCssMetaData, getMargin, getSpacing, getVgrow, isFillWidth, layoutChildren, requestLayout, setAlignment, setFillWidth, setMargin, setSpacing, setVgrow, spacingProperty

    Methods inherited from class javafx.scene.layout.Pane

    getChildren

    Methods inherited from class javafx.scene.layout.Region

    backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, computeMaxHeight, computeMaxWidth, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isResizable, isScaleShape, isSnapToPixel, layoutInArea, layoutInArea, layoutInArea, layoutInArea, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, opaqueInsetsProperty, paddingProperty, positionInArea, positionInArea, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, resize, scaleShapeProperty, setBackground, setBorder, setCacheShape, setCenterShape, setHeight, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setOpaqueInsets, setPadding, setPrefHeight, setPrefSize, setPrefWidth, setScaleShape, setShape, setSnapToPixel, setWidth, shapeProperty, snappedBottomInset, snappedLeftInset, snappedRightInset, snappedTopInset, snapPosition, snapPositionX, snapPositionY, snapSize, snapSizeX, snapSizeY, snapSpace, snapSpaceX, snapSpaceY, snapToPixelProperty, widthProperty

    Methods inherited from class javafx.scene.Parent

    getBaselineOffset, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, queryAccessibleAttribute, requestParentLayout, setNeedsLayout, updateBounds

    Methods inherited from class javafx.scene.Node

    accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, executeAccessibleAction, fireEvent, focusedProperty, focusTraversableProperty, focusVisibleProperty, focusWithinProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, getInitialFocusTraversable, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getStyleClass, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isFocusVisible, isFocusWithin, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isVisible, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickOnBoundsProperty, pressedProperty, pseudoClassStateChanged, relocate, removeEventFilter, removeEventHandler, requestFocus, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, setTranslateZ, setUserData, setViewOrder, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, viewOrderProperty, visibleProperty

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface javafx.css.Styleable

    getStyleableNode
  • Property Details

    • selectedItem

      public javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.control.TreeItem<T>> selectedItemProperty
      Returns the selected item property of the TreeView.
      See Also:
  • Field Details

    • treeView

      protected final javafx.scene.control.TreeView treeView
    • titlebar

      protected final javafx.scene.layout.HBox titlebar
    • titlebox

      protected final javafx.scene.layout.HBox titlebox
    • bottombar

      protected final javafx.scene.layout.HBox bottombar
    • enabledDefaultSingleClickEventHandler

      protected boolean enabledDefaultSingleClickEventHandler
    • enabledDefaultDoubleClickEventHandler

      protected boolean enabledDefaultDoubleClickEventHandler
  • Constructor Details

    • XalTreeView

      public XalTreeView()
  • Method Details

    • getTreeView

      public javafx.scene.control.TreeView getTreeView()
    • getTitlebar

      public javafx.scene.layout.HBox getTitlebar()
      Get the HBox object that is defined above the TreeView.
      Returns:
    • getBottombar

      public javafx.scene.layout.HBox getBottombar()
      Get the HBox object that is defined below the TreeView.
      Returns:
    • addSingleClickEventHandler

      public void addSingleClickEventHandler(javafx.event.EventHandler<javafx.scene.input.MouseEvent> eventHandler)
      Adds a new single-click event handler to the TreeView TreeCell objects.
      Parameters:
      eventHandler -
    • removeSingleClickEventHandler

      public void removeSingleClickEventHandler(javafx.event.EventHandler<javafx.scene.input.MouseEvent> eventHandler)
      Removes a single-click event handler from the TreeView TreeCell objects.
      Parameters:
      eventHandler -
    • addDoubleClickEventHandler

      public void addDoubleClickEventHandler(javafx.event.EventHandler<javafx.scene.input.MouseEvent> eventHandler)
      Adds a new double-click event handler to the TreeView TreeCell objects.
      Parameters:
      eventHandler -
    • removeDoubleClickEventHandler

      public void removeDoubleClickEventHandler(javafx.event.EventHandler<javafx.scene.input.MouseEvent> eventHandler)
      Removes a double-click event handler from the TreeView TreeCell objects.
      Parameters:
      eventHandler -
    • enableDefaultClickEventHandler

      public void enableDefaultClickEventHandler()
      Enables the default click event handler in the TreeView. The default click event handler must be initialized by the subclass constructor.
    • disableDefaultClickEventHandler

      public void disableDefaultClickEventHandler()
      Disables the default click event handler in the TreeView.
    • singleClickEventHandler

      protected void singleClickEventHandler(javafx.scene.input.MouseEvent event)
    • doubleClickEventHandler

      protected void doubleClickEventHandler(javafx.scene.input.MouseEvent event)
    • selectedItemProperty

      public javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.control.TreeItem<T>> selectedItemProperty()
      Returns the selected item property of the TreeView.
      See Also:
    • setDocument

      public abstract void setDocument(XalFxDocument document)
      This method uses the accelerator property to update the tree every time the accelerator is changed, and vice versa.

      Use this method for full integration with the document. If the TreeView is expected to be decoupled from the document, then use the update method.

    • update

      public abstract void update(Accelerator accelerator)
      The method should repopulate the TreeView using the data from the Accelerator object passed as an argument.
      Parameters:
      accelerator -
    • refresh

      public void refresh()
    • addElement

      public abstract javafx.scene.control.TreeItem<T> addElement(T node)
      This method allows to add a node in the TreeView after adding it to the accelerator, avoiding to reload the full treeview.
      Parameters:
      node -
      Returns:
    • addElement

      protected javafx.scene.control.TreeItem<T> addElement(T node, javafx.scene.control.TreeItem<T> parentItem)
    • newItem

      protected javafx.scene.control.TreeItem<T> newItem(T node)
    • addItem

      protected void addItem(javafx.scene.control.TreeItem<T> item, javafx.scene.control.TreeItem<T> parentItem)
    • getIcon

      protected javafx.scene.image.ImageView getIcon(T node)
    • getSelectedItem

      public javafx.scene.control.TreeItem<T> getSelectedItem()
      Returns the TreeItem object corresponding to the selected item.
      Returns:
      The TreeItem or null if none selected.
    • getSelectionModel

      public javafx.scene.control.MultipleSelectionModel<javafx.scene.control.TreeItem<T>> getSelectionModel()
    • getSelectedNode

      public T getSelectedNode()
      Returns the object represented by the selected TreeItem.
      Returns:
      The object or null if none selected.
    • getSelectedNodeId

      public String getSelectedNodeId()
      Returns the node ID of the selected item.
      Returns:
      The node ID or null if none selected.
    • getId

      protected abstract String getId(javafx.scene.control.TreeItem<T> selectedItem)
      This method should be implemented by subclasses to get the node ID corresponding to a TreeItem object.
      Parameters:
      selectedItem -
      Returns:
    • clearSelection

      public void clearSelection()
      Clear the selection.
    • selectElement

      public boolean selectElement(String nodeId)
      Select the node with the given node ID, if found on the TreeView. It automatically expand all parent node and scroll to make the selected node visible, if needed.

      If called right after the TreeView is updated, make sure it is called using Platform.runLater() to make sure it is executed after the TreeView is updated.

      Parameters:
      nodeId - The element's node ID.
      Returns:
      True if the element has been found.
    • selectElement

      protected boolean selectElement(javafx.scene.control.TreeItem<T> parentNode, String nodeId)
    • findElement

      public javafx.scene.control.TreeItem<T> findElement(String nodeId)
      Find the TreeItem element with the following node ID.
      Parameters:
      nodeId - The element's node ID.
      Returns:
      TreeItem of the element with the given node ID or null if not found.
    • findElement

      protected javafx.scene.control.TreeItem<T> findElement(javafx.scene.control.TreeItem<T> parentNode, String nodeId)