- java.lang.Object
-
- javafx.scene.Node
-
- javafx.scene.Parent
-
- javafx.scene.layout.Region
-
- javafx.scene.control.Control
-
- org.controlsfx.control.PropertySheet
-
- All Implemented Interfaces:
Styleable
,EventTarget
,Skinnable
public class PropertySheet extends Control
The PropertySheet control is a powerful control designed to make it really easy for developers to present to end users a list of properties that the end user is allowed to manipulate. Commonly a property sheet is used in visual editors and other tools where a lot of properties exist.To better describe what a property sheet is, please refer to the picture below:
In this property sheet there exists two columns: the left column shows a label describing the property itself, whereas the right column provides a
PropertyEditor
that allows the end user the means to manipulate the property. In the screenshot you can see CheckEditor, ChoiceEditor, TextEditor and FontEditor, among the many editors that are available in theEditors
package.To create a PropertySheet is simple: you firstly instantiate an instance of PropertySheet, and then you pass in a list of
PropertySheet.Item
instances, where each Item represents a single property that is to be editable by the end user.Working with JavaBeans
Because a very common use case for a property sheet is editing properties on a JavaBean, there is convenience API for making this interaction easier. Refer to theclass
, in particular theBeanPropertyUtils.getProperties(Object)
method that will return a list of Item instances, one Item instance per property on the given JavaBean.- See Also:
PropertySheet.Item
,PropertySheet.Mode
-
-
Property Summary
Properties Type Property Description SimpleObjectProperty<Comparator<String>>
categoryComparator
Used to represent how the categories should be laid out in the PropertySheet when using the Category mode (seePropertySheet.Mode
).SimpleObjectProperty<PropertySheet.Mode>
mode
Used to represent how the properties should be laid out in the PropertySheet.SimpleBooleanProperty
modeSwitcherVisible
This property represents whether a visual option should be presented to users to switch between the variousmodes
available.SimpleBooleanProperty
searchBoxVisible
This property represents whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input.-
Properties inherited from class javafx.scene.control.Control
contextMenu, skin, tooltip
-
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, 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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
PropertySheet.Item
A wrapper interface for a single property to be displayed in aPropertySheet
control.static class
PropertySheet.Mode
Specifies how thePropertySheet
should be laid out.
-
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 PropertySheet()
Creates a default PropertySheet instance with no properties to edit.PropertySheet(ObservableList<PropertySheet.Item> items)
Creates a PropertySheet instance prepopulated with the items provided in the itemsObservableList
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description SimpleObjectProperty<Comparator<String>>
categoryComparatorProperty()
Used to represent how the categories should be laid out in the PropertySheet when using the Category mode (seePropertySheet.Mode
).protected Skin<?>
createDefaultSkin()
Comparator<String>
getCategoryComparator()
ObservableList<PropertySheet.Item>
getItems()
PropertySheet.Mode
getMode()
Callback<PropertySheet.Item,PropertyEditor<?>>
getPropertyEditorFactory()
String
getTitleFilter()
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.boolean
isModeSwitcherVisible()
boolean
isSearchBoxVisible()
SimpleObjectProperty<PropertySheet.Mode>
modeProperty()
Used to represent how the properties should be laid out in the PropertySheet.SimpleBooleanProperty
modeSwitcherVisibleProperty()
This property represents whether a visual option should be presented to users to switch between the variousmodes
available.SimpleObjectProperty<Callback<PropertySheet.Item,PropertyEditor<?>>>
propertyEditorFactory()
The property editor factory is used by the PropertySheet to determine whichPropertyEditor
to use for a givenPropertySheet.Item
.SimpleBooleanProperty
searchBoxVisibleProperty()
This property represents whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input.void
setCategoryComparator(Comparator<String> categoryComparator)
Set how the categories should be laid out in the PropertySheet.void
setMode(PropertySheet.Mode mode)
Set how the properties should be laid out in the PropertySheet.void
setModeSwitcherVisible(boolean visible)
Set whether a visual option should be presented to users to switch between the variousmodes
available.void
setPropertyEditorFactory(Callback<PropertySheet.Item,PropertyEditor<?>> factory)
Sets a new editor factory used by the PropertySheet to determine whichPropertyEditor
to use for a givenPropertySheet.Item
.void
setSearchBoxVisible(boolean visible)
Sets whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input.void
setTitleFilter(String filter)
Sets the filter for filtering the options shown on screen.SimpleStringProperty
titleFilter()
Regardless of whether thesearch box
is visible or not, it is possible to filter the options shown on screen using this title filter property.-
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 class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface javafx.css.Styleable
getStyleableNode
-
-
-
-
Property Detail
-
mode
public final SimpleObjectProperty<PropertySheet.Mode> modeProperty
Used to represent how the properties should be laid out in the PropertySheet. Refer to thePropertySheet.Mode
enumeration to better understand the available options.- See Also:
getMode()
,setMode(PropertySheet.Mode)
-
modeSwitcherVisible
public final SimpleBooleanProperty modeSwitcherVisibleProperty
This property represents whether a visual option should be presented to users to switch between the variousmodes
available. By default this is true, so setting it to false will hide these buttons.
-
searchBoxVisible
public final SimpleBooleanProperty searchBoxVisibleProperty
This property represents whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input. By default this is true, so setting it to false will hide this search field.- See Also:
isSearchBoxVisible()
,setSearchBoxVisible(boolean)
-
categoryComparator
public final SimpleObjectProperty<Comparator<String>> categoryComparatorProperty
Used to represent how the categories should be laid out in the PropertySheet when using the Category mode (seePropertySheet.Mode
). Thus allowing user to sort categories by other ways than alphabetical or numerical order.
-
-
Constructor Detail
-
PropertySheet
public PropertySheet()
Creates a default PropertySheet instance with no properties to edit.
-
PropertySheet
public PropertySheet(ObservableList<PropertySheet.Item> items)
Creates a PropertySheet instance prepopulated with the items provided in the itemsObservableList
.- Parameters:
items
- The items that should appear within the PropertySheet.
-
-
Method Detail
-
getItems
public ObservableList<PropertySheet.Item> getItems()
- Returns:
- An ObservableList of properties that will be displayed to the user to allow for them to be edited.
-
createDefaultSkin
protected Skin<?> createDefaultSkin()
- Overrides:
createDefaultSkin
in classControl
-
getUserAgentStylesheet
public String getUserAgentStylesheet()
- Overrides:
getUserAgentStylesheet
in classRegion
-
modeProperty
public final SimpleObjectProperty<PropertySheet.Mode> modeProperty()
Used to represent how the properties should be laid out in the PropertySheet. Refer to thePropertySheet.Mode
enumeration to better understand the available options.- See Also:
getMode()
,setMode(PropertySheet.Mode)
-
getMode
public final PropertySheet.Mode getMode()
- Returns:
- how the properties should be laid out in the PropertySheet.
- See Also:
PropertySheet.Mode
-
setMode
public final void setMode(PropertySheet.Mode mode)
Set how the properties should be laid out in the PropertySheet.- Parameters:
mode
-
-
propertyEditorFactory
public final SimpleObjectProperty<Callback<PropertySheet.Item,PropertyEditor<?>>> propertyEditorFactory()
The property editor factory is used by the PropertySheet to determine whichPropertyEditor
to use for a givenPropertySheet.Item
. By default theDefaultPropertyEditorFactory
is used, but this may be replaced or extended by developers wishing to add in (or substitute) their own property editors.- Returns:
- A SimpleObjectproperty.
-
getPropertyEditorFactory
public final Callback<PropertySheet.Item,PropertyEditor<?>> getPropertyEditorFactory()
- Returns:
- The editor factory used by the PropertySheet to determine which
PropertyEditor
to use for a givenPropertySheet.Item
.
-
setPropertyEditorFactory
public final void setPropertyEditorFactory(Callback<PropertySheet.Item,PropertyEditor<?>> factory)
Sets a new editor factory used by the PropertySheet to determine whichPropertyEditor
to use for a givenPropertySheet.Item
.- Parameters:
factory
-
-
modeSwitcherVisibleProperty
public final SimpleBooleanProperty modeSwitcherVisibleProperty()
This property represents whether a visual option should be presented to users to switch between the variousmodes
available. By default this is true, so setting it to false will hide these buttons.
-
isModeSwitcherVisible
public final boolean isModeSwitcherVisible()
- Returns:
- whether a visual option is presented to
users to switch between the various
modes
available.
-
setModeSwitcherVisible
public final void setModeSwitcherVisible(boolean visible)
Set whether a visual option should be presented to users to switch between the variousmodes
available.- Parameters:
visible
-
-
searchBoxVisibleProperty
public final SimpleBooleanProperty searchBoxVisibleProperty()
This property represents whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input. By default this is true, so setting it to false will hide this search field.- See Also:
isSearchBoxVisible()
,setSearchBoxVisible(boolean)
-
isSearchBoxVisible
public final boolean isSearchBoxVisible()
- Returns:
- whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input.
-
setSearchBoxVisible
public final void setSearchBoxVisible(boolean visible)
Sets whether a text field should be presented to users to allow for them to filter the properties in the property sheet to only show ones matching the typed input.- Parameters:
visible
-
-
titleFilter
public final SimpleStringProperty titleFilter()
Regardless of whether thesearch box
is visible or not, it is possible to filter the options shown on screen using this title filter property. If the search box is visible, it will manipulate this property to contain whatever the user types.- Returns:
- A SimpleStringProperty.
-
getTitleFilter
public final String getTitleFilter()
- Returns:
- the filter for filtering the options shown on screen
- See Also:
titleFilter()
-
setTitleFilter
public final void setTitleFilter(String filter)
Sets the filter for filtering the options shown on screen.- Parameters:
filter
-- See Also:
titleFilter()
-
categoryComparatorProperty
public final SimpleObjectProperty<Comparator<String>> categoryComparatorProperty()
Used to represent how the categories should be laid out in the PropertySheet when using the Category mode (seePropertySheet.Mode
). Thus allowing user to sort categories by other ways than alphabetical or numerical order.
-
getCategoryComparator
public final Comparator<String> getCategoryComparator()
- Returns:
- how the categories should be laid out in the PropertySheet.
- See Also:
PropertySheet.Mode
-
setCategoryComparator
public final void setCategoryComparator(Comparator<String> categoryComparator)
Set how the categories should be laid out in the PropertySheet.- Parameters:
mode
-
-
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)
-
-