Module org.controlsfx.controls
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:
Styleable
,EventTarget
,Skinnable
public class SegmentedBar<T extends SegmentedBar.Segment> extends 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 ObjectProperty<Callback<T,Node>>
infoNodeFactory
Stores a factory callback for creating nodes that will be shown by a popover when the mouse enters a segment.ObjectProperty<Orientation>
orientation
Returns the styleable object property used for storing the orientation of the segmented bar.ListProperty<T>
segments
A property used to store the list of segments shown by the bar.ObjectProperty<Callback<T,Node>>
segmentViewFactory
Stores the segment view factory that is used to create one view for each segment added to the control.ReadOnlyDoubleProperty
total
A read-only property that stores the sum of all segment values attached to the bar.-
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 class
SegmentedBar.Segment
A model class used by theSegmentedBar
control.class
SegmentedBar.SegmentView
The view class used by the default segment view factory.
-
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 SegmentedBar()
Constructs a new segmented bar.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Skin<?>
createDefaultSkin()
static List<CssMetaData<? extends Styleable,?>>
getClassCssMetaData()
List<CssMetaData<? extends Styleable,?>>
getControlCssMetaData()
Callback<T,Node>
getInfoNodeFactory()
Returns the value ofinfoNodeFactoryProperty()
.Orientation
getOrientation()
Returns the value of the orientation property.ObservableList<T>
getSegments()
Returns the list of segments (the model).Callback<T,Node>
getSegmentViewFactory()
Returns the value ofsegmentViewFactoryProperty()
.double
getTotal()
Returns the value oftotalProperty()
.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.ObjectProperty<Callback<T,Node>>
infoNodeFactoryProperty()
Stores a factory callback for creating nodes that will be shown by a popover when the mouse enters a segment.ObjectProperty<Orientation>
orientationProperty()
Returns the styleable object property used for storing the orientation of the segmented bar.ListProperty<T>
segmentsProperty()
A property used to store the list of segments shown by the bar.ObjectProperty<Callback<T,Node>>
segmentViewFactoryProperty()
Stores the segment view factory that is used to create one view for each segment added to the control.void
setInfoNodeFactory(Callback<T,Node> factory)
Sets the value ofinfoNodeFactoryProperty()
.void
setOrientation(Orientation value)
Sets the value of the orientation property.void
setSegments(ObservableList<T> segments)
Sets the list of segments (the model).void
setSegmentViewFactory(Callback<T,Node> factory)
Sets the value ofsegmentViewFactoryProperty()
.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
-
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
-
infoNodeFactory
public final ObjectProperty<Callback<T extends SegmentedBar.Segment,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 ObjectProperty<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 ObjectProperty<Callback<T extends SegmentedBar.Segment,Node>> segmentViewFactoryProperty
Stores the segment view factory that is used to create one view for each segment added to the control.
-
segments
public final 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 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 Skin<?> createDefaultSkin()
- Overrides:
createDefaultSkin
in classControl
-
getUserAgentStylesheet
public String getUserAgentStylesheet()
- Overrides:
getUserAgentStylesheet
in classRegion
-
infoNodeFactoryProperty
public final ObjectProperty<Callback<T,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 Callback<T,Node> getInfoNodeFactory()
Returns the value ofinfoNodeFactoryProperty()
.- Returns:
- the info node factory
-
setInfoNodeFactory
public void setInfoNodeFactory(Callback<T,Node> factory)
Sets the value ofinfoNodeFactoryProperty()
.- Parameters:
factory
- the info node factory
-
setOrientation
public final void setOrientation(Orientation value)
Sets the value of the orientation property.- Parameters:
value
- the new orientation (horizontal, vertical).- See Also:
orientationProperty()
-
getOrientation
public final Orientation getOrientation()
Returns the value of the orientation property.- Returns:
- the current orientation of the control
- See Also:
orientationProperty()
-
orientationProperty
public final ObjectProperty<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 ObjectProperty<Callback<T,Node>> segmentViewFactoryProperty()
Stores the segment view factory that is used to create one view for each segment added to the control.
-
getSegmentViewFactory
public final Callback<T,Node> getSegmentViewFactory()
Returns the value ofsegmentViewFactoryProperty()
.- Returns:
- the segment view factory
-
setSegmentViewFactory
public final void setSegmentViewFactory(Callback<T,Node> factory)
Sets the value ofsegmentViewFactoryProperty()
.- Parameters:
factory
- the segment view factory
-
segmentsProperty
public final ListProperty<T> segmentsProperty()
A property used to store the list of segments shown by the bar.- See Also:
getSegments()
,setSegments(ObservableList)
-
getSegments
public final ObservableList<T> getSegments()
Returns the list of segments (the model).- Returns:
- the list of segments shown by the bar
-
setSegments
public void setSegments(ObservableList<T> segments)
Sets the list of segments (the model).- Parameters:
segments
- the list of segments shown by the bar
-
totalProperty
public final 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 List<CssMetaData<? extends Styleable,?>> getClassCssMetaData()
- Returns:
- The CssMetaData associated with this class, which may include the CssMetaData of its super classes.
-
getControlCssMetaData
public List<CssMetaData<? extends Styleable,?>> getControlCssMetaData()
- Overrides:
getControlCssMetaData
in classControl
-
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)
-
-