Package org.controlsfx.control
Class SegmentedBar<T extends SegmentedBar.Segment>
- java.lang.Object
-
- javafx.scene.Node
-
- javafx.scene.Parent
-
- javafx.scene.layout.Region
-
- javafx.scene.control.Control
-
- org.controlsfx.control.SegmentedBar<T>
-
- Type Parameters:
T
- the segment type
- All Implemented Interfaces:
javafx.css.Styleable
,javafx.event.EventTarget
,javafx.scene.control.Skinnable
public class SegmentedBar<T extends SegmentedBar.Segment> extends javafx.scene.control.Control
A control that makes it easy to create a horizontal bar that visualizes the segmentation of a total value. It consists of several segments, each segment representing a value. The sum of all values is the total value of the bar (seetotalProperty()
). The bar can be customized by setting a factory for the creation of the segment views. Another factory can be set for for the creation of info nodes shown by aPopOver
.
Example 1:
The most basic version of the bar. It is using the default segment view factory.SegmentedBar bar = new SegmentedBar(); bar.getSegments().addAll( new Segment(10, "10"), new Segment(10, "10"), new Segment(10, "10"), new Segment(10, "10"), new Segment(10, "10"), new Segment(50, "50"));
Example 1:
In this example the bar is used to visualize the usage of disk space for various media types (photos, videos, music, ...). A special info node factory is supplied to present a useful detailed description of the segment. The type "TypeSegment" is a subclass ofSegmentedBar.Segment
typesBar.setSegmentViewFactory(segment -> new TypeSegmentView(segment)); typesBar.setInfoNodeFactory(segment -> new InfoLabel(segment.getText() + " " + segment.getValue() + " GB")); typesBar.getSegments().addAll( new TypeSegment(14, MediaType.PHOTOS), new TypeSegment(32, MediaType.VIDEO), new TypeSegment(9, MediaType.APPS), new TypeSegment(40, MediaType.MUSIC), new TypeSegment(5, MediaType.OTHER), new TypeSegment(35, MediaType.FREE));
-
-
Property Summary
Properties Type Property Description javafx.beans.property.ObjectProperty<javafx.util.Callback<T,javafx.scene.Node>>
infoNodeFactory
Stores a factory callback for creating nodes that will be shown by a popover when the mouse enters a segment.javafx.beans.property.ObjectProperty<javafx.geometry.Orientation>
orientation
Returns the styleable object property used for storing the orientation of the segmented bar.javafx.beans.property.ListProperty<T>
segments
A property used to store the list of segments shown by the bar.javafx.beans.property.ObjectProperty<javafx.util.Callback<T,javafx.scene.Node>>
segmentViewFactory
Stores the segment view factory that is used to create one view for each segment added to the control.javafx.beans.property.ReadOnlyDoubleProperty
total
A read-only property that stores the sum of all segment values attached to the bar.-
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.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 class
SegmentedBar.Segment
A model class used by theSegmentedBar
control.class
SegmentedBar.SegmentView
The view class used by the default segment view factory.
-
Constructor Summary
Constructors Constructor Description SegmentedBar()
Constructs a new segmented bar.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected javafx.scene.control.Skin<?>
createDefaultSkin()
static java.util.List<javafx.css.CssMetaData<? extends javafx.css.Styleable,?>>
getClassCssMetaData()
java.util.List<javafx.css.CssMetaData<? extends javafx.css.Styleable,?>>
getControlCssMetaData()
javafx.util.Callback<T,javafx.scene.Node>
getInfoNodeFactory()
Returns the value ofinfoNodeFactoryProperty()
.javafx.geometry.Orientation
getOrientation()
Returns the value of the orientation property.javafx.collections.ObservableList<T>
getSegments()
Returns the list of segments (the model).javafx.util.Callback<T,javafx.scene.Node>
getSegmentViewFactory()
Returns the value ofsegmentViewFactoryProperty()
.double
getTotal()
Returns the value oftotalProperty()
.java.lang.String
getUserAgentStylesheet()
protected java.lang.String
getUserAgentStylesheet(java.lang.Class<?> clazz, java.lang.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.util.Callback<T,javafx.scene.Node>>
infoNodeFactoryProperty()
Stores a factory callback for creating nodes that will be shown by a popover when the mouse enters a segment.javafx.beans.property.ObjectProperty<javafx.geometry.Orientation>
orientationProperty()
Returns the styleable object property used for storing the orientation of the segmented bar.javafx.beans.property.ListProperty<T>
segmentsProperty()
A property used to store the list of segments shown by the bar.javafx.beans.property.ObjectProperty<javafx.util.Callback<T,javafx.scene.Node>>
segmentViewFactoryProperty()
Stores the segment view factory that is used to create one view for each segment added to the control.void
setInfoNodeFactory(javafx.util.Callback<T,javafx.scene.Node> factory)
Sets the value ofinfoNodeFactoryProperty()
.void
setOrientation(javafx.geometry.Orientation value)
Sets the value of the orientation property.void
setSegments(javafx.collections.ObservableList<T> segments)
Sets the list of segments (the model).void
setSegmentViewFactory(javafx.util.Callback<T,javafx.scene.Node> factory)
Sets the value ofsegmentViewFactoryProperty()
.javafx.beans.property.ReadOnlyDoubleProperty
totalProperty()
A read-only property that stores the sum of all segment values attached to the bar.-
Methods inherited from class javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, executeAccessibleAction, getBaselineOffset, getContextMenu, 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
-
-
-
-
Property Detail
-
infoNodeFactory
public final javafx.beans.property.ObjectProperty<javafx.util.Callback<T extends SegmentedBar.Segment,javafx.scene.Node>> infoNodeFactoryProperty
Stores a factory callback for creating nodes that will be shown by a popover when the mouse enters a segment. The popover / node can provide detailed information about a segment.- See Also:
getInfoNodeFactory()
,setInfoNodeFactory(Callback)
-
orientation
public final javafx.beans.property.ObjectProperty<javafx.geometry.Orientation> orientationProperty
Returns the styleable object property used for storing the orientation of the segmented bar. The CSS property "-fx-orientation" can be used to initialize this value.- See Also:
getOrientation()
,setOrientation(Orientation)
-
segmentViewFactory
public final javafx.beans.property.ObjectProperty<javafx.util.Callback<T extends SegmentedBar.Segment,javafx.scene.Node>> segmentViewFactoryProperty
Stores the segment view factory that is used to create one view for each segment added to the control.
-
segments
public final javafx.beans.property.ListProperty<T extends SegmentedBar.Segment> segmentsProperty
A property used to store the list of segments shown by the bar.- See Also:
getSegments()
,setSegments(ObservableList)
-
total
public final javafx.beans.property.ReadOnlyDoubleProperty totalProperty
A read-only property that stores the sum of all segment values attached to the bar.- See Also:
getTotal()
-
-
Method Detail
-
createDefaultSkin
protected javafx.scene.control.Skin<?> createDefaultSkin()
- Overrides:
createDefaultSkin
in classjavafx.scene.control.Control
-
getUserAgentStylesheet
public java.lang.String getUserAgentStylesheet()
- Overrides:
getUserAgentStylesheet
in classjavafx.scene.layout.Region
-
infoNodeFactoryProperty
public final javafx.beans.property.ObjectProperty<javafx.util.Callback<T,javafx.scene.Node>> infoNodeFactoryProperty()
Stores a factory callback for creating nodes that will be shown by a popover when the mouse enters a segment. The popover / node can provide detailed information about a segment.- See Also:
getInfoNodeFactory()
,setInfoNodeFactory(Callback)
-
getInfoNodeFactory
public final javafx.util.Callback<T,javafx.scene.Node> getInfoNodeFactory()
Returns the value ofinfoNodeFactoryProperty()
.- Returns:
- the info node factory
-
setInfoNodeFactory
public void setInfoNodeFactory(javafx.util.Callback<T,javafx.scene.Node> factory)
Sets the value ofinfoNodeFactoryProperty()
.- Parameters:
factory
- the info node factory
-
setOrientation
public final void setOrientation(javafx.geometry.Orientation value)
Sets the value of the orientation property.- Parameters:
value
- the new orientation (horizontal, vertical).- See Also:
orientationProperty()
-
getOrientation
public final javafx.geometry.Orientation getOrientation()
Returns the value of the orientation property.- Returns:
- the current orientation of the control
- See Also:
orientationProperty()
-
orientationProperty
public final javafx.beans.property.ObjectProperty<javafx.geometry.Orientation> orientationProperty()
Returns the styleable object property used for storing the orientation of the segmented bar. The CSS property "-fx-orientation" can be used to initialize this value.- See Also:
getOrientation()
,setOrientation(Orientation)
-
segmentViewFactoryProperty
public final javafx.beans.property.ObjectProperty<javafx.util.Callback<T,javafx.scene.Node>> segmentViewFactoryProperty()
Stores the segment view factory that is used to create one view for each segment added to the control.
-
getSegmentViewFactory
public final javafx.util.Callback<T,javafx.scene.Node> getSegmentViewFactory()
Returns the value ofsegmentViewFactoryProperty()
.- Returns:
- the segment view factory
-
setSegmentViewFactory
public final void setSegmentViewFactory(javafx.util.Callback<T,javafx.scene.Node> factory)
Sets the value ofsegmentViewFactoryProperty()
.- Parameters:
factory
- the segment view factory
-
segmentsProperty
public final javafx.beans.property.ListProperty<T> segmentsProperty()
A property used to store the list of segments shown by the bar.- See Also:
getSegments()
,setSegments(ObservableList)
-
getSegments
public final javafx.collections.ObservableList<T> getSegments()
Returns the list of segments (the model).- Returns:
- the list of segments shown by the bar
-
setSegments
public void setSegments(javafx.collections.ObservableList<T> segments)
Sets the list of segments (the model).- Parameters:
segments
- the list of segments shown by the bar
-
totalProperty
public final javafx.beans.property.ReadOnlyDoubleProperty totalProperty()
A read-only property that stores the sum of all segment values attached to the bar.- See Also:
getTotal()
-
getTotal
public final double getTotal()
Returns the value oftotalProperty()
.- Returns:
- the total value of the bar (sum of segments)
-
getClassCssMetaData
public static java.util.List<javafx.css.CssMetaData<? extends javafx.css.Styleable,?>> getClassCssMetaData()
- Returns:
- The CssMetaData associated with this class, which may include the CssMetaData of its super classes.
-
getControlCssMetaData
public java.util.List<javafx.css.CssMetaData<? extends javafx.css.Styleable,?>> getControlCssMetaData()
- Overrides:
getControlCssMetaData
in classjavafx.scene.control.Control
-
getUserAgentStylesheet
protected final java.lang.String getUserAgentStylesheet(java.lang.Class<?> clazz, java.lang.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)
-
-