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:
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));
-
-
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 List<javafx.css.CssMetaData<? extends javafx.css.Styleable,?>>
getClassCssMetaData()
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()
.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.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
-
-
-
-
Method Detail
-
createDefaultSkin
protected javafx.scene.control.Skin<?> createDefaultSkin()
- Overrides:
createDefaultSkin
in classjavafx.scene.control.Control
-
getUserAgentStylesheet
public 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.- Returns:
- the info node factory property
-
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.- Returns:
- the orientation property
-
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.- Returns:
- the property that stores the factory
-
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.- Returns:
- the segment list
-
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.- Returns:
- the total value of the bar (sum of segments)
-
getTotal
public final double getTotal()
Returns the value oftotalProperty()
.- Returns:
- the total value of the bar (sum of segments)
-
getClassCssMetaData
public static 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 List<javafx.css.CssMetaData<? extends javafx.css.Styleable,?>> getControlCssMetaData()
- Overrides:
getControlCssMetaData
in classjavafx.scene.control.Control
-
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)
-
-