public class Tree extends Container
The Tree
component allows constructing simple tree component hierarchies that can be expanded
seamlessly with no limit. The tree is bound to a model that can provide data with free form depth such as file system
or similarly structured data.
To customize the look of the tree the component can be derived and component creation can be replaced.
And heres a more "real world" example showing an XML hierarchy in a Tree
:
Another real world example showing the FileSystemStorage
as a tree:
Modifier and Type | Class and Description |
---|---|
static interface |
Tree.TreeState
A marker interface used for Tree state returned from
getTreeState() and
passed to setTreeState(com.codename1.ui.tree.Tree.TreeState) for retaining
state in a Tree when the model is changed. |
BASELINE, BOTTOM, BRB_CENTER_OFFSET, BRB_CONSTANT_ASCENT, BRB_CONSTANT_DESCENT, BRB_OTHER, CENTER, CROSSHAIR_CURSOR, DEFAULT_CURSOR, DRAG_REGION_IMMEDIATELY_DRAG_X, DRAG_REGION_IMMEDIATELY_DRAG_XY, DRAG_REGION_IMMEDIATELY_DRAG_Y, DRAG_REGION_LIKELY_DRAG_X, DRAG_REGION_LIKELY_DRAG_XY, DRAG_REGION_LIKELY_DRAG_Y, DRAG_REGION_NOT_DRAGGABLE, DRAG_REGION_POSSIBLE_DRAG_X, DRAG_REGION_POSSIBLE_DRAG_XY, DRAG_REGION_POSSIBLE_DRAG_Y, E_RESIZE_CURSOR, HAND_CURSOR, LEFT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NW_RESIZE_CURSOR, RIGHT, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, TOP, W_RESIZE_CURSOR, WAIT_CURSOR
Constructor and Description |
---|
Tree()
Constructor for usage by GUI builder and automated tools, normally one
should use the version that accepts the model
|
Tree(TreeModel model)
Construct a tree with the given tree model
|
Modifier and Type | Method and Description |
---|---|
void |
addLeafListener(ActionListener l)
A listener that fires when a leaf is clicked
|
protected void |
bindNodeListener(ActionListener l,
Component node)
Since a node may be any component type developers should override this method to
add support for binding the click listener to the given component.
|
protected Dimension |
calcPreferredSize()
Calculates the preferred size based on component content.
|
protected String |
childToDisplayLabel(Object child)
Converts a tree child to a label, this method can be overriden for
simple rendering effects
|
void |
collapsePath(Object... path)
Collapses the last element in the path
|
protected Component |
createNode(Object node,
int depth)
Creates a node within the tree, this method is protected allowing tree to be
subclassed to replace the rendering logic of individual tree buttons.
|
protected Button |
createNodeComponent(Object node,
int depth)
Deprecated.
replaced with createNode, bindNodeListener and setNodeIcon
|
void |
expandPath(boolean animate,
Object... path)
Expands the tree path
|
void |
expandPath(Object... path)
Expands the tree path
|
Component |
findNodeComponent(Object node)
Finds the component for a model node.
|
Component |
findNodeComponent(Object node,
Component root)
Finds the component for a model node.
|
TreeModel |
getModel()
Returns the tree model instance
|
protected Object |
getModel(Component node)
Gets the model for a component in the tree.
|
Component |
getParentComponent(Component nodeComponent)
Gets the UI component corresponding to the parent model mode of the node
corresponding with the given UI component.
|
Object |
getParentNode(Component nodeComponent)
Gets the parent model node for a component.
|
String[] |
getPropertyNames()
A component may expose mutable property names for a UI designer to manipulate, this
API is designed for usage internally by the GUI builder code
|
String[] |
getPropertyTypeNames()
This method is here to workaround an XMLVM array type bug where property types aren't
identified properly, it returns the names of the types using the following type names:
String,int,double,long,byte,short,char,String[],String[][],byte[],Image,Image[],Object[],ListModel,ListCellRenderer
|
Class[] |
getPropertyTypes()
Matches the property names method (see that method for further details).
|
Object |
getPropertyValue(String name)
Returns the current value of the property name, this method is used by the GUI builder
|
Object |
getSelectedItem()
Returns the currently selected item in the tree
|
Tree.TreeState |
getTreeState()
Gets the state of the tree in a format that can be restored later
by either the same tree or a different tree whose model includes the same
nodes.
|
protected boolean |
isExpanded(Component node)
This method returns true if the given node is expanded.
|
boolean |
isMultilineMode()
Toggles a mode where rows in the tree can be broken since span buttons will
be used instead of plain buttons.
|
void |
refreshNode(Component nodeComponent)
Refreshes a node of the tree.
|
void |
removeLeafListener(ActionListener l)
Removes the listener that fires when a leaf is clicked
|
static void |
setFolderIcon(Image folderIcon)
Sets the icon for a tree folder
|
static void |
setFolderOpenIcon(Image folderIcon)
Sets the icon for a tree folder in its expanded state
|
void |
setModel(TreeModel model)
Sets the tree model to a new value
|
void |
setMultilineMode(boolean multilineMode)
Toggles a mode where rows in the tree can be broken since span buttons will
be used instead of plain buttons.
|
static void |
setNodeIcon(Image nodeIcon)
Sets the icon for a tree node
|
protected void |
setNodeIcon(Image icon,
Component node)
Sets the icon for the given node similar in scope to bindNodeListener
|
protected void |
setNodeMaterialIcon(char c,
Component node,
float size)
Sets material icon for the node.
|
String |
setPropertyValue(String name,
Object value)
Sets a new value to the given property, returns an error message if failed
and null if successful.
|
void |
setTreeState(Tree.TreeState state)
Sets the tree state.
|
add, add, add, add, add, add, addAll, addComponent, addComponent, addComponent, addComponent, animateHierarchy, animateHierarchyAndWait, animateHierarchyFade, animateHierarchyFadeAndWait, animateLayout, animateLayoutAndWait, animateLayoutFade, animateLayoutFadeAndWait, animateUnlayout, animateUnlayoutAndWait, applyRTL, cancelRepaints, clearClientProperties, constrainHeightWhenScrollable, constrainWidthWhenScrollable, contains, createAnimateHierarchy, createAnimateHierarchyFade, createAnimateLayout, createAnimateLayoutFade, createAnimateLayoutFadeAndWait, createAnimateMotion, createAnimateUnlayout, createReplaceTransition, dragInitiated, drop, encloseIn, encloseIn, findDropTargetAt, findFirstFocusable, fireClicked, flushReplace, forceRevalidate, getBottomGap, getChildrenAsList, getClosestComponentTo, getComponentAt, getComponentAt, getComponentCount, getComponentIndex, getGridPosX, getGridPosY, getLayout, getLayoutHeight, getLayoutWidth, getLeadComponent, getLeadParent, getResponderAt, getSafeAreaRoot, getScrollIncrement, getSideGap, getUIManager, initLaf, invalidate, isEnabled, isSafeArea, isSafeAreaRoot, isScrollableX, isScrollableY, isSelectableInteraction, isSurface, iterator, iterator, keyPressed, keyReleased, layoutContainer, morph, morphAndWait, paint, paintBackground, paintBorderBackground, paintComponentBackground, paintGlass, paramString, pointerPressed, refreshTheme, removeAll, removeComponent, replace, replace, replaceAndWait, replaceAndWait, replaceAndWait, revalidate, revalidateLater, revalidateWithAnimationSafety, scrollComponentToVisible, setCellRenderer, setEnabled, setLayout, setLeadComponent, setSafeArea, setSafeAreaRoot, setScrollable, setScrollableX, setScrollableY, setScrollIncrement, setShouldCalcPreferredSize, setShouldLayout, setUIManager, updateTabIndices
addDragFinishedListener, addDragOverListener, addDropListener, addFocusListener, addLongPressListener, addPointerDraggedListener, addPointerPressedListener, addPointerReleasedListener, addPullToRefresh, addScrollListener, addStateChangeListener, animate, bindProperty, blocksSideSwipe, calcScrollSize, contains, containsOrOwns, createStyleAnimation, deinitialize, deinitializeCustomStyle, dragEnter, dragExit, dragFinished, draggingOver, drawDraggedImage, focusGained, focusLost, getAbsoluteX, getAbsoluteY, getAllStyles, getAnimationManager, getBaseline, getBaselineResizeBehavior, getBindablePropertyNames, getBindablePropertyTypes, getBorder, getBoundPropertyValue, getBounds, getBounds, getClientProperty, getCloudBoundProperty, getCloudDestinationProperty, getComponentForm, getComponentState, getCursor, getDefaultDragTransparency, getDirtyRegion, getDisabledStyle, getDraggedx, getDraggedy, getDragImage, getDragRegionStatus, getDragSpeed, getDragTransparency, getEditingDelegate, getHeight, getInlineAllStyles, getInlineDisabledStyles, getInlinePressedStyles, getInlineSelectedStyles, getInlineStylesTheme, getInlineUnselectedStyles, getInnerHeight, getInnerPreferredH, getInnerPreferredW, getInnerWidth, getInnerX, getInnerY, getLabelForComponent, getName, getNativeOverlay, getNextFocusDown, getNextFocusLeft, getNextFocusRight, getNextFocusUp, getOuterHeight, getOuterPreferredH, getOuterPreferredW, getOuterWidth, getOuterX, getOuterY, getOwner, getParent, getPreferredH, getPreferredSize, getPreferredSizeStr, getPreferredTabIndex, getPreferredW, getPressedStyle, getSameHeight, getSameWidth, getScrollable, getScrollAnimationSpeed, getScrollDimension, getScrollOpacity, getScrollOpacityChangeSpeed, getScrollX, getScrollY, getSelectCommandText, getSelectedRect, getSelectedStyle, getStyle, getTabIndex, getTensileLength, getTextSelectionSupport, getTooltip, getUIID, getUnselectedStyle, getVisibleBounds, getVisibleBounds, getWidth, getX, getY, growShrink, handlesInput, hasFixedPreferredSize, hasFocus, hideNativeOverlay, initComponent, initCustomStyle, initDisabledStyle, initPressedStyle, initSelectedStyle, initUnselectedStyle, installDefaultPainter, isAlwaysTensile, isBlockLead, isCellRenderer, isChildOf, isDragActivated, isDragAndDropOperation, isDraggable, isDragRegion, isDropTarget, isEditable, isEditing, isFlatten, isFocusable, isGrabsPointerEvents, isHidden, isHidden, isHideInLandscape, isHideInPortrait, isIgnorePointerEvents, isInClippingRegion, isInitialized, isOpaque, isOwnedBy, isPinchBlocksDragAndDrop, isRippleEffect, isRTL, isScrollable, isScrollVisible, isSetCursorSupported, isSmoothScrolling, isSnapToGrid, isStickyDrag, isTactileTouch, isTactileTouch, isTensileDragEnabled, isTraversable, isVisible, keyRepeated, laidOut, longKeyPress, longPointerPress, onScrollX, onScrollY, paintBackgrounds, paintBorder, paintComponent, paintComponent, paintIntersectingComponentsAbove, paintLock, paintLockRelease, paintRippleOverlay, paintScrollbars, paintScrollbarX, paintScrollbarY, paintShadows, parsePreferredSize, pinch, pinch, pinchReleased, pointerDragged, pointerDragged, pointerHover, pointerHoverPressed, pointerHoverReleased, pointerPressed, pointerReleased, pointerReleased, putClientProperty, refreshTheme, refreshTheme, remove, removeDragFinishedListener, removeDragOverListener, removeDropListener, removeFocusListener, removeLongPressListener, removePointerDraggedListener, removePointerPressedListener, removePointerReleasedListener, removeScrollListener, removeStateChangeListener, repaint, repaint, requestFocus, resetFocusable, respondsToPointerEvents, scrollRectToVisible, scrollRectToVisible, setAlwaysTensile, setBlockLead, setBoundPropertyValue, setCloudBoundProperty, setCloudDestinationProperty, setComponentState, setCursor, setDefaultDragTransparency, setDirtyRegion, setDisabledStyle, setDraggable, setDragTransparency, setDropTarget, setEditingDelegate, setFlatten, setFocus, setFocusable, setGrabsPointerEvents, setHandlesInput, setHeight, setHidden, setHidden, setHideInLandscape, setHideInPortrait, setIgnorePointerEvents, setInitialized, setInlineAllStyles, setInlineDisabledStyles, setInlinePressedStyles, setInlineSelectedStyles, setInlineStylesTheme, setInlineUnselectedStyles, setIsScrollVisible, setLabelForComponent, setName, setNextFocusDown, setNextFocusLeft, setNextFocusRight, setNextFocusUp, setOpaque, setOwner, setPinchBlocksDragAndDrop, setPreferredH, setPreferredSize, setPreferredSizeStr, setPreferredTabIndex, setPreferredW, setPressedStyle, setRippleEffect, setRTL, setSameHeight, setSameSize, setSameWidth, setScrollAnimationSpeed, setScrollOpacityChangeSpeed, setScrollSize, setScrollVisible, setScrollX, setScrollY, setSelectCommandText, setSelectedStyle, setSize, setSmoothScrolling, setSnapToGrid, setTabIndex, setTactileTouch, setTensileDragEnabled, setTensileLength, setTooltip, setTraversable, setUIID, setUIID, setUnselectedStyle, setVisible, setWidth, setX, setY, shouldBlockSideSwipe, shouldBlockSideSwipeLeft, shouldBlockSideSwipeRight, shouldRenderComponentSelection, showNativeOverlay, startEditingAsync, stopEditing, stripMarginAndPadding, styleChanged, toImage, toString, unbindProperty, updateNativeOverlay, visibleBoundsContains
public Tree()
public Tree(TreeModel model)
model
- represents the contents of the treepublic Tree.TreeState getTreeState()
setTreeState(com.codename1.ui.tree.Tree.TreeState)
public void setTreeState(Tree.TreeState state)
state
- The state, which was returned from the getTreeState()
method.public boolean isMultilineMode()
public void setMultilineMode(boolean multilineMode)
multilineMode
- the multilineMode to setpublic String[] getPropertyNames()
getPropertyNames
in class Component
public Class[] getPropertyTypes()
getPropertyTypes
in class Component
public String[] getPropertyTypeNames()
getPropertyTypeNames
in class Component
public Object getPropertyValue(String name)
getPropertyValue
in class Component
name
- the name of the propertypublic String setPropertyValue(String name, Object value)
setPropertyValue
in class Component
name
- the name of the propertyvalue
- new value for the propertypublic TreeModel getModel()
public void setModel(TreeModel model)
model
- the model of the treepublic static void setFolderIcon(Image folderIcon)
folderIcon
- the icon for a folder within the treepublic static void setFolderOpenIcon(Image folderIcon)
folderIcon
- the icon for a folder within the treepublic static void setNodeIcon(Image nodeIcon)
nodeIcon
- the icon for a node within the treeprotected boolean isExpanded(Component node)
node
- a Component that represents a tree node.public Component findNodeComponent(Object node)
node
- The node from the model.public Component findNodeComponent(Object node, Component root)
node
- Model node whose view we seek.root
- A root component - we check root and its descendents.public void expandPath(Object... path)
path
- the path to expandpublic void expandPath(boolean animate, Object... path)
path
- the path to expandanimate
- whether to animate expansionpublic void collapsePath(Object... path)
path
- the path to the element that should be collapsedpublic Object getSelectedItem()
public Object getParentNode(Component nodeComponent)
nodeComponent
- The UI for a node.public Component getParentComponent(Component nodeComponent)
nodeComponent
- UI component, whose node we seek the parent.public void refreshNode(Component nodeComponent)
nodeComponent
- The node component.protected Button createNodeComponent(Object node, int depth)
node
- the node object from the model to display on the buttondepth
- the depth within the tree (normally represented by indenting the entry)protected void bindNodeListener(ActionListener l, Component node)
l
- listener interfacenode
- node component returned by createNodeprotected void setNodeIcon(Image icon, Component node)
icon
- the icon for the nodenode
- the node instanceprotected void setNodeMaterialIcon(char c, Component node, float size)
c
- Material icon code. See FontImage
node
- The node to set the icon for.size
- The size in millimetres for the icon.protected Component createNode(Object node, int depth)
node
- the node object from the model to display on the buttondepth
- the depth within the tree (normally represented by indenting the entry)protected String childToDisplayLabel(Object child)
public void addLeafListener(ActionListener l)
l
- listener to fire when the leaf is clickedpublic void removeLeafListener(ActionListener l)
l
- listener to removeprotected Object getModel(Component node)
node
- The component whose model we want to obtain.protected Dimension calcPreferredSize()
calcPreferredSize
in class Container