- java.lang.Object
-
- javafx.scene.Node
-
- javafx.scene.Parent
-
- javafx.scene.layout.Region
-
- javafx.scene.control.Control
-
- org.controlsfx.control.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 thelist 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
Code Example
ListSelectionView<String> view = new ListSelectionView<>(); view.getSourceItems().add("One", "Two", "Three"); view.getTargetItems().add("Four", "Five");
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ListSelectionView.ListSelectionAction<T>
Specialized actions for ListSelectionView which get access to both the internal list views.class
ListSelectionView.MoveToSource
Action use to move the selected items from the target list view to the source list view.class
ListSelectionView.MoveToSourceAll
Action use to all the items from the target list view to the source list view.class
ListSelectionView.MoveToTarget
Action use to move the selected items from the source list view to the target list view.class
ListSelectionView.MoveToTargetAll
Action use to move all the items from the source list view to the target list view.
-
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 theOrientation
of theListSelectionView
- 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 ofsourceFooterProperty()
.javafx.scene.Node
getSourceHeader()
Returns the value ofsourceHeaderProperty()
.javafx.collections.ObservableList<T>
getSourceItems()
Returns anObservableList
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 oftargetFooterProperty()
.javafx.scene.Node
getTargetHeader()
Returns the value oftargetHeaderProperty()
.javafx.collections.ObservableList<T>
getTargetItems()
Returns anObservableList
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()
TheOrientation
of theListSelectionView
- 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 theOrientation
of theListSelectionView
- this can either be horizontal or vertical.void
setSourceFooter(javafx.scene.Node node)
Sets the value ofsourceFooterProperty()
.void
setSourceHeader(javafx.scene.Node node)
Sets the value ofsourceHeaderProperty()
.void
setSourceItems(javafx.collections.ObservableList<T> value)
Sets the underlying data model for the ListView.void
setTargetFooter(javafx.scene.Node node)
Sets the value oftargetFooterProperty()
.void
setTargetHeader(javafx.scene.Node node)
Sets the value oftargetHeaderProperty()
.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
-
-
-
-
Method Detail
-
createDefaultSkin
protected javafx.scene.control.Skin<ListSelectionView<T>> createDefaultSkin()
- Overrides:
createDefaultSkin
in classjavafx.scene.control.Control
-
getUserAgentStylesheet
public String getUserAgentStylesheet()
- Overrides:
getUserAgentStylesheet
in classjavafx.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 aLabel
displaying the text "Available".- Returns:
- the property used to store the source header node
-
getSourceHeader
public final javafx.scene.Node getSourceHeader()
Returns the value ofsourceHeaderProperty()
.- Returns:
- the source header node
-
setSourceHeader
public final void setSourceHeader(javafx.scene.Node node)
Sets the value ofsourceHeaderProperty()
.- 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 ofsourceFooterProperty()
.- Returns:
- the source footer node
-
setSourceFooter
public final void setSourceFooter(javafx.scene.Node node)
Sets the value ofsourceFooterProperty()
.- 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 aLabel
displaying the text "Selected".- Returns:
- the property used to store the target header node
-
getTargetHeader
public final javafx.scene.Node getTargetHeader()
Returns the value oftargetHeaderProperty()
.- Returns:
- the source header node
-
setTargetHeader
public final void setTargetHeader(javafx.scene.Node node)
Sets the value oftargetHeaderProperty()
.- 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 oftargetFooterProperty()
.- Returns:
- the source header node
-
setTargetFooter
public final void setTargetFooter(javafx.scene.Node node)
Sets the value oftargetFooterProperty()
.- 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 anObservableList
that contains the items currently being shown to the user in the source list. This may be null ifsetSourceItems(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 anObservableList
that contains the items currently being shown to the user in the target list. This may be null ifsetTargetItems(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()
TheOrientation
of theListSelectionView
- this can either be horizontal or vertical.
-
setOrientation
public final void setOrientation(javafx.geometry.Orientation value)
Sets theOrientation
of theListSelectionView
- this can either be horizontal or vertical.
-
getOrientation
public final javafx.geometry.Orientation getOrientation()
Returns theOrientation
of theListSelectionView
- 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 oldListCell
'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.
-
getActions
public final javafx.collections.ObservableList<Action> getActions()
The list of actions to be shown in between the two list views. All actions except,ActionUtils.ACTION_SEPARATOR
andActionUtils.ACTION_SPAN
, are represented as buttons.For actions dependent on both the internal list views, an instance of
ListSelectionView.ListSelectionAction
should be used.By default, the list has 4 actions -
ListSelectionView.MoveToTarget
,ListSelectionView.MoveToTargetAll
,ListSelectionView.MoveToSource
andListSelectionView.MoveToSourceAll
. A user may choose to add on top of these actions or replace them depending on their use case.- Returns:
- An ObservableList of actions.
-
getSourceActions
public final javafx.collections.ObservableList<Action> getSourceActions()
These actions are shown beside the source list view. An instance ofListActionView.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 ofListActionView.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 lookupfileName
- the name of the user agent stylesheet- Returns:
- the external form of the user agent stylesheet (the path)
-
-