Class PropertySheet

java.lang.Object
javafx.scene.Node
javafx.scene.Parent
javafx.scene.layout.Region
javafx.scene.control.Control
org.controlsfx.control.PropertySheet
All Implemented Interfaces:
javafx.css.Styleable, javafx.event.EventTarget, javafx.scene.control.Skinnable

public class PropertySheet extends javafx.scene.control.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:

Screenshot of PropertySheet

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 the Editors 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 the class, in particular the BeanPropertyUtils.getProperties(Object) method that will return a list of Item instances, one Item instance per property on the given JavaBean.
See Also:
  • Property Summary

    Properties
    Type
    Property
    Description
    final javafx.beans.property.SimpleObjectProperty<Comparator<String>>
    Used to represent how the categories should be laid out in the PropertySheet when using the Category mode (see PropertySheet.Mode).
    final javafx.beans.property.SimpleObjectProperty<PropertySheet.Mode>
    Used to represent how the properties should be laid out in the PropertySheet.
    final javafx.beans.property.SimpleBooleanProperty
    This property represents whether a visual option should be presented to users to switch between the various modes available.
    final javafx.beans.property.SimpleBooleanProperty
    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 
    A wrapper interface for a single property to be displayed in a PropertySheet control.
    static enum 
    Specifies how the PropertySheet 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
    Creates a default PropertySheet instance with no properties to edit.
    PropertySheet(javafx.collections.ObservableList<PropertySheet.Item> items)
    Creates a PropertySheet instance prepopulated with the items provided in the items ObservableList.
  • Method Summary

    Modifier and Type
    Method
    Description
    final javafx.beans.property.SimpleObjectProperty<Comparator<String>>
    Used to represent how the categories should be laid out in the PropertySheet when using the Category mode (see PropertySheet.Mode).
    protected javafx.scene.control.Skin<?>
     
    javafx.collections.ObservableList<PropertySheet.Item>
     
     
    final javafx.util.Callback<PropertySheet.Item,PropertyEditor<?>>
     
    final String
     
    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.
    final boolean
     
    final boolean
     
    final javafx.beans.property.SimpleObjectProperty<PropertySheet.Mode>
    Used to represent how the properties should be laid out in the PropertySheet.
    final javafx.beans.property.SimpleBooleanProperty
    This property represents whether a visual option should be presented to users to switch between the various modes available.
    final javafx.beans.property.SimpleObjectProperty<javafx.util.Callback<PropertySheet.Item,PropertyEditor<?>>>
    The property editor factory is used by the PropertySheet to determine which PropertyEditor to use for a given PropertySheet.Item.
    final javafx.beans.property.SimpleBooleanProperty
    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.
    final void
    Set how the categories should be laid out in the PropertySheet.
    final void
    Set how the properties should be laid out in the PropertySheet.
    final void
    setModeSwitcherVisible(boolean visible)
    Set whether a visual option should be presented to users to switch between the various modes available.
    final void
    Sets a new editor factory used by the PropertySheet to determine which PropertyEditor to use for a given PropertySheet.Item.
    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.
    final void
    Sets the filter for filtering the options shown on screen.
    final javafx.beans.property.SimpleStringProperty
    Regardless of whether the search 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 Details

  • Constructor Details

    • PropertySheet

      public PropertySheet()
      Creates a default PropertySheet instance with no properties to edit.
    • PropertySheet

      public PropertySheet(javafx.collections.ObservableList<PropertySheet.Item> items)
      Creates a PropertySheet instance prepopulated with the items provided in the items ObservableList.
      Parameters:
      items - The items that should appear within the PropertySheet.
  • Method Details

    • getItems

      public javafx.collections.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 javafx.scene.control.Skin<?> createDefaultSkin()
      Overrides:
      createDefaultSkin in class javafx.scene.control.Control
    • getUserAgentStylesheet

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

      public final javafx.beans.property.SimpleObjectProperty<PropertySheet.Mode> modeProperty()
      Used to represent how the properties should be laid out in the PropertySheet. Refer to the PropertySheet.Mode enumeration to better understand the available options.
      Returns:
      A SimpleObjectproperty.
      See Also:
    • getMode

      public final PropertySheet.Mode getMode()
      Returns:
      how the properties should be laid out in the PropertySheet.
      See Also:
    • setMode

      public final void setMode(PropertySheet.Mode mode)
      Set how the properties should be laid out in the PropertySheet.
      Parameters:
      mode -
    • propertyEditorFactory

      public final javafx.beans.property.SimpleObjectProperty<javafx.util.Callback<PropertySheet.Item,PropertyEditor<?>>> propertyEditorFactory()
      The property editor factory is used by the PropertySheet to determine which PropertyEditor to use for a given PropertySheet.Item. By default the DefaultPropertyEditorFactory 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 javafx.util.Callback<PropertySheet.Item,PropertyEditor<?>> getPropertyEditorFactory()
      Returns:
      The editor factory used by the PropertySheet to determine which PropertyEditor to use for a given PropertySheet.Item.
    • setPropertyEditorFactory

      public final void setPropertyEditorFactory(javafx.util.Callback<PropertySheet.Item,PropertyEditor<?>> factory)
      Sets a new editor factory used by the PropertySheet to determine which PropertyEditor to use for a given PropertySheet.Item.
      Parameters:
      factory -
    • modeSwitcherVisibleProperty

      public final javafx.beans.property.SimpleBooleanProperty modeSwitcherVisibleProperty()
      This property represents whether a visual option should be presented to users to switch between the various modes available. By default this is true, so setting it to false will hide these buttons.
      Returns:
      A SimpleBooleanproperty.
      See Also:
    • 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 various modes available.
      Parameters:
      visible -
    • searchBoxVisibleProperty

      public final javafx.beans.property.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.
      Returns:
      A SimpleBooleanProperty.
      See Also:
    • 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 javafx.beans.property.SimpleStringProperty titleFilter()
      Regardless of whether the search 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:
    • setTitleFilter

      public final void setTitleFilter(String filter)
      Sets the filter for filtering the options shown on screen.
      Parameters:
      filter -
      See Also:
    • categoryComparatorProperty

      public final javafx.beans.property.SimpleObjectProperty<Comparator<String>> categoryComparatorProperty()
      Used to represent how the categories should be laid out in the PropertySheet when using the Category mode (see PropertySheet.Mode). Thus allowing user to sort categories by other ways than alphabetical or numerical order.
      Returns:
      A SimpleObjectproperty.
      See Also:
    • getCategoryComparator

      public final Comparator<String> getCategoryComparator()
      Returns:
      how the categories should be laid out in the PropertySheet.
      See Also:
    • 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 lookup
      fileName - the name of the user agent stylesheet
      Returns:
      the external form of the user agent stylesheet (the path)