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,org.zkoss.zk.ui.Component,org.zkoss.zk.ui.ext.Disable,org.zkoss.zk.ui.ext.Readonly,org.zkoss.zk.ui.ext.Scope,org.zkoss.zk.ui.sys.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 whenOpenEvent.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
ComboitemRendererinstance) to a combobox, such that the combobox will use this renderer to render the data returned byListModel.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 byListModel.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 classCombobox.ExtraCtrlA utility class to implementHtmlBasedComponent.getExtraCtrl().
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringICON_SCLASS-
Fields inherited from class org.zkoss.zul.impl.InputElement
_cols, _value
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ComboitemappendItem(java.lang.String label)Appends an item.voidbeforeChildAdded(org.zkoss.zk.ui.Component newChild, org.zkoss.zk.ui.Component refChild)java.lang.Objectclone()voidclose()Closes the list of combo items (Comboitemif it was dropped down.protected java.lang.StringcoerceToString(java.lang.Object value)Coerces the value passed toTextbox.setValue(java.lang.String).java.lang.StringgetEmptySearchMessage()Returns the empty search message if any.java.lang.ObjectgetExtraCtrl()java.lang.StringgetIconSclass()Returns the iconSclass name of this Combobox.ComboitemgetItemAtIndex(int index)Returns the item at the specified index.intgetItemCount()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 allComboitem.<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.StringgetPopupWidth()org.zkoss.zk.ui.sys.PropertyAccessgetPropertyAccess(java.lang.String prop)intgetSelectedIndex()Returns the index of the selected item, or -1 if not selected.ComboitemgetSelectedItem()Returns the selected item.java.lang.StringgetZclass()booleanisAutocomplete()Returns whether to automatically complete this text box by matching the nearest item (Comboitem.booleanisAutodrop()Returns whether to automatically drop the list if users is changing this text box.booleanisButtonVisible()Returns whether the button (on the right of the textbox) is visible.protected booleanisChildable()Childable.booleanisInstantSelect()Returns true if onSelect event is sent as soon as user selects using keyboard navigation.booleanisOpen()Returns whether this combobox is open.voidonChildAdded(org.zkoss.zk.ui.Component child)voidonChildRemoved(org.zkoss.zk.ui.Component child)voidonInitRender(org.zkoss.zk.ui.event.Event data)Handles a private event, onInitRender.voidonPageAttached(org.zkoss.zk.ui.Page newpage, org.zkoss.zk.ui.Page oldpage)voidonPageDetached(org.zkoss.zk.ui.Page page)voidopen()Drops down the list of combo items (Comboitem.ComboitemremoveItemAt(int index)Removes the child item in the list box at the given index.protected voidrenderProperties(org.zkoss.zk.ui.sys.ContentRenderer renderer)voidservice(org.zkoss.zk.au.AuRequest request, boolean everError)Processes an AU request.voidsessionDidActivate(org.zkoss.zk.ui.Page page)voidsessionWillPassivate(org.zkoss.zk.ui.Page page)voidsetAutocomplete(boolean autocomplete)Sets whether to automatically complete this text box by matching the nearest item (Comboitem.voidsetAutodrop(boolean autodrop)Sets whether to automatically drop the list if users is changing this text box.voidsetButtonVisible(boolean visible)Sets whether the button (on the right of the textbox) is visible.voidsetEmptySearchMessage(java.lang.String msg)Sets empty search message.voidsetIconSclass(java.lang.String iconSclass)Sets the iconSclass name of this Combobox.voidsetInstantSelect(boolean instantSelect)Sets the instantSelect attribute.voidsetItemRenderer(java.lang.String clsnm)Sets the renderer by use of a class name.voidsetItemRenderer(ComboitemRenderer<?> renderer)Sets the renderer which is used to render each row ifgetModel()is not null.voidsetModel(ListModel<?> model)Sets the list model associated with this combobox.voidsetMultiline(boolean multiline)Sets whether it is multiline.voidsetOpen(boolean open)Drops down or closes the list of combo items (Comboitem.voidsetPopupWidth(java.lang.String popupWidth)Sets the width of the popup of this component.voidsetRows(int rows)Sets the rows.voidsetSelectedIndex(int jsel)Deselects the currently selected items and selects the item with the given index.voidsetSelectedItem(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
-
-
-
-
Field Detail
-
ICON_SCLASS
public static final java.lang.String ICON_SCLASS
- See Also:
- Constant Field Values
-
-
Method Detail
-
coerceToString
protected java.lang.String coerceToString(java.lang.Object value)
Description copied from class:TextboxCoerces the value passed toTextbox.setValue(java.lang.String).Default: convert null to an empty string.
- Overrides:
coerceToStringin classTextbox
-
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 implementedListSubModelinterface, you can't use the index of model to find the comboitem bygetItemAtIndex(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:
org.zkoss.zk.ui.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 ifgetModel()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
ListDataEventevent.- Parameters:
renderer- the renderer, or null to use the default.- Throws:
org.zkoss.zk.ui.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.InvocationTargetExceptionSets the renderer by use of a class name. It creates an instance automatically.- Throws:
java.lang.ClassNotFoundExceptionjava.lang.NoSuchMethodExceptionjava.lang.IllegalAccessExceptionjava.lang.InstantiationExceptionjava.lang.reflect.InvocationTargetException- Since:
- 3.0.2
-
onInitRender
public void onInitRender(org.zkoss.zk.ui.event.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 (Comboitemif 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 allComboitem. 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
Comboboxand it is different fromListbox.- 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
Comboboxand it is different fromListbox.- 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:TextboxSets whether it is multiline.- Overrides:
setMultilinein classTextbox
-
setRows
public void setRows(int rows)
Description copied from class:TextboxSets the rows.Note: Not allowed to set rows and height/vflex at the same time
-
getExtraCtrl
public java.lang.Object getExtraCtrl()
- Specified by:
getExtraCtrlin interfaceorg.zkoss.zk.ui.sys.ComponentCtrl- Overrides:
getExtraCtrlin classorg.zkoss.zk.ui.HtmlBasedComponent
-
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
-
renderProperties
protected void renderProperties(org.zkoss.zk.ui.sys.ContentRenderer renderer) throws java.io.IOException- Overrides:
renderPropertiesin classTextbox- Throws:
java.io.IOException
-
service
public void service(org.zkoss.zk.au.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:
servicein interfaceorg.zkoss.zk.ui.sys.ComponentCtrl- Overrides:
servicein classInputElement- Since:
- 5.0.0
-
beforeChildAdded
public void beforeChildAdded(org.zkoss.zk.ui.Component newChild, org.zkoss.zk.ui.Component refChild)- Specified by:
beforeChildAddedin interfaceorg.zkoss.zk.ui.sys.ComponentCtrl- Overrides:
beforeChildAddedin classorg.zkoss.zk.ui.AbstractComponent
-
isChildable
protected boolean isChildable()
Childable.- Overrides:
isChildablein classInputElement
-
onChildAdded
public void onChildAdded(org.zkoss.zk.ui.Component child)
- Specified by:
onChildAddedin interfaceorg.zkoss.zk.ui.sys.ComponentCtrl- Overrides:
onChildAddedin classorg.zkoss.zk.ui.AbstractComponent
-
onChildRemoved
public void onChildRemoved(org.zkoss.zk.ui.Component child)
- Specified by:
onChildRemovedin interfaceorg.zkoss.zk.ui.sys.ComponentCtrl- Overrides:
onChildRemovedin classorg.zkoss.zk.ui.AbstractComponent
-
clone
public java.lang.Object clone()
-
sessionWillPassivate
public void sessionWillPassivate(org.zkoss.zk.ui.Page page)
- Specified by:
sessionWillPassivatein interfaceorg.zkoss.zk.ui.sys.ComponentCtrl- Overrides:
sessionWillPassivatein classorg.zkoss.zk.ui.AbstractComponent
-
sessionDidActivate
public void sessionDidActivate(org.zkoss.zk.ui.Page page)
- Specified by:
sessionDidActivatein interfaceorg.zkoss.zk.ui.sys.ComponentCtrl- Overrides:
sessionDidActivatein classorg.zkoss.zk.ui.AbstractComponent
-
getPropertyAccess
public org.zkoss.zk.ui.sys.PropertyAccess getPropertyAccess(java.lang.String prop)
- Specified by:
getPropertyAccessin interfaceorg.zkoss.zk.ui.sys.ComponentCtrl- Overrides:
getPropertyAccessin classTextbox
-
onPageAttached
public void onPageAttached(org.zkoss.zk.ui.Page newpage, org.zkoss.zk.ui.Page oldpage)- Specified by:
onPageAttachedin interfaceorg.zkoss.zk.ui.sys.ComponentCtrl- Overrides:
onPageAttachedin classorg.zkoss.zk.ui.AbstractComponent
-
onPageDetached
public void onPageDetached(org.zkoss.zk.ui.Page page)
- Specified by:
onPageDetachedin interfaceorg.zkoss.zk.ui.sys.ComponentCtrl- Overrides:
onPageDetachedin classorg.zkoss.zk.ui.AbstractComponent
-
-