- java.lang.Object
-
- javafx.scene.Node
-
- javafx.scene.Parent
-
- javafx.scene.layout.Region
-
- javafx.scene.control.Control
-
- com.gluonhq.charm.glisten.control.NavigationDrawer
-
- All Implemented Interfaces:
Styleable
,EventTarget
,Skinnable
@DefaultProperty("items") public class NavigationDrawer extends Control
NavigationDrawer is a panel that displays the application main navigation options on the edge of the screen. It is hidden most of the time, but is revealed whenopen()
is called. This method is generally called when the user touches the nav icon in theAppBar
.NavigationDrawer can be initialized on demand and made available throughout the application via
AppManager.getDrawer()
. This is recommended way of using this control.Navigation Drawer is logically divided into three vertical sections:
- Header - Top most section of Navigation Drawer and usually consists of
an image, title and subtitle. The recommended node for header is
NavigationDrawer.Header
. However, a user is not restricted to useNavigationDrawer.Header
and can use anyNode
, with custom style(s). - Items - The list of nodes that a user wants to display beneath the header node.
The recommended node for items is
NavigationDrawer.Item
. However, a user is not restricted to useNavigationDrawer.Item
and can use anyNode
, with custom style(s). - Footer - Bottom most section of the Navigation Drawer and is usually used for
showing secondary items like help, settings, and feedback. These items
cannot be selected i.e. they do not retain a special selection style when clicked or pressed unlike,
NavigationDrawer.Item
. The recommended node for footer isNavigationDrawer.Footer
. However, a user is not restricted to useNavigationDrawer.Footer
and can use anyNode
, with custom style(s).
None of the above sections are mandatory. A user may set one or more sections as per their requirements.
Example
The following example creates a
View
that has a navigation button which, when pressed, shows aSidePopupView
with a NavigationDrawer. ThatView
is set as the initialView
.public class NavigationDrawerSample extends MobileApplication { @Override public void init() { NavigationDrawer navigationDrawer = getDrawer(); Header header = new Header("GluonHQ", "support@gluonhq.com"); navigationDrawer.setHeader(header); navigationDrawer.getItems().setAll(new Item("Inbox", MaterialDesignIcon.INBOX.graphic()), new Item("Starred", MaterialDesignIcon.STAR.graphic())); Node footer = new Footer("Settings", MaterialDesignIcon.SETTINGS.graphic()); navigationDrawer.setFooter(footer); addViewFactory(HOME_VIEW, () -> { View view = new View(); view.showingProperty().addListener((obs, oldValue, newValue) -> { if (newValue) { AppBar appBar = MobileApplication.getInstance().getAppBar(); Button navButton = MaterialDesignIcon.MENU.button(); navButton.setOnAction(event -> navigationDrawer.open()); appBar.setNavIcon(navButton); appBar.setTitleText("NavigationDrawer"); } }); return view; }); } }
- Since:
- 2.0.0
-
-
Property Summary
Properties Type Property Description ObjectProperty<Node>
footer
The footer represents the bottom most node of Navigation Drawer and is usually used for showing secondary items like help, settings, and feedback.ObjectProperty<Node>
header
The header represents the top most node of Navigation Drawer and usually consists of an image, title and subtitle.ReadOnlyBooleanProperty
open
Represents whether this NavigationDrawer is currently open or close.ReadOnlyObjectProperty<Node>
selectedItem
Refers to the selected item property, which is used to indicate the currently selected item in the selection model.ObjectProperty<Side>
side
Defines the side from which this NavigationDrawer will draw itself out.-
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, focusVisible, focusWithin, 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
NavigationDrawer.Footer
A convenience class for creating a default footer forNavigationDrawer
with styled implementations according to Material Design Guidelines.static class
NavigationDrawer.Header
A convenience class for creating a default header forNavigationDrawer
with styled implementations according to Material Design Guidelines.static class
NavigationDrawer.Item
A convenience class for creating a default items forNavigationDrawer
with styled implementations according to Material Design Guidelines.static class
NavigationDrawer.ViewItem
A convenience class for creating a default items forNavigationDrawer
with styled implementations according to Material Design Guidelines.
-
Field Summary
Fields Modifier and Type Field Description static EventType<Event>
ITEM_SELECTED
Event type that happens whenever a item on the drawer is selected, regardless if it was already selected or not-
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 NavigationDrawer()
Creates a default NavigationDrawer.NavigationDrawer(ObservableList<Node> items)
Creates a default NavigationDrawer which will stack the contents retrieved from the provideditems
vertically.NavigationDrawer(Node header, ObservableList<Node> items)
Creates a default NavigationDrawer which will stack the contents retrieved from the provided header anditems
vertically.NavigationDrawer(Node header, Node footer, ObservableList<Node> items)
Creates a default NavigationDrawer which will stack the contents retrieved from the provided header, footer anditems
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Animates the NavigationDrawer out of the view.protected Skin<?>
createDefaultSkin()
ObjectProperty<Node>
footerProperty()
The footer represents the bottom most node of Navigation Drawer and is usually used for showing secondary items like help, settings, and feedback.Node
getFooter()
Returns an node which is used as the footer of NavigationDrawer.Node
getHeader()
Returns an object of the header.ObservableList<Node>
getItems()
Returns anObservableList
that contains the items currently being shown to the user in the content area.Node
getSelectedItem()
Returns the currently selected object.Side
getSide()
Gets the value of the property side.ObjectProperty<Node>
headerProperty()
The header represents the top most node of Navigation Drawer and usually consists of an image, title and subtitle.boolean
isOpen()
Represents whether this NavigationDrawer is currently open or close.void
open()
Animates the NavigationDrawer into the view.ReadOnlyBooleanProperty
openProperty()
Represents whether this NavigationDrawer is currently open or close.ReadOnlyObjectProperty<Node>
selectedItemProperty()
Refers to the selected item property, which is used to indicate the currently selected item in the selection model.void
setFooter(Node footer)
Sets the underlying footer for the NavigationDrawer.void
setHeader(Node header)
Sets the underlying header for the NavigationDrawer.void
setSelectedItem(Node value)
Sets the value of the property selectedItem.void
setSide(Side value)
Sets the value of the property side.ObjectProperty<Side>
sideProperty()
Defines the side from which this NavigationDrawer will draw itself out.-
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, getUserAgentStylesheet, 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, focusVisibleProperty, focusWithinProperty, 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, isFocusVisible, isFocusWithin, 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
-
header
public final ObjectProperty<Node> headerProperty
The header represents the top most node of Navigation Drawer and usually consists of an image, title and subtitle.- Returns:
- An
ObjectProperty
containing the header instance.
-
footer
public final ObjectProperty<Node> footerProperty
The footer represents the bottom most node of Navigation Drawer and is usually used for showing secondary items like help, settings, and feedback.- See Also:
getFooter()
,setFooter(Node)
-
selectedItem
public final ReadOnlyObjectProperty<Node> selectedItemProperty
Refers to the selected item property, which is used to indicate the currently selected item in the selection model. Since NavigationDrawer do not show selected item. The selected item is the item corresponding to which user can do an action. For example, change the view. In NavigationDrawer, the selected item is either null, to represent that there is no selection, or an Object that is retrieved from the underlying data model of the control the selection model is associated with.Whenever a change is triggered, a call to
close()
is made automatically. To change this behavior,NavigationDrawer.Item.autoClose
should be set to false.- See Also:
getSelectedItem()
,setSelectedItem(Node)
-
side
public final ObjectProperty<Side> sideProperty
Defines the side from which this NavigationDrawer will draw itself out.- Default value:
Side.LEFT
- Since:
- 5.0.0
- See Also:
getSide()
,setSide(Side)
-
open
public final ReadOnlyBooleanProperty openProperty
Represents whether this NavigationDrawer is currently open or close.- Since:
- 5.0.0
- See Also:
isOpen()
-
-
Constructor Detail
-
NavigationDrawer
public NavigationDrawer()
Creates a default NavigationDrawer.
-
NavigationDrawer
public NavigationDrawer(ObservableList<Node> items)
Creates a default NavigationDrawer which will stack the contents retrieved from the provideditems
vertically.- Parameters:
items
- An ObservableList ofnodes
to set as items in Navigation Drawer.
-
NavigationDrawer
public NavigationDrawer(Node header, ObservableList<Node> items)
Creates a default NavigationDrawer which will stack the contents retrieved from the provided header anditems
vertically.- Parameters:
header
- The header of Navigation Drawer.items
- An ObservableList ofnodes
to set as items in Navigation Drawer.
-
NavigationDrawer
public NavigationDrawer(Node header, Node footer, ObservableList<Node> items)
Creates a default NavigationDrawer which will stack the contents retrieved from the provided header, footer anditems
.- Parameters:
header
- The header of Navigation Drawer.footer
- The footer of Navigation Drawer.items
- An ObservableList ofnodes
to set as items in Navigation Drawer.
-
-
Method Detail
-
open
public void open()
Animates the NavigationDrawer into the view.- Since:
- 5.0.0
-
close
public void close()
Animates the NavigationDrawer out of the view.- Since:
- 5.0.0
-
getHeader
public final Node getHeader()
Returns an object of the header.- Returns:
- A
Node
containing the header object.
-
headerProperty
public final ObjectProperty<Node> headerProperty()
The header represents the top most node of Navigation Drawer and usually consists of an image, title and subtitle.- Returns:
- An
ObjectProperty
containing the header instance.
-
setHeader
public final void setHeader(Node header)
Sets the underlying header for the NavigationDrawer. The header when set here is fixed and cannot be scrolled. If you want the header to scroll, place it inside items.Normally, a user is advised to add a
NavigationDrawer.Header
as the node. ANavigationDrawer.Header
provides appropriate methods to set the necessary details and it receives the appropriate styling automatically. Nevertheless, a user is not restricted to aNavigationDrawer.Header
and may add any node with custom style.- Parameters:
header
- The header node of theNavigationDrawer
.
-
getFooter
public final Node getFooter()
Returns an node which is used as the footer of NavigationDrawer.- Returns:
- A
Node
containing the footer object.
-
footerProperty
public final ObjectProperty<Node> footerProperty()
The footer represents the bottom most node of Navigation Drawer and is usually used for showing secondary items like help, settings, and feedback.- See Also:
getFooter()
,setFooter(Node)
-
setFooter
public final void setFooter(Node footer)
Sets the underlying footer for the NavigationDrawer. The footer when set here is fixed and cannot be scrolled. If you want the footer to scroll, place it inside items.Normally, a user is advised to add a
NavigationDrawer.Footer
as the node. ANavigationDrawer.Footer
provides appropriate methods to set the necessary details and receives the appropriate styling automatically. Nevertheless, a user is not restricted to a footer and may add any node with custom style.- Parameters:
footer
- The footer node of Navigation Drawer.
-
getItems
public final ObservableList<Node> getItems()
Returns anObservableList
that contains the items currently being shown to the user in the content area.- Returns:
- An
ObservableList
containing the items to be shown to the user.
-
selectedItemProperty
public final ReadOnlyObjectProperty<Node> selectedItemProperty()
Refers to the selected item property, which is used to indicate the currently selected item in the selection model. Since NavigationDrawer do not show selected item. The selected item is the item corresponding to which user can do an action. For example, change the view. In NavigationDrawer, the selected item is either null, to represent that there is no selection, or an Object that is retrieved from the underlying data model of the control the selection model is associated with.Whenever a change is triggered, a call to
close()
is made automatically. To change this behavior,NavigationDrawer.Item.autoClose
should be set to false.- See Also:
getSelectedItem()
,setSelectedItem(Node)
-
setSelectedItem
public final void setSelectedItem(Node value)
Sets the value of the property selectedItem.- Property description:
- Refers to the selected item property, which is used to indicate
the currently selected item in the selection model. Since NavigationDrawer do
not show selected item. The selected item is the item corresponding to which
user can do an action. For example, change the view.
In NavigationDrawer, the selected item is either null,
to represent that there is no selection, or an Object that is retrieved
from the underlying data model of the control the selection model is
associated with.
Whenever a change is triggered, a call to
close()
is made automatically. To change this behavior,NavigationDrawer.Item.autoClose
should be set to false.
-
getSelectedItem
public final Node getSelectedItem()
Returns the currently selected object.- Returns:
- The selected node.
-
sideProperty
public final ObjectProperty<Side> sideProperty()
Defines the side from which this NavigationDrawer will draw itself out.- Default value:
Side.LEFT
- Since:
- 5.0.0
- See Also:
getSide()
,setSide(Side)
-
getSide
public final Side getSide()
Gets the value of the property side.- Property description:
- Defines the side from which this NavigationDrawer will draw itself out.
- Default value:
Side.LEFT
- Since:
- 5.0.0
-
setSide
public final void setSide(Side value)
Sets the value of the property side.- Property description:
- Defines the side from which this NavigationDrawer will draw itself out.
- Default value:
Side.LEFT
- Since:
- 5.0.0
-
openProperty
public final ReadOnlyBooleanProperty openProperty()
Represents whether this NavigationDrawer is currently open or close.- Since:
- 5.0.0
- See Also:
isOpen()
-
isOpen
public final boolean isOpen()
Represents whether this NavigationDrawer is currently open or close.- Returns:
- A boolean representing whether the NavigationDrawer is open or closed.
- Since:
- 5.0.0
-
createDefaultSkin
protected Skin<?> createDefaultSkin()
- Overrides:
createDefaultSkin
in classControl
-
-