Package org.zkoss.zul

## Class Treeitem

- java.lang.Object
- - org.zkoss.zk.ui.AbstractComponent
  - - org.zkoss.zk.ui.HtmlBasedComponent
    - - org.zkoss.zul.impl.XulElement
      - - org.zkoss.zul.Treeitem

- All Implemented Interfaces:
    `java.io.Serializable`, `java.lang.Cloneable`, `Component`, `Disable`, `Scope`, `ComponentCtrl`

      public class Treeitem
      extends XulElement
      implements Disable

  A treeitem.

  Event:

  1. onOpen is sent when a tree item is opened or closed by user.
  2. onDoubleClick is sent when user double-clicks the treeitem.
  3. onRightClick is sent when user right-clicks the treeitem.
  Author:
    tomyeh
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.zkoss.zk.ui.HtmlBasedComponent

      `HtmlBasedComponent.ExtraCtrl`

    - ### Nested classes/interfaces inherited from class org.zkoss.zk.ui.AbstractComponent

      `AbstractComponent.Children, AbstractComponent.ForwardInfo, AbstractComponent.TargetInfo`

  - ### Field Summary

    - ### Fields inherited from class org.zkoss.zk.ui.HtmlBasedComponent

      `_zclass`

    - ### Fields inherited from interface org.zkoss.zk.ui.Component

      `APPLICATION_SCOPE, COMPONENT_SCOPE, DESKTOP_SCOPE, PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE, SPACE_SCOPE`

    - ### Fields inherited from interface org.zkoss.zk.ui.sys.ComponentCtrl

      `AFTER_CHILD_ADDED, AFTER_CHILD_REMOVED, AFTER_CLONED, AFTER_PAGE_ATTACHED, AFTER_PAGE_DETACHED, AFTER_PARENT_CHANGED, CE_BUSY_IGNORE, CE_DUPLICATE_IGNORE, CE_IMPORTANT, CE_NON_DEFERRABLE, CE_REPEAT_IGNORE`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Treeitem()` |
    `Treeitem​(java.lang.String label)` |
    `Treeitem​(java.lang.String label, java.lang.Object value)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `beforeChildAdded​(Component child, Component refChild)` | Default: does nothing.
    `void` | `beforeParentChanged​(Component parent)` | Default: If parent is null, execute the @Destroy method if any.
    `java.lang.Object` | `clone()` | Clones the component.
    `java.lang.String` | `getImage()` | Returns the image of the `Treecell` it contains.
    `int` | `getIndex()` | return the index of this item
    `java.lang.String` | `getLabel()` | Returns the label of the `Treecell` it contains, or null if no such cell.
    `int` | `getLevel()` | Returns the level this cell is.
    `Treeitem` | `getParentItem()` | Returns the parent tree item, or null if this item is already the top level of the tree.
    `PropertyAccess` | `getPropertyAccess​(java.lang.String prop)` | Returns the corresponding property access object from the given property name, if any.
    `Tree` | `getTree()` | Returns the tree owning this item.
    `Treechildren` | `getTreechildren()` | Returns the treechildren that this tree item owns, or null if doesn't have any child.
    `Treerow` | `getTreerow()` | Returns the treerow that this tree item owns (might null).
    `<T> T` | `getValue()` | Returns the value.
    `int` | `getVisibleItemCount()` | Returns the number of visible descendant `Treechildren`.
    `boolean` | `insertBefore​(Component child, Component refChild)` | Inserts a child before the reference child.
    `boolean` | `isContainer()` | Returns whether the element is to act as a container which can have child elements.
    `boolean` | `isDisabled()` | Returns whether it is disabled.
    `boolean` | `isEmpty()` | Returns whether this element contains no child elements.
    `boolean` | `isLoaded()` | Return true whether all children of this tree item, if any, is loaded
    `boolean` | `isOpen()` | Returns whether this container is open.
    `boolean` | `isRendered()` | Returns true whether this tree item is rendered.
    `boolean` | `isSelectable()` | Returns whether it is selectable.
    `boolean` | `isSelected()` | Returns whether this item is selected.
    `void` | `onChildAdded​(Component child)` | Default: handles special event listeners.
    `void` | `onChildRemoved​(Component child)` | Default: handles special event listeners.
    `protected void` | `redrawChildren​(java.io.Writer out)` | Redraws children (and then recursively descendants).
    `protected void` | `renderProperties​(ContentRenderer renderer)` | Renders the content of this component, excluding the enclosing tags and children.
    `void` | `service​(AuRequest request, boolean everError)` | Processes an AU request.
    `void` | `setDisabled​(boolean disabled)` | Sets whether it is disabled.
    `void` | `setHflex​(java.lang.String flex)` | Deprecated. as of release 6.0.0.
    `void` | `setImage​(java.lang.String image)` | Sets the image of the `Treecell` it contains.
    `void` | `setLabel​(java.lang.String label)` | Sets the label of the `Treecell` it contains.
    `void` | `setOpen​(boolean open)` | Sets whether this container is open.
    `void` | `setParent​(Component parent)` | Sets the parent component.
    `void` | `setSelectable​(boolean selectable)` | Sets whether it is selectable.
    `void` | `setSelected​(boolean selected)` | Returns whether this item is selected.
    `void` | `setStubonly​(boolean stubonly)` | Deprecated. as of release 7.0.3.
    `void` | `setStubonly​(java.lang.String stubonly)` | Deprecated. as of release 7.0.3.
    `<T> void` | `setValue​(T value)` | Sets the value.
    `boolean` | `setVisible​(boolean visible)` | Sets whether this component is visible.
    `void` | `setWidth​(java.lang.String width)` | Deprecated. as of release 6.0.0.
    `void` | `unload()` | Unload the tree item

    - ### Methods inherited from class org.zkoss.zul.impl.XulElement

      `getContext, getCtrlKeys, getPopup, getTooltip, setContext, setContext, setContextAttributes, setCtrlKeys, setPopup, setPopup, setPopupAttributes, setTooltip, setTooltip, setTooltipAttributes`

    - ### Methods inherited from class org.zkoss.zk.ui.HtmlBasedComponent

      `addSclass, evalCSSFlex, focus, getAction, getClientAction, getDraggable, getDroppable, getExtraCtrl, getHeight, getHflex, getLeft, getRenderdefer, getSclass, getStyle, getTabindex, getTabindexInteger, getTooltiptext, getTop, getVflex, getWidth, getZclass, getZindex, getZIndex, removeSclass, removeSclass, setAction, setClass, setClientAction, setDraggable, setDroppable, setFocus, setHeight, setHeight0, setHeightDirectly, setHflex0, setHflexDirectly, setLeft, setLeftDirectly, setRenderdefer, setSclass, setStyle, setTabindex, setTabindex, setTooltiptext, setTop, setTopDirectly, setVflex, setVflex0, setVflexDirectly, setWidth0, setWidthDirectly, setZclass, setZindex, setZIndex, setZIndexDirectly`

    - ### Methods inherited from class org.zkoss.zk.ui.AbstractComponent

      `addAnnotation, addCallback, addClientEvent, addEventHandler, addEventListener, addEventListener, addForward, addForward, addForward, addForward, addMoved, addRedrawCallback, addScopeListener, addShadowRoot, addShadowRootBefore, addSharedEventHandlerMap, appendChild, applyProperties, beforeChildRemoved, destroyIndexCacheMap, detach, didActivate, didActivate, didDeserialize, didDeserialize, disableBindingAnnotation, disableClientUpdate, disableHostChanged, enableBindingAnnotation, enableHostChanged, getAnnotatedProperties, getAnnotatedPropertiesBy, getAnnotation, getAnnotations, getAnnotations, getAttribute, getAttribute, getAttribute, getAttributeOrFellow, getAttributes, getAttributes, getAuService, getAutag, getCallback, getChildren, getClientAttribute, getClientDataAttribute, getClientEvents, getDefaultMold, getDefinition, getDesktop, getEventHandler, getEventHandlerNames, getEventListenerMap, getEventListeners, getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, getFirstChild, getForwards, getId, getIndexCacheMap, getLastChild, getMold, getNextSibling, getPage, getParent, getPreviousSibling, getRedrawCallback, getRoot, getShadowFellowIfAny, getShadowRoots, getShadowVariable, getShadowVariable, getShadowVariable0, getSpaceOwner, getSpecialRendererOutput, getStubonly, getSubBindingAnnotationCount, getTemplate, getTemplateNames, getUuid, getWidgetAttributeNames, getWidgetClass, getWidgetListener, getWidgetListenerNames, getWidgetOverride, getWidgetOverrideNames, hasAttribute, hasAttribute, hasAttribute, hasAttributeOrFellow, hasBindingAnnotation, hasFellow, hasFellow, hasSubBindingAnnotation, initIndexCacheMap, invalidate, isChildable, isDisabledHostChanged, isInitialized, isInvalidated, isListenerAvailable, isVisible, onPageAttached, onPageDetached, onParentChanged, onWrongValue, query, queryAll, redraw, removeAttribute, removeAttribute, removeAttribute, removeCallback, removeChild, removeEventListener, removeForward, removeForward, removeRedrawCallback, removeScopeListener, removeShadowRoot, render, render, render, renderPropertiesOnly, replace, response, response, response, service, sessionDidActivate, sessionWillPassivate, setAttribute, setAttribute, setAttribute, setAuService, setAutag, setClientAttribute, setClientDataAttribute, setDefinition, setDefinition, setId, setMold, setPage, setPageBefore, setSubBindingAnnotationCount, setTemplate, setVisibleDirectly, setWidgetClass, setWidgetListener, setWidgetOverride, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdateWidgetListener, smartUpdateWidgetOverride, toString, updateByClient, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerialize`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### Treeitem

          public Treeitem()

    - #### Treeitem

          public Treeitem​(java.lang.String label)

    - #### Treeitem

          public Treeitem​(java.lang.String label,
                          java.lang.Object value)

  - ### Method Detail

    - #### isSelectable

          public boolean isSelectable()

      Returns whether it is selectable.

      Default: true.

      Since:
        8.0.0

    - #### setSelectable

          public void setSelectable​(boolean selectable)

      Sets whether it is selectable.

      If the tree is in a checkmark mode, the selectable state will affect the checkable icon to display or not.

      Default: true.

      Parameters:
        `selectable` -

    - #### unload

          public void unload()

      Unload the tree item

      To load the tree item, with `Tree.renderItem(Treeitem)`, `Tree.renderItem(Treeitem, Object)`, or `Tree.renderItems(java.util.Set)`

      Since:
        3.0.4

    - #### setDisabled

          public void setDisabled​(boolean disabled)

      Sets whether it is disabled.
      Specified by:
        `setDisabled` in interface `Disable`
      Since:
        3.0.1

    - #### isDisabled

          public boolean isDisabled()

      Returns whether it is disabled.

      Default: false.

      Specified by:
        `isDisabled` in interface `Disable`
      Since:
        3.0.1

    - #### isRendered

          public boolean isRendered()

      Returns true whether this tree item is rendered. Unlike `isLoaded()` which is used to check whether all children of this tree item are loaded.

      Default: false

      Since:
        7.0.0

    - #### isLoaded

          public boolean isLoaded()

      Return true whether all children of this tree item, if any, is loaded
      Returns:
        true whether all children of this tree item is loaded
      Since:
        3.0.0

    - #### setStubonly

          public void setStubonly​(java.lang.String stubonly)

      Deprecated.
      as of release 7.0.3.
      Please use `Treecell` or `Tree` instead.
      Specified by:
        `setStubonly` in interface `Component`
      Overrides:
        `setStubonly` in class `AbstractComponent`
      Parameters:
        `stubonly` - whether it is stub-only. The allowed values include "true", "false" and "inherit".

    - #### setStubonly

          public void setStubonly​(boolean stubonly)

      Deprecated.
      as of release 7.0.3.
      Please use `Treecell` or `Tree` instead.
      Specified by:
        `setStubonly` in interface `Component`
      Overrides:
        `setStubonly` in class `AbstractComponent`

    - #### getIndex

          public int getIndex()

      return the index of this item
      Returns:
        the index of this item
      Since:
        5.0.9

    - #### getTreerow

          public Treerow getTreerow()

      Returns the treerow that this tree item owns (might null). Each tree items has exactly one tree row.

    - #### getTreechildren

          public Treechildren getTreechildren()

      Returns the treechildren that this tree item owns, or null if doesn't have any child.

    - #### isContainer

          public boolean isContainer()

      Returns whether the element is to act as a container which can have child elements.

    - #### isEmpty

          public boolean isEmpty()

      Returns whether this element contains no child elements.

    - #### getValue

          public <T> T getValue()

      Returns the value. It could be anything you want.

      Default: null.

      Note: the value is not sent to the browser, so it is OK to be anything.

    - #### setValue

          public <T> void setValue​(T value)

      Sets the value.
      Parameters:
        `value` - the value. Note: the value is not sent to the browser, so it is OK to be anything.

    - #### isOpen

          public boolean isOpen()

      Returns whether this container is open.

      Default: true.

    - #### setOpen

          public void setOpen​(boolean open)

      Sets whether this container is open.

    - #### isSelected

          public boolean isSelected()

      Returns whether this item is selected.

    - #### setSelected

          public void setSelected​(boolean selected)

      Returns whether this item is selected.

    - #### getLevel

          public int getLevel()

      Returns the level this cell is. The root is level 0.

    - #### getLabel

          public java.lang.String getLabel()

      Returns the label of the `Treecell` it contains, or null if no such cell.

    - #### setLabel

          public void setLabel​(java.lang.String label)

      Sets the label of the `Treecell` it contains.

      If treerow and treecell are not created, we automatically create it.

      Notice that this method will create a treerow and treecell automatically if they don't exist. Thus, you cannot attach a treerow to it again if set an image or a label.

    - #### getImage

          public java.lang.String getImage()

      Returns the image of the `Treecell` it contains.

    - #### setImage

          public void setImage​(java.lang.String image)

      Sets the image of the `Treecell` it contains.

      If treerow and treecell are not created, we automatically create it.

      Notice that this method will create a treerow and treecell automatically if they don't exist. Thus, you cannot attach a treerow to it again if set an image or a label.

    - #### getParentItem

          public Treeitem getParentItem()

      Returns the parent tree item, or null if this item is already the top level of the tree. The parent tree item is actually the grandparent if any.
      Since:
        3.0.0

    - #### getTree

          public Tree getTree()

      Returns the tree owning this item.

    - #### setVisible

          public boolean setVisible​(boolean visible)

      Description copied from interface: `Component`
      Sets whether this component is visible. A component is visible by default. Both visible and invisible components are rendered in a browser's DOM. But an invisible component's DOM elements with CSS `display:none`. Since a DOM element will inherit its parent's CSS rules, a component is visible only if all of its parents are also visible.
      To remove a component's DOM elements, use `Component.detach()`.
      Specified by:
        `setVisible` in interface `Component`
      Overrides:
        `setVisible` in class `AbstractComponent`
      Returns:
        the previous visibility

    - #### getVisibleItemCount

          public int getVisibleItemCount()

      Returns the number of visible descendant `Treechildren`. Descendants include direct children, grand children and so on.
      Since:
        3.6.1

    - #### setWidth

          public void setWidth​(java.lang.String width)

      Deprecated.
      as of release 6.0.0. To control the size of Tree related components, please refer to `Tree` and `Treecol` instead.
      Description copied from class: `HtmlBasedComponent`
      Sets the width. If null, the best fit is used.
      Overrides:
        `setWidth` in class `HtmlBasedComponent`
      See Also:
        `HtmlBasedComponent.setWidthDirectly(java.lang.String)`, `AbstractComponent.disableClientUpdate(boolean)`

    - #### setHflex

          public void setHflex​(java.lang.String flex)

      Deprecated.
      as of release 6.0.0. To control the size of Tree related components, please refer to `Tree` and `Treecol` instead.
      Description copied from class: `HtmlBasedComponent`
      Sets horizontal flex hint of this component.

      Number flex indicates how this component's container distributes remaining empty space among its children horizontally. Flexible component grow and shrink to fit their given space. Flexible components with larger flex values will be made larger than components with lower flex values, at the ratio determined by all flexible components. The actual flex value is not relevant unless there are other flexible components within the same container. Once the default sizes of components in a container are calculated, the remaining space in the container is divided among the flexible components, according to their flex ratios.

      Specify a flex value of negative value, 0, or "false" has the same effect as leaving the flex attribute out entirely. Specify a flex value of "true" has the same effect as a flex value of 1.

      Special flex hint, "min", indicates that the minimum space shall be given to this flexible component to enclose all of its children components. That is, the flexible component grow and shrink to fit its children components.

      Overrides:
        `setHflex` in class `HtmlBasedComponent`
      Parameters:
        `flex` - horizontal flex hint of this component.
      See Also:
        `HtmlBasedComponent.setVflex(java.lang.String)`, `HtmlBasedComponent.getHflex()`

    - #### beforeParentChanged

          public void beforeParentChanged​(Component parent)

      Description copied from class: `AbstractComponent`
      Default: If parent is null, execute the @Destroy method if any.
      Specified by:
        `beforeParentChanged` in interface `ComponentCtrl`
      Overrides:
        `beforeParentChanged` in class `AbstractComponent`
      Parameters:
        `parent` - the new parent. If null, it means detachment.
      See Also:
        `ComponentCtrl.beforeParentChanged(org.zkoss.zk.ui.Component)`

    - #### setParent

          public void setParent​(Component parent)

      Description copied from interface: `Component`
      Sets the parent component.

      Note: `Component.setParent(org.zkoss.zk.ui.Component)` always calls back `Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)` and/or `Component.removeChild(org.zkoss.zk.ui.Component)`, while `Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)` and `Component.removeChild(org.zkoss.zk.ui.Component)` always calls back `Component.setParent(org.zkoss.zk.ui.Component)`, if the parent is changed. Thus, you don't need to override both `Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)` and `Component.setParent(org.zkoss.zk.ui.Component)`, if you want to customize the behavior.

      Specified by:
        `setParent` in interface `Component`
      Overrides:
        `setParent` in class `AbstractComponent`

    - #### beforeChildAdded

          public void beforeChildAdded​(Component child,
                                       Component refChild)

      Description copied from class: `AbstractComponent`
      Default: does nothing.
      Specified by:
        `beforeChildAdded` in interface `ComponentCtrl`
      Overrides:
        `beforeChildAdded` in class `AbstractComponent`
      Parameters:
        `child` - the child to be added (never null).
        `refChild` - another child component that the new child will be inserted before it. If null, the new child will be the last child.
      See Also:
        `ComponentCtrl.beforeChildAdded(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)`

    - #### insertBefore

          public boolean insertBefore​(Component child,
                                      Component refChild)

      Description copied from interface: `Component`
      Inserts a child before the reference child.

      You could use `Component.setParent(org.zkoss.zk.ui.Component)` or `Component.appendChild(org.zkoss.zk.ui.Component)` instead of this method, unless you want to control where to put the child.

      Note: `Component.setParent(org.zkoss.zk.ui.Component)` always calls back `Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)` and/or `Component.removeChild(org.zkoss.zk.ui.Component)`, while `Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)` and `Component.removeChild(org.zkoss.zk.ui.Component)` always calls back `Component.setParent(org.zkoss.zk.ui.Component)`, if the parent is changed. Thus, you don't need to override both `Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)` and `Component.setParent(org.zkoss.zk.ui.Component)`, if you want to customize the behavior.

      If you would like to monitor if a component is attached or detached from a page, you could register a desktop listener implementing `UiLifeCycle`.

      Specified by:
        `insertBefore` in interface `Component`
      Overrides:
        `insertBefore` in class `AbstractComponent`
      Parameters:
        `child` - the new child to be inserted.
        `refChild` - the child before which you want the new child being inserted. If null, the new child is append to the end.
      Returns:
        true if newChild is added successfully or moved; false if it already has the specified child and the order doesn't change.

    - #### onChildAdded

          public void onChildAdded​(Component child)

      Description copied from class: `AbstractComponent`
      Default: handles special event listeners.
      Specified by:
        `onChildAdded` in interface `ComponentCtrl`
      Overrides:
        `onChildAdded` in class `AbstractComponent`
      See Also:
        `ComponentCtrl.onChildAdded(org.zkoss.zk.ui.Component)`

    - #### onChildRemoved

          public void onChildRemoved​(Component child)

      Description copied from class: `AbstractComponent`
      Default: handles special event listeners.
      Specified by:
        `onChildRemoved` in interface `ComponentCtrl`
      Overrides:
        `onChildRemoved` in class `AbstractComponent`
      See Also:
        `ComponentCtrl.onChildRemoved(org.zkoss.zk.ui.Component)`

    - #### redrawChildren

          protected void redrawChildren​(java.io.Writer out)
                                 throws java.io.IOException

      Description copied from class: `AbstractComponent`
      Redraws children (and then recursively descendants).

      Default: it invokes `AbstractComponent.redraw(java.io.Writer)` for all its children.

      If a derived class renders only a subset of its children (such as paging/cropping), it could override `AbstractComponent.redrawChildren(java.io.Writer)`.

      Overrides:
        `redrawChildren` in class `AbstractComponent`
      Throws:
        `java.io.IOException`
      See Also:
        `AbstractComponent.redraw(java.io.Writer)`

    - #### clone

          public java.lang.Object clone()

      Description copied from interface: `Component`
      Clones the component. All of its children and descendants are cloned. Also, ID are preserved.
      Specified by:
        `clone` in interface `Component`
      Overrides:
        `clone` in class `XulElement`
      Returns:
        the new component. Notice that it doesn't belong to any page, nor desktop. It doesn't have a parent, either.

    - #### renderProperties

          protected void renderProperties​(ContentRenderer renderer)
                                   throws java.io.IOException

      Description copied from class: `HtmlBasedComponent`
      Renders the content of this component, excluding the enclosing tags and children.

      See also ZK Client-side Reference: Property Rendering

      Overrides:
        `renderProperties` in class `XulElement`
      Throws:
        `java.io.IOException`

    - #### getPropertyAccess

          public PropertyAccess getPropertyAccess​(java.lang.String prop)

      Description copied from interface: `ComponentCtrl`
      Returns the corresponding property access object from the given property name, if any.
      Specified by:
        `getPropertyAccess` in interface `ComponentCtrl`
      Overrides:
        `getPropertyAccess` in class `XulElement`
      Parameters:
        `prop` - the name of the property
      Returns:
        null it means not to support for the property name.

    - #### service

          public void service​(AuRequest request,
                              boolean everError)

      Processes an AU request.

      Default: in addition to what are handled by `AbstractComponent.service(Event, Scope)`, it also handles onOpen.

      Specified by:
        `service` in interface `ComponentCtrl`
      Overrides:
        `service` in class `HtmlBasedComponent`
        `everError` - whether any error ever occurred before processing this request.
      Since:
        5.0.0
      See Also:
        `AbstractComponent.setAuService(org.zkoss.zk.au.AuService)`