org.zkoss.zul
Class Combobox

java.lang.Object
  extended by org.zkoss.zk.ui.AbstractComponent
      extended by org.zkoss.zk.ui.HtmlBasedComponent
          extended by org.zkoss.zul.impl.XulElement
              extended by org.zkoss.zul.impl.InputElement
                  extended by org.zkoss.zul.Textbox
                      extended by org.zkoss.zul.Combobox
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, HtmlBasedComponent, Component, Scope, ComponentCtrl, Combobox, Textbox, Constrainted, InputElement, XulElement

public class Combobox
extends Textbox
implements Combobox

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
Developers can listen to the onOpen event and initializes it when OpenEvent.isOpen() is true, and/or clean up if false. *

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/interfaces inherited from class org.zkoss.zk.ui.HtmlBasedComponent
HtmlBasedComponent.ExtraCtrl
 
Nested classes/interfaces inherited from class org.zkoss.zk.ui.AbstractComponent
AbstractComponent.Children
 
Field Summary
 
Fields inherited from class org.zkoss.zul.impl.InputElement
_value
 
Fields inherited from class org.zkoss.zk.ui.HtmlBasedComponent
_height, _left, _top, _width, _zclass
 
Fields inherited from class org.zkoss.zk.ui.AbstractComponent
_visible
 
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
CE_BUSY_IGNORE, CE_DUPLICATE_IGNORE, CE_IMPORTANT, CE_NON_DEFERRABLE, CE_REPEAT_IGNORE
 
Constructor Summary
Combobox()
           
Combobox(java.lang.String value)
           
 
Method Summary
 Comboitem appendItem(java.lang.String label)
          Appends an item.
 Comboitem appendItemApi(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).
 Comboitem getItemAtIndex(int index)
          Returns the item at the specified index.
 Comboitem getItemAtIndexApi(int index)
          Returns the item at the specified index.
 int getItemCount()
          Returns the number of items.
 ComboitemRenderer getItemRenderer()
          Returns the renderer to render each row, or null if the default renderer is used.
 java.util.List getItems()
          Returns a 'live' list of all Comboitem.
 ListModel getModel()
          Returns the list model associated with this combobox, or null if this combobox is not associated with any list data model.
 int getSelectedIndex()
          Returns the index of the selected item, or -1 if not selected.
 Comboitem getSelectedItem()
          Returns the selected item.
 Comboitem getSelectedItemApi()
          Returns the selected item.
 java.lang.String getZclass()
          Returns the ZK Cascading Style class(es) 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.
 void onChildAdded(Component child)
          Default: does nothing.
 void onChildRemoved(Component child)
          Default: does nothing.
 void onInitRender(Event data)
          Handles a private event, onInitRender.
 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.
 Comboitem removeItemAtApi(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 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 setItemRenderer(ComboitemRenderer renderer)
          Sets the renderer which is used to render each row if getModel() is not null.
 void setItemRenderer(java.lang.String clsnm)
          Sets the renderer by use of a class name.
 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 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.
 void setSelectedItemApi(Comboitem itemApi)
          Deselects the currently selected items and selects the given item.
 
Methods inherited from class org.zkoss.zul.Textbox
coerceFromString, getRows, getType, getValue, isMultiline, isTabbable, setTabbable, setType, setValue
 
Methods inherited from class org.zkoss.zul.impl.InputElement
checkUserError, clearErrorMessage, clearErrorMessage, getCols, getConstraint, getErrorMessage, getMaxlength, getName, getRawText, getRawValue, getTabindex, getTargetValue, getText, isDisabled, isInplace, isReadonly, isValid, onWrongValue, select, setCols, setConstraint, setConstraint, setDisabled, setInplace, setMaxlength, setName, setRawValue, setReadonly, setSelectedText, setSelectionRange, setTabindex, setText, setValueDirectly, showCustomError, validate
 
Methods inherited from class org.zkoss.zul.impl.XulElement
getAction, getContext, getCtrlKeys, getPopup, getTooltip, setAction, setContext, setContext, setCtrlKeys, setPopup, setPopup, setTooltip, setTooltip
 
Methods inherited from class org.zkoss.zk.ui.HtmlBasedComponent
focus, getDraggable, getDroppable, getHeight, getHflex, getLeft, getSclass, getStyle, getTooltiptext, getTop, getVflex, getWidth, getZindex, getZIndex, newExtraCtrl, setClass, setDraggable, setDroppable, setFocus, setHeight, setHflex, setLeft, setSclass, setStyle, setTooltiptext, setTop, setVflex, setWidth, setZclass, setZindex, setZIndex
 
Methods inherited from class org.zkoss.zk.ui.AbstractComponent
addAnnotation, addAnnotation, addClientEvent, addEventHandler, addEventListener, addForward, addForward, addForward, addForward, addMoved, addScopeListener, addSharedAnnotationMap, addSharedEventHandlerMap, appendChild, applyProperties, beforeChildRemoved, beforeParentChanged, containsVariable, detach, didActivate, didActivate, didDeserialize, didDeserialize, disableClientUpdate, equals, getAnnotatedProperties, getAnnotatedPropertiesBy, getAnnotation, getAnnotation, getAnnotations, getAnnotations, getAttribute, getAttribute, getAttribute, getAttributeOrFellow, getAttributes, getAttributes, getAuService, getChildren, getClientEvents, getDefinition, getDesktop, getEventHandler, getEventHandlerNames, getExtraCtrl, getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, getFirstChild, getId, getLastChild, getListenerIterator, getMold, getNamespace, getNextSibling, getPage, getParent, getPreviousSibling, getRoot, getSpaceOwner, getUuid, getVariable, getWidgetClass, getWidgetListener, getWidgetListenerNames, getWidgetOverride, getWidgetOverrideNames, hasAttribute, hasAttribute, hasAttribute, hasAttributeOrFellow, hasFellow, hasFellow, insertBefore, invalidate, isInvalidated, isListenerAvailable, isVisible, newChildren, onPageAttached, onPageDetached, redraw, redrawChildren, removeAttribute, removeAttribute, removeAttribute, removeChild, removeEventListener, removeForward, removeForward, removeScopeListener, render, render, render, response, sessionDidActivate, sessionWillPassivate, setAttribute, setAttribute, setAttribute, setAuService, setDefinition, setDefinition, setId, setMold, setPage, setPageBefore, setParent, setVariable, setVisible, setWidgetListener, setWidgetOverride, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdateWidgetListener, smartUpdateWidgetOverride, toString, unsetVariable, updateByClient, willPassivate, willPassivate, willSerialize, willSerialize
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.zkoss.zul.api.Textbox
getRows, getValue, setType, setValue
 
Methods inherited from interface org.zkoss.zul.impl.api.InputElement
clearErrorMessage, clearErrorMessage, getCols, getErrorMessage, getMaxlength, getName, getRawText, getRawValue, getTabindex, getText, getType, isDisabled, isMultiline, isReadonly, isValid, select, setCols, setConstraint, setDisabled, setMaxlength, setName, setRawValue, setReadonly, setSelectedText, setSelectionRange, setTabindex, setText
 
Methods inherited from interface org.zkoss.zul.impl.api.XulElement
getAction, getContext, getCtrlKeys, getPopup, getTooltip, setAction, setContext, setContext, setCtrlKeys, setPopup, setPopup, setTooltip, setTooltip
 
Methods inherited from interface org.zkoss.zk.ui.api.HtmlBasedComponent
focus, getHeight, getLeft, getSclass, getStyle, getTooltiptext, getTop, getWidth, getZindex, getZIndex, setDraggable, setDroppable, setFocus, setHeight, setLeft, setSclass, setStyle, setTooltiptext, setTop, setWidth, setZclass, setZindex, setZIndex
 
Methods inherited from interface org.zkoss.zk.ui.Component
addEventListener, addForward, addForward, addForward, addForward, appendChild, applyProperties, containsVariable, detach, getAttribute, getAttribute, getAttributeOrFellow, getAttributes, getAttributes, getAuService, getChildren, getDefinition, getDesktop, getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, getFirstChild, getId, getLastChild, getListenerIterator, getMold, getNamespace, getNextSibling, getPage, getParent, getPreviousSibling, getRoot, getSpaceOwner, getUuid, getVariable, getWidgetClass, getWidgetListener, getWidgetListenerNames, getWidgetOverride, getWidgetOverrideNames, hasAttribute, hasAttribute, hasAttributeOrFellow, hasFellow, hasFellow, insertBefore, invalidate, isInvalidated, isListenerAvailable, isVisible, removeAttribute, removeAttribute, removeChild, removeEventListener, removeForward, removeForward, setAttribute, setAttribute, setAuService, setId, setMold, setPage, setPageBefore, setParent, setVariable, setVisible, setWidgetListener, setWidgetOverride, unsetVariable
 
Methods inherited from interface org.zkoss.zk.ui.ext.Scope
addScopeListener, getAttribute, hasAttribute, removeAttribute, removeScopeListener, setAttribute
 
Methods inherited from interface org.zkoss.zul.ext.Constrainted
getConstraint, setConstraint
 

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 ListModel 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).

Specified by:
getModel in interface Combobox
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.

Specified by:
setModel in interface Combobox
Parameters:
model - the list model to associate, or null to dis-associate any previous model.
Throws:
UiException - if failed to initialize with the model
Since:
3.0.2

getItemRenderer

public ComboitemRenderer getItemRenderer()
Returns the renderer to render each row, or null if the default renderer is used.

Specified by:
getItemRenderer in interface Combobox
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.

Specified by:
setItemRenderer in interface Combobox
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.

Specified by:
setItemRenderer in interface Combobox
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.

Specified by:
isAutodrop in interface Combobox

setAutodrop

public void setAutodrop(boolean autodrop)
Sets whether to automatically drop the list if users is changing this text box.

Specified by:
setAutodrop in interface Combobox

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.

Specified by:
isAutocomplete in interface Combobox

setAutocomplete

public void setAutocomplete(boolean autocomplete)
Sets whether to automatically complete this text box by matching the nearest item (Comboitem.

Specified by:
setAutocomplete in interface Combobox

setOpen

public void setOpen(boolean open)
Drops down or closes the list of combo items (Comboitem.

Specified by:
setOpen in interface Combobox
Since:
3.0.1
See Also:
open(), close()

open

public void open()
Drops down the list of combo items (Comboitem. It is the same as setOpen(true).

Specified by:
open in interface Combobox
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).

Specified by:
close in interface Combobox
Since:
3.0.1

isButtonVisible

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

Default: true.

Specified by:
isButtonVisible in interface Combobox

setButtonVisible

public void setButtonVisible(boolean visible)
Sets whether the button (on the right of the textbox) is visible.

Specified by:
setButtonVisible in interface Combobox

getItems

public java.util.List 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.

Specified by:
getItems in interface Combobox

getItemCount

public int getItemCount()
Returns the number of items.

Specified by:
getItemCount in interface Combobox

getItemAtIndex

public Comboitem getItemAtIndex(int index)
Returns the item at the specified index.


getItemAtIndexApi

public Comboitem getItemAtIndexApi(int index)
Returns the item at the specified index.

Specified by:
getItemAtIndexApi in interface Combobox
Since:
3.5.2

appendItem

public Comboitem appendItem(java.lang.String label)
Appends an item.


appendItemApi

public Comboitem appendItemApi(java.lang.String label)
Appends an item.

Specified by:
appendItemApi in interface Combobox
Since:
3.5.2

removeItemAt

public Comboitem removeItemAt(int index)
Removes the child item in the list box at the given index.

Returns:
the removed item.

removeItemAtApi

public Comboitem removeItemAtApi(int index)
Removes the child item in the list box at the given index.

Specified by:
removeItemAtApi in interface Combobox
Returns:
the removed item.
Since:
3.5.2

getSelectedItem

public Comboitem getSelectedItem()
Returns the selected item.

Since:
2.4.0

getSelectedItemApi

public Comboitem getSelectedItemApi()
Returns the selected item.

Specified by:
getSelectedItemApi in interface Combobox
Since:
3.5.2

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

setSelectedItemApi

public void setSelectedItemApi(Comboitem itemApi)
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.

Specified by:
setSelectedItemApi in interface Combobox
Since:
3.5.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.

Specified by:
setSelectedIndex in interface Combobox
Since:
3.0.2

getSelectedIndex

public int getSelectedIndex()
Returns the index of the selected item, or -1 if not selected.

Specified by:
getSelectedIndex in interface Combobox
Since:
3.0.1

setMultiline

public void setMultiline(boolean multiline)
Description copied from class: Textbox
Sets whether it is multiline.

Specified by:
setMultiline in interface Textbox
Overrides:
setMultiline in class Textbox

setRows

public void setRows(int rows)
Description copied from class: Textbox
Sets the rows.

Specified by:
setRows in interface Textbox
Overrides:
setRows in class Textbox

getZclass

public java.lang.String getZclass()
Description copied from class: HtmlBasedComponent
Returns the ZK Cascading Style class(es) for this component. It usually depends on the implementation of the mold (@{link #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.

Specified by:
getZclass in interface HtmlBasedComponent
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 Render Special Properties

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 occured 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: does nothing.

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: does nothing.

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 is cloned. Notice that the cloned component doesn't belong to any page, nor desktop. It doesn't have parent, either.

Specified by:
clone in interface Component
Overrides:
clone in class AbstractComponent


Copyright © 2005-2009 Potix Corporation. All Rights Reserved. SourceForge.net Logo