Class ListSelectionView<T>

  • Type Parameters:
    T - the type of the list items
    All Implemented Interfaces:
    javafx.css.Styleable, javafx.event.EventTarget, javafx.scene.control.Skinnable

    public class ListSelectionView<T>
    extends javafx.scene.control.Control
    A control used to perform a multi-selection via the help of two list views. Items can be moved from one list (source) to the other (target). This can be done by either double clicking on the list items or by using one of the "move" buttons between the two lists. Buttons can be added or removed by altering the list of actions. Each list can be decorated with a header and a footer node. The default header nodes are simply two labels ("Available", "Selected").

    Screenshot

    Screenshot of ListSelectionView

    Code Example

     ListSelectionView<String> view = new ListSelectionView<>();
     view.getSourceItems().add("One", "Two", "Three");
     view.getTargetItems().add("Four", "Five");
     
    • Field Summary

      • 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
      ListSelectionView()
      Constructs a new dual list view.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      javafx.beans.property.ObjectProperty<javafx.util.Callback<javafx.scene.control.ListView<T>,​javafx.scene.control.ListCell<T>>> cellFactoryProperty()
      Setting a custom cell factory has the effect of deferring all cell creation, allowing for total customization of the cell.
      protected javafx.scene.control.Skin<ListSelectionView<T>> createDefaultSkin()  
      javafx.collections.ObservableList<Action> getActions()
      The list of actions to be shown in between the two list views.
      javafx.util.Callback<javafx.scene.control.ListView<T>,​javafx.scene.control.ListCell<T>> getCellFactory()
      Returns the current cell factory.
      javafx.geometry.Orientation getOrientation()
      Returns the Orientation of the ListSelectionView - this can either be horizontal or vertical.
      javafx.collections.ObservableList<Action> getSourceActions()
      These actions are shown beside the source list view.
      javafx.scene.Node getSourceFooter()
      Returns the value of sourceFooterProperty().
      javafx.scene.Node getSourceHeader()
      Returns the value of sourceHeaderProperty().
      javafx.collections.ObservableList<T> getSourceItems()
      Returns an ObservableList that contains the items currently being shown to the user in the source list.
      javafx.collections.ObservableList<Action> getTargetActions()
      These actions are shown beside the target list view.
      javafx.scene.Node getTargetFooter()
      Returns the value of targetFooterProperty().
      javafx.scene.Node getTargetHeader()
      Returns the value of targetHeaderProperty().
      javafx.collections.ObservableList<T> getTargetItems()
      Returns an ObservableList that contains the items currently being shown to the user in the target list.
      String getUserAgentStylesheet()
      protected String getUserAgentStylesheet​(Class<?> clazz, String fileName)
      A helper method that ensures that the resource based lookup of the user agent stylesheet only happens once.
      javafx.beans.property.ObjectProperty<javafx.geometry.Orientation> orientationProperty()
      The Orientation of the ListSelectionView - this can either be horizontal or vertical.
      void setCellFactory​(javafx.util.Callback<javafx.scene.control.ListView<T>,​javafx.scene.control.ListCell<T>> value)
      Sets a new cell factory to use by both list views.
      void setOrientation​(javafx.geometry.Orientation value)
      Sets the Orientation of the ListSelectionView - this can either be horizontal or vertical.
      void setSourceFooter​(javafx.scene.Node node)
      Sets the value of sourceFooterProperty().
      void setSourceHeader​(javafx.scene.Node node)
      Sets the value of sourceHeaderProperty().
      void setSourceItems​(javafx.collections.ObservableList<T> value)
      Sets the underlying data model for the ListView.
      void setTargetFooter​(javafx.scene.Node node)
      Sets the value of targetFooterProperty().
      void setTargetHeader​(javafx.scene.Node node)
      Sets the value of targetHeaderProperty().
      void setTargetItems​(javafx.collections.ObservableList<T> value)
      Sets the underlying data model for the ListView.
      javafx.beans.property.ObjectProperty<javafx.scene.Node> sourceFooterProperty()
      A property used to store a reference to a node that will be displayed below the source list view.
      javafx.beans.property.ObjectProperty<javafx.scene.Node> sourceHeaderProperty()
      A property used to store a reference to a node that will be displayed above the source list view.
      javafx.beans.property.ObjectProperty<javafx.collections.ObservableList<T>> sourceItemsProperty()
      The underlying data model for the source list view.
      javafx.beans.property.ObjectProperty<javafx.scene.Node> targetFooterProperty()
      A property used to store a reference to a node that will be displayed below the target list view.
      javafx.beans.property.ObjectProperty<javafx.scene.Node> targetHeaderProperty()
      A property used to store a reference to a node that will be displayed above the target list view.
      javafx.beans.property.ObjectProperty<javafx.collections.ObservableList<T>> targetItemsProperty()
      The underlying data model for the target list view.
      • Methods inherited from class javafx.scene.control.Control

        computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, executeAccessibleAction, getBaselineOffset, getClassCssMetaData, getContextMenu, getControlCssMetaData, getCssMetaData, getInitialFocusTraversable, getSkin, getTooltip, isResizable, layoutChildren, queryAccessibleAttribute, setContextMenu, setSkin, setTooltip, skinProperty, tooltipProperty
      • Methods inherited from class javafx.scene.layout.Region

        backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, 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

        getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, requestLayout, 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, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, 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, 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 interface javafx.css.Styleable

        getStyleableNode
    • Constructor Detail

      • ListSelectionView

        public ListSelectionView()
        Constructs a new dual list view.
    • Method Detail

      • createDefaultSkin

        protected javafx.scene.control.Skin<ListSelectionView<T>> createDefaultSkin()
        Overrides:
        createDefaultSkin in class javafx.scene.control.Control
      • getUserAgentStylesheet

        public String getUserAgentStylesheet()
        Overrides:
        getUserAgentStylesheet in class javafx.scene.layout.Region
      • sourceHeaderProperty

        public final javafx.beans.property.ObjectProperty<javafx.scene.Node> sourceHeaderProperty()
        A property used to store a reference to a node that will be displayed above the source list view. The default node is a Label displaying the text "Available".
        Returns:
        the property used to store the source header node
      • getSourceHeader

        public final javafx.scene.Node getSourceHeader()
        Returns the value of sourceHeaderProperty().
        Returns:
        the source header node
      • setSourceHeader

        public final void setSourceHeader​(javafx.scene.Node node)
        Sets the value of sourceHeaderProperty().
        Parameters:
        node - the new header node to use for the source list
      • sourceFooterProperty

        public final javafx.beans.property.ObjectProperty<javafx.scene.Node> sourceFooterProperty()
        A property used to store a reference to a node that will be displayed below the source list view. The default node is a node with two buttons for easily selecting / deselecting all elements in the list view.
        Returns:
        the property used to store the source footer node
      • getSourceFooter

        public final javafx.scene.Node getSourceFooter()
        Returns the value of sourceFooterProperty().
        Returns:
        the source footer node
      • setSourceFooter

        public final void setSourceFooter​(javafx.scene.Node node)
        Sets the value of sourceFooterProperty().
        Parameters:
        node - the new node shown below the source list
      • targetHeaderProperty

        public final javafx.beans.property.ObjectProperty<javafx.scene.Node> targetHeaderProperty()
        A property used to store a reference to a node that will be displayed above the target list view. The default node is a Label displaying the text "Selected".
        Returns:
        the property used to store the target header node
      • getTargetHeader

        public final javafx.scene.Node getTargetHeader()
        Returns the value of targetHeaderProperty().
        Returns:
        the source header node
      • setTargetHeader

        public final void setTargetHeader​(javafx.scene.Node node)
        Sets the value of targetHeaderProperty().
        Parameters:
        node - the new node shown above the target list
      • targetFooterProperty

        public final javafx.beans.property.ObjectProperty<javafx.scene.Node> targetFooterProperty()
        A property used to store a reference to a node that will be displayed below the target list view. The default node is a node with two buttons for easily selecting / deselecting all elements in the list view.
        Returns:
        the property used to store the source footer node
      • getTargetFooter

        public final javafx.scene.Node getTargetFooter()
        Returns the value of targetFooterProperty().
        Returns:
        the source header node
      • setTargetFooter

        public final void setTargetFooter​(javafx.scene.Node node)
        Sets the value of targetFooterProperty().
        Parameters:
        node - the new node shown below the target list
      • setSourceItems

        public final void setSourceItems​(javafx.collections.ObservableList<T> value)
        Sets the underlying data model for the ListView. Note that it has a generic type that must match the type of the ListView itself.
      • getSourceItems

        public final javafx.collections.ObservableList<T> getSourceItems()
        Returns an ObservableList that contains the items currently being shown to the user in the source list. This may be null if setSourceItems(javafx.collections.ObservableList) has previously been called, however, by default it is an empty ObservableList.
        Returns:
        An ObservableList containing the items to be shown to the user in the source list, or null if the items have previously been set to null.
      • sourceItemsProperty

        public final javafx.beans.property.ObjectProperty<javafx.collections.ObservableList<T>> sourceItemsProperty()
        The underlying data model for the source list view. Note that it has a generic type that must match the type of the source list view itself.
      • setTargetItems

        public final void setTargetItems​(javafx.collections.ObservableList<T> value)
        Sets the underlying data model for the ListView. Note that it has a generic type that must match the type of the ListView itself.
      • getTargetItems

        public final javafx.collections.ObservableList<T> getTargetItems()
        Returns an ObservableList that contains the items currently being shown to the user in the target list. This may be null if setTargetItems(javafx.collections.ObservableList) has previously been called, however, by default it is an empty ObservableList.
        Returns:
        An ObservableList containing the items to be shown to the user in the target list, or null if the items have previously been set to null.
      • targetItemsProperty

        public final javafx.beans.property.ObjectProperty<javafx.collections.ObservableList<T>> targetItemsProperty()
        The underlying data model for the target list view. Note that it has a generic type that must match the type of the source list view itself.
      • orientationProperty

        public final javafx.beans.property.ObjectProperty<javafx.geometry.Orientation> orientationProperty()
        The Orientation of the ListSelectionView - this can either be horizontal or vertical.
      • setOrientation

        public final void setOrientation​(javafx.geometry.Orientation value)
        Sets the Orientation of the ListSelectionView - this can either be horizontal or vertical.
      • getOrientation

        public final javafx.geometry.Orientation getOrientation()
        Returns the Orientation of the ListSelectionView - this can either be horizontal or vertical.
      • setCellFactory

        public final void setCellFactory​(javafx.util.Callback<javafx.scene.control.ListView<T>,​javafx.scene.control.ListCell<T>> value)
        Sets a new cell factory to use by both list views. This forces all old ListCell's to be thrown away, and new ListCell's created with the new cell factory.
      • getCellFactory

        public final javafx.util.Callback<javafx.scene.control.ListView<T>,​javafx.scene.control.ListCell<T>> getCellFactory()
        Returns the current cell factory.
      • cellFactoryProperty

        public final javafx.beans.property.ObjectProperty<javafx.util.Callback<javafx.scene.control.ListView<T>,​javafx.scene.control.ListCell<T>>> cellFactoryProperty()

        Setting a custom cell factory has the effect of deferring all cell creation, allowing for total customization of the cell. Internally, the ListView is responsible for reusing ListCells - all that is necessary is for the custom cell factory to return from this function a ListCell which might be usable for representing any item in the ListView.

        Refer to the Cell class documentation for more detail.

      • getSourceActions

        public final javafx.collections.ObservableList<Action> getSourceActions()
        These actions are shown beside the source list view. An instance of ListActionView.ListAction should be used where actions are dependent on the source ListView.
        Returns:
        An ObservableList of actions.
        See Also:
        ListActionView.ListAction
      • getTargetActions

        public final javafx.collections.ObservableList<Action> getTargetActions()
        These actions are shown beside the target list view. An instance of ListActionView.ListAction should be used where actions are dependent on the target ListView.
        Returns:
        An ObservableList of actions.
        See Also:
        ListActionView.ListAction
      • getUserAgentStylesheet

        protected final String getUserAgentStylesheet​(Class<?> clazz,
                                                      String fileName)
        A helper method that ensures that the resource based lookup of the user agent stylesheet only happens once. Caches the external form of the resource.
        Parameters:
        clazz - the class used for the resource lookup
        fileName - the name of the user agent stylesheet
        Returns:
        the external form of the user agent stylesheet (the path)