Package org.zkoss.zul

## Class Combobox

- java.lang.Object
- - org.zkoss.zk.ui.AbstractComponent
  - - org.zkoss.zk.ui.HtmlBasedComponent
    - - org.zkoss.zul.impl.XulElement
      - - org.zkoss.zul.impl.InputElement
        - - org.zkoss.zul.Textbox
          - - org.zkoss.zul.Combobox

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

      public class Combobox
      extends Textbox

  A combobox.

  Non-XUL extension. It is used to replace XUL menulist. This class is more flexible than menulist, such as `setAutocomplete(boolean)` `setAutodrop(boolean)`.

  Default `getZclass()`: z-combobox.(since 3.5.0)

  Events: onOpen, onSelect, onAfterRender
  Developers can listen to the onOpen event and initializes it when `OpenEvent.isOpen()` is true, and/or clean up if false.
  onAfterRender is sent when the model's data has been rendered.(since 5.0.4)

  Besides assign a list model, you could assign a renderer (a `ComboitemRenderer` instance) to a combobox, such that the combobox will use this renderer to render the data returned by `ListModel.getElementAt(int)`. If not assigned, the default renderer, which assumes a label per combo item, is used. In other words, the default renderer adds a label to a row by calling toString against the object returned by `ListModel.getElementAt(int)`. (since 3.0.2)

  Note: to have better performance, onOpen is sent only if a non-deferrable event listener is registered (see `Deferrable`).

  Like `Datebox`, the value of a read-only comobobox (`InputElement.isReadonly()`) can be changed by dropping down the list and selecting an combo item (though users cannot type anything in the input box).

  Author:
    tomyeh
  See Also:
    `Comboitem`, Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected class` | `Combobox.ExtraCtrl` | A utility class to implement `HtmlBasedComponent.getExtraCtrl()`.

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

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

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static java.lang.String` | `ICON_SCLASS` |

    - ### Fields inherited from class org.zkoss.zul.impl.InputElement

      `_cols, _value`

    - ### 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
    --- | ---
    `Combobox()` |
    `Combobox​(java.lang.String value)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Comboitem` | `appendItem​(java.lang.String label)` | Appends an item.
    `void` | `beforeChildAdded​(Component newChild, Component refChild)` | Default: does nothing.
    `java.lang.Object` | `clone()` | Clones the component.
    `void` | `close()` | Closes the list of combo items (`Comboitem` if it was dropped down.
    `protected java.lang.String` | `coerceToString​(java.lang.Object value)` | Coerces the value passed to `Textbox.setValue(java.lang.String)`.
    `java.lang.String` | `getEmptySearchMessage()` | Returns the empty search message if any.
    `java.lang.Object` | `getExtraCtrl()` | Returns the client control for this component.
    `java.lang.String` | `getIconSclass()` | Returns the iconSclass name of this Combobox.
    `Comboitem` | `getItemAtIndex​(int index)` | Returns the item at the specified index.
    `int` | `getItemCount()` | Returns the number of items.
    `<T> ComboitemRenderer<T>` | `getItemRenderer()` | Returns the renderer to render each row, or null if the default renderer is used.
    `java.util.List<Comboitem>` | `getItems()` | Returns a 'live' list of all `Comboitem`.
    `<T> ListModel<T>` | `getModel()` | Returns the list model associated with this combobox, or null if this combobox is not associated with any list data model.
    `java.lang.String` | `getPopupWidth()` |
    `PropertyAccess` | `getPropertyAccess​(java.lang.String prop)` | Returns the corresponding property access object from the given property name, if any.
    `int` | `getSelectedIndex()` | Returns the index of the selected item, or -1 if not selected.
    `Comboitem` | `getSelectedItem()` | Returns the selected item.
    `java.lang.String` | `getZclass()` | Returns the ZK Cascading Style class for this component.
    `boolean` | `isAutocomplete()` | Returns whether to automatically complete this text box by matching the nearest item (`Comboitem`.
    `boolean` | `isAutodrop()` | Returns whether to automatically drop the list if users is changing this text box.
    `boolean` | `isButtonVisible()` | Returns whether the button (on the right of the textbox) is visible.
    `protected boolean` | `isChildable()` | Childable.
    `boolean` | `isInstantSelect()` | Returns true if onSelect event is sent as soon as user selects using keyboard navigation.
    `boolean` | `isOpen()` | Returns whether this combobox is open.
    `void` | `onChildAdded​(Component child)` | Default: handles special event listeners.
    `void` | `onChildRemoved​(Component child)` | Default: handles special event listeners.
    `void` | `onInitRender​(Event data)` | Handles a private event, onInitRender.
    `void` | `onPageAttached​(Page newpage, Page oldpage)` | Default: handles special event listeners.
    `void` | `onPageDetached​(Page page)` | Default: handles special event listeners.
    `void` | `open()` | Drops down the list of combo items (`Comboitem`.
    `Comboitem` | `removeItemAt​(int index)` | Removes the child item in the list box at the given index.
    `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` | `sessionDidActivate​(Page page)` | Notification that the session, which owns this component, has just been activated (a.k.a., deserialized).
    `void` | `sessionWillPassivate​(Page page)` | Notification that the session, which owns this component, is about to be passivated (a.k.a., serialized).
    `void` | `setAutocomplete​(boolean autocomplete)` | Sets whether to automatically complete this text box by matching the nearest item (`Comboitem`.
    `void` | `setAutodrop​(boolean autodrop)` | Sets whether to automatically drop the list if users is changing this text box.
    `void` | `setButtonVisible​(boolean visible)` | Sets whether the button (on the right of the textbox) is visible.
    `void` | `setEmptySearchMessage​(java.lang.String msg)` | Sets empty search message.
    `void` | `setIconSclass​(java.lang.String iconSclass)` | Sets the iconSclass name of this Combobox.
    `void` | `setInstantSelect​(boolean instantSelect)` | Sets the instantSelect attribute.
    `void` | `setItemRenderer​(java.lang.String clsnm)` | Sets the renderer by use of a class name.
    `void` | `setItemRenderer​(ComboitemRenderer<?> renderer)` | Sets the renderer which is used to render each row if `getModel()` is not null.
    `void` | `setModel​(ListModel<?> model)` | Sets the list model associated with this combobox.
    `void` | `setMultiline​(boolean multiline)` | Sets whether it is multiline.
    `void` | `setOpen​(boolean open)` | Drops down or closes the list of combo items (`Comboitem`.
    `void` | `setPopupWidth​(java.lang.String popupWidth)` | Sets the width of the popup of this component.
    `void` | `setRows​(int rows)` | Sets the rows.
    `void` | `setSelectedIndex​(int jsel)` | Deselects the currently selected items and selects the item with the given index.
    `void` | `setSelectedItem​(Comboitem item)` | Deselects the currently selected items and selects the given item.

    - ### Methods inherited from class org.zkoss.zul.Textbox

      `checkBeforeSetRows, coerceFromString, getRows, getType, getValue, isMultiline, isSubmitByEnter, isTabbable, setHeight, setSubmitByEnter, setTabbable, setType, setValue, setVflex`

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

      `checkUserError, clearErrorMessage, clearErrorMessage, getCols, getConstraint, getConstraintString, getErrorboxIconSclass, getErrorboxSclass, getErrorMessage, getInputAttributes, getInstant, getMaxlength, getName, getPlaceholder, getRawText, getRawValue, getTargetValue, getText, isDisabled, isInplace, isInstant, isReadonly, isValid, marshall, onWrongValue, select, setCols, setConstraint, setConstraint, setDisabled, setErrorboxIconSclass, setErrorboxSclass, setErrorMessage, setInplace, setInputAttributes, setInputAttributes, setInsertedText, setInstant, setMaxlength, setName, setPlaceholder, setRawValue, setReadonly, setSelectedText, setSelectionRange, setText, setValueDirectly, showCustomError, unmarshall, validate`

    - ### 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, getHeight, getHflex, getLeft, getRenderdefer, getSclass, getStyle, getTabindex, getTabindexInteger, getTooltiptext, getTop, getVflex, getWidth, getZindex, getZIndex, removeSclass, removeSclass, setAction, setClass, setClientAction, setDraggable, setDroppable, setFocus, setHeight0, setHeightDirectly, setHflex, setHflex0, setHflexDirectly, setLeft, setLeftDirectly, setRenderdefer, setSclass, setStyle, setTabindex, setTabindex, setTooltiptext, setTop, setTopDirectly, setVflex0, setVflexDirectly, setWidth, 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, beforeParentChanged, 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, insertBefore, invalidate, isDisabledHostChanged, isInitialized, isInvalidated, isListenerAvailable, isVisible, onParentChanged, query, queryAll, redraw, redrawChildren, removeAttribute, removeAttribute, removeAttribute, removeCallback, removeChild, removeEventListener, removeForward, removeForward, removeRedrawCallback, removeScopeListener, removeShadowRoot, render, render, render, renderPropertiesOnly, replace, response, response, response, service, setAttribute, setAttribute, setAttribute, setAuService, setAutag, setClientAttribute, setClientDataAttribute, setDefinition, setDefinition, setId, setMold, setPage, setPageBefore, setParent, setStubonly, setStubonly, setSubBindingAnnotationCount, setTemplate, setVisible, 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`

- - ### Field Detail

    - #### ICON_SCLASS

          public static final java.lang.String ICON_SCLASS

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Combobox

          public Combobox()

    - #### Combobox

          public Combobox​(java.lang.String value)
                   throws WrongValueException

      Throws:
        `WrongValueException`

  - ### Method Detail

    - #### coerceToString

          protected java.lang.String coerceToString​(java.lang.Object value)

      Description copied from class: `Textbox`
      Coerces the value passed to `Textbox.setValue(java.lang.String)`.

      Default: convert null to an empty string.

      Overrides:
        `coerceToString` in class `Textbox`

    - #### getModel

          public <T> ListModel<T> getModel()

      Returns the list model associated with this combobox, or null if this combobox is not associated with any list data model.

      Note: for implementation of auto-complete, the result of `getItemCount()` is a subset of model. So, if the model implemented `ListSubModel` interface, you can't use the index of model to find the comboitem by `getItemAtIndex(int)`.

      Since:
        3.0.2
      See Also:
        `ListSubModel.getSubModel(Object, int)`

    - #### setModel

          public void setModel​(ListModel<?> model)

      Sets the list model associated with this combobox. If a non-null model is assigned, no matter whether it is the same as the previous, it will always cause re-render.
      Parameters:
        `model` - the list model to associate, or null to dissociate any previous model.
      Throws:
        `UiException` - if failed to initialize with the model
      Since:
        3.0.2

    - #### setEmptySearchMessage

          public void setEmptySearchMessage​(java.lang.String msg)

      Sets empty search message. This message would be displayed, when no matching results was found. Note: it's meaningless if no model case.
      Parameters:
        `msg` -
      Since:
        8.5.1

    - #### getEmptySearchMessage

          public java.lang.String getEmptySearchMessage()

      Returns the empty search message if any. Default: null
      Since:
        10.0.0

    - #### getItemRenderer

          public <T> ComboitemRenderer<T> getItemRenderer()

      Returns the renderer to render each row, or null if the default renderer is used.
      Since:
        3.0.2

    - #### setItemRenderer

          public void setItemRenderer​(ComboitemRenderer<?> renderer)

      Sets the renderer which is used to render each row if `getModel()` is not null.

      Note: changing a render will not cause the combobox to re-render. If you want it to re-render, you could assign the same model again (i.e., setModel(getModel())), or fire an `ListDataEvent` event.

      Parameters:
        `renderer` - the renderer, or null to use the default.
      Throws:
        `UiException` - if failed to initialize with the model
      Since:
        3.0.2

    - #### setItemRenderer

          public void setItemRenderer​(java.lang.String clsnm)
                               throws java.lang.ClassNotFoundException,
                                      java.lang.NoSuchMethodException,
                                      java.lang.IllegalAccessException,
                                      java.lang.InstantiationException,
                                      java.lang.reflect.InvocationTargetException

      Sets the renderer by use of a class name. It creates an instance automatically.
      Throws:
        `java.lang.ClassNotFoundException`
        `java.lang.NoSuchMethodException`
        `java.lang.IllegalAccessException`
        `java.lang.InstantiationException`
        `java.lang.reflect.InvocationTargetException`
      Since:
        3.0.2

    - #### onInitRender

          public void onInitRender​(Event data)

      Handles a private event, onInitRender. It is used only for implementation, and you rarely need to invoke it explicitly.
      Since:
        3.0.2

    - #### isAutodrop

          public boolean isAutodrop()

      Returns whether to automatically drop the list if users is changing this text box.

      Default: false.

    - #### setAutodrop

          public void setAutodrop​(boolean autodrop)

      Sets whether to automatically drop the list if users is changing this text box.

    - #### isAutocomplete

          public boolean isAutocomplete()

      Returns whether to automatically complete this text box by matching the nearest item (`Comboitem`. It is also known as auto-type-ahead.

      Default: true (since 5.0.0).

      If true, the nearest item will be searched and the text box is updated automatically. If false, user has to click the item or use the DOWN or UP keys to select it back.

      Don't confuse it with the auto-completion feature mentioned by other framework. Such kind of auto-completion is supported well by listening to the onChanging event.

    - #### setAutocomplete

          public void setAutocomplete​(boolean autocomplete)

      Sets whether to automatically complete this text box by matching the nearest item (`Comboitem`.

    - #### isOpen

          public boolean isOpen()

      Returns whether this combobox is open.

      Default: false.

      Since:
        6.0.0

    - #### setOpen

          public void setOpen​(boolean open)

      Drops down or closes the list of combo items (`Comboitem`. only works while visible
      Since:
        3.0.1

    - #### open

          public void open()

      Drops down the list of combo items (`Comboitem`. It is the same as setOpen(true).
      Since:
        3.0.1

    - #### close

          public void close()

      Closes the list of combo items (`Comboitem` if it was dropped down. It is the same as setOpen(false).
      Since:
        3.0.1

    - #### isButtonVisible

          public boolean isButtonVisible()

      Returns whether the button (on the right of the textbox) is visible.

      Default: true.

    - #### setButtonVisible

          public void setButtonVisible​(boolean visible)

      Sets whether the button (on the right of the textbox) is visible.

    - #### isInstantSelect

          public boolean isInstantSelect()

      Returns true if onSelect event is sent as soon as user selects using keyboard navigation.

      Default: true

      Since:
        8.6.1

    - #### setInstantSelect

          public void setInstantSelect​(boolean instantSelect)

      Sets the instantSelect attribute. When the attribute is true, onSelect event will be fired as soon as user selects using keyboard navigation. If the attribute is false, user needs to press Enter key to finish the selection using keyboard navigation.
      Since:
        8.6.1

    - #### getItems

          public java.util.List<Comboitem> getItems()

      Returns a 'live' list of all `Comboitem`. By live we mean you can add or remove them directly with the List interface.

      Currently, it is the same as `AbstractComponent.getChildren()`. However, we might add other kind of children in the future.

    - #### getItemCount

          public int getItemCount()

      Returns the number of items.

    - #### getItemAtIndex

          public Comboitem getItemAtIndex​(int index)

      Returns the item at the specified index.

    - #### appendItem

          public Comboitem appendItem​(java.lang.String label)

      Appends an item.

    - #### removeItemAt

          public Comboitem removeItemAt​(int index)

      Removes the child item in the list box at the given index.
      Returns:
        the removed item.

    - #### getSelectedItem

          public Comboitem getSelectedItem()

      Returns the selected item.
      Since:
        2.4.0

    - #### setSelectedItem

          public void setSelectedItem​(Comboitem item)

      Deselects the currently selected items and selects the given item.

      Note: if the label of comboitem has the same more than one, the first comboitem will be selected at client side, it is a limitation of `Combobox` and it is different from `Listbox`.

      Since:
        3.0.2

    - #### setSelectedIndex

          public void setSelectedIndex​(int jsel)

      Deselects the currently selected items and selects the item with the given index.

      Note: if the label of comboitem has the same more than one, the first comboitem will be selected at client side, it is a limitation of `Combobox` and it is different from `Listbox`.

      Since:
        3.0.2

    - #### getSelectedIndex

          public int getSelectedIndex()

      Returns the index of the selected item, or -1 if not selected.
      Since:
        3.0.1

    - #### getPopupWidth

          public java.lang.String getPopupWidth()

      Returns:
        the width of the popup of this component
      Since:
        8.0.3

    - #### setPopupWidth

          public void setPopupWidth​(java.lang.String popupWidth)

      Sets the width of the popup of this component. If the input is a percentage, the popup width will be calculated by multiplying the width of this component with the percentage. (e.g. if the input string is 130%, and the width of this component is 300px, the popup width will be 390px = 300px * 130%) Others will be set directly.
      Parameters:
        `popupWidth` - the width of the popup of this component
      Since:
        8.0.3

    - #### setMultiline

          public void setMultiline​(boolean multiline)

      Description copied from class: `Textbox`
      Sets whether it is multiline.
      Overrides:
        `setMultiline` in class `Textbox`

    - #### setRows

          public void setRows​(int rows)

      Description copied from class: `Textbox`
      Sets the rows.

      Note: Not allowed to set rows and height/vflex at the same time

      Overrides:
        `setRows` in class `Textbox`

    - #### getExtraCtrl

          public java.lang.Object getExtraCtrl()

      Description copied from class: `HtmlBasedComponent`
      Returns the client control for this component. It is used only by component developers.

      Default: creates an instance of `HtmlBasedComponent.ExtraCtrl`.

      Specified by:
        `getExtraCtrl` in interface `ComponentCtrl`
      Overrides:
        `getExtraCtrl` in class `HtmlBasedComponent`
      Returns:
        null if no special handling required. If the component requires some special controls, it could return an object that implements one or several interfaces in the org.zkoss.zk.ui.ext.render package. For example, `Cropper`.
      See Also:
        `ComponentCtrl.getExtraCtrl()`

    - #### setIconSclass

          public void setIconSclass​(java.lang.String iconSclass)

      Sets the iconSclass name of this Combobox.
      Parameters:
        `iconSclass` - String
      Since:
        8.6.2

    - #### getIconSclass

          public java.lang.String getIconSclass()

      Returns the iconSclass name of this Combobox.
      Returns:
        the iconSclass name
      Since:
        8.6.2

    - #### getZclass

          public java.lang.String getZclass()

      Description copied from class: `HtmlBasedComponent`
      Returns the ZK Cascading Style class for this component. It usually depends on the implementation of the mold (`AbstractComponent.getMold()`).

      Default: null (the default value depends on element).

      `HtmlBasedComponent.setZclass(java.lang.String)`) will completely replace the default style of a component. In other words, the default style of a component is associated with the default value of `HtmlBasedComponent.getZclass()`. Once it is changed, the default style won't be applied at all. If you want to perform small adjustments, use `HtmlBasedComponent.setSclass(java.lang.String)` instead.

      Overrides:
        `getZclass` in class `Textbox`
      See Also:
        `HtmlBasedComponent.getSclass()`

    - #### 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 `Textbox`
      Throws:
        `java.io.IOException`

    - #### service

          public void service​(AuRequest request,
                              boolean everError)

      Processes an AU request.

      Default: in addition to what are handled by `InputElement.service(org.zkoss.zk.au.AuRequest, boolean)`, it also handles onOpen and onSelect.

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

    - #### beforeChildAdded

          public void beforeChildAdded​(Component newChild,
                                       Component refChild)

      Description copied from class: `AbstractComponent`
      Default: does nothing.
      Specified by:
        `beforeChildAdded` in interface `ComponentCtrl`
      Overrides:
        `beforeChildAdded` in class `AbstractComponent`
      Parameters:
        `newChild` - 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)`

    - #### isChildable

          protected boolean isChildable()

      Childable.
      Overrides:
        `isChildable` in class `InputElement`

    - #### 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)`

    - #### 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 `Textbox`
      Returns:
        the new component. Notice that it doesn't belong to any page, nor desktop. It doesn't have a parent, either.

    - #### sessionWillPassivate

          public void sessionWillPassivate​(Page page)

      Description copied from interface: `ComponentCtrl`
      Notification that the session, which owns this component, is about to be passivated (a.k.a., serialized).

      Note: only root components are notified by this method.

      Specified by:
        `sessionWillPassivate` in interface `ComponentCtrl`
      Overrides:
        `sessionWillPassivate` in class `AbstractComponent`

    - #### sessionDidActivate

          public void sessionDidActivate​(Page page)

      Description copied from interface: `ComponentCtrl`
      Notification that the session, which owns this component, has just been activated (a.k.a., deserialized).

      Note: only root components are notified by this method.

      Specified by:
        `sessionDidActivate` in interface `ComponentCtrl`
      Overrides:
        `sessionDidActivate` in class `AbstractComponent`

    - #### 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 `Textbox`
      Parameters:
        `prop` - the name of the property
      Returns:
        null it means not to support for the property name.

    - #### onPageAttached

          public void onPageAttached​(Page newpage,
                                     Page oldpage)

      Description copied from class: `AbstractComponent`
      Default: handles special event listeners.
      Specified by:
        `onPageAttached` in interface `ComponentCtrl`
      Overrides:
        `onPageAttached` in class `AbstractComponent`
      Parameters:
        `newpage` - the new page (never null).
        `oldpage` - the previous page, if any, or null if it didn't belong to any page.
      See Also:
        `ComponentCtrl.onPageAttached(org.zkoss.zk.ui.Page, org.zkoss.zk.ui.Page)`

    - #### onPageDetached

          public void onPageDetached​(Page page)

      Description copied from class: `AbstractComponent`
      Default: handles special event listeners.
      Specified by:
        `onPageDetached` in interface `ComponentCtrl`
      Overrides:
        `onPageDetached` in class `AbstractComponent`
      Parameters:
        `page` - the previous page (never null)
      See Also:
        `ComponentCtrl.onPageDetached(org.zkoss.zk.ui.Page)`