public class Combobox extends Textbox
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).
Comboitem
,
Serialized FormModifier and Type | Class and Description |
---|---|
protected class |
Combobox.ExtraCtrl
A utility class to implement
HtmlBasedComponent.getExtraCtrl() . |
AbstractComponent.Children
_value
_zclass
APPLICATION_SCOPE, COMPONENT_SCOPE, DESKTOP_SCOPE, PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE, SPACE_SCOPE
CE_BUSY_IGNORE, CE_DUPLICATE_IGNORE, CE_IMPORTANT, CE_NON_DEFERRABLE, CE_REPEAT_IGNORE
Constructor and Description |
---|
Combobox() |
Combobox(java.lang.String value) |
Modifier and Type | Method and 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.Object |
getExtraCtrl()
Returns the client control for this component.
|
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.
|
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(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.
|
boolean |
isOpen()
Returns whether this combobox is open.
|
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.
|
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 |
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.
|
coerceFromString, getRows, getType, getValue, isMultiline, isTabbable, setTabbable, setType, setValue
checkUserError, clearErrorMessage, clearErrorMessage, getCols, getConstraint, getErrorMessage, getInstant, getMaxlength, getName, getPlaceholder, getRawText, getRawValue, getTabindex, getTargetValue, getText, isDisabled, isInplace, isInstant, isReadonly, isValid, marshall, onWrongValue, select, setCols, setConstraint, setConstraint, setDisabled, setErrorMessage, setInplace, setInstant, setMaxlength, setName, setPlaceholder, setRawValue, setReadonly, setSelectedText, setSelectionRange, setTabindex, setText, setValueDirectly, showCustomError, unmarshall, validate
getContext, getCtrlKeys, getPopup, getTooltip, setContext, setContext, setCtrlKeys, setPopup, setPopup, setTooltip, setTooltip
focus, getAction, getDraggable, getDroppable, getHeight, getHflex, getLeft, getRenderdefer, getSclass, getStyle, getTooltiptext, getTop, getVflex, getWidth, getZindex, getZIndex, setAction, setClass, setDraggable, setDroppable, setFocus, setHeight, setHeightDirectly, setHflex, setHflexDirectly, setLeft, setLeftDirectly, setRenderdefer, setSclass, setStyle, setTooltiptext, setTop, setTopDirectly, setVflex, setWidth, setWidthDirectly, setZclass, setZindex, setZIndex, setZIndexDirectly
addAnnotation, addAnnotation, addClientEvent, addEventHandler, addEventListener, addEventListener, addForward, addForward, addForward, addForward, addMoved, addRedrawCallback, addScopeListener, addShadowRoot, addShadowRootBefore, addSharedEventHandlerMap, appendChild, applyProperties, beforeChildRemoved, beforeParentChanged, detach, didActivate, didActivate, didDeserialize, didDeserialize, disableBindingAnnotation, disableClientUpdate, enableBindingAnnotation, equals, getAnnotatedProperties, getAnnotatedPropertiesBy, getAnnotation, getAnnotation, getAnnotations, getAnnotations, getAnnotations, getAttribute, getAttribute, getAttribute, getAttributeOrFellow, getAttributes, getAttributes, getAuService, getAutag, getChildren, getClientAttribute, getClientDataAttribute, getClientEvents, getDefaultMold, getDefinition, getDesktop, getEventHandler, getEventHandlerNames, getEventListenerMap, getEventListeners, getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, getFirstChild, getId, getLastChild, getListenerIterator, getMold, getNextSibling, getPage, getParent, getPreviousSibling, getRedrawCallback, getRoot, getShadowRoots, getShadowVariable, getShadowVariable0, getSpaceOwner, getSpecialRendererOutput, getStubonly, getSubBindingAnnotationCount, getTemplate, getTemplateNames, getUuid, getWidgetAttribute, getWidgetAttributeNames, getWidgetClass, getWidgetListener, getWidgetListenerNames, getWidgetOverride, getWidgetOverrideNames, hasAttribute, hasAttribute, hasAttribute, hasAttributeOrFellow, hasBindingAnnotation, hasFellow, hasFellow, hasSubBindingAnnotation, insertBefore, invalidate, isInvalidated, isListenerAvailable, isVisible, onPageAttached, onPageDetached, query, queryAll, redraw, redrawChildren, removeAttribute, removeAttribute, removeAttribute, removeChild, removeEventListener, removeForward, removeForward, removeRedrawCallback, removeScopeListener, removeShadowRoot, render, render, render, 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, setWidgetAttribute, setWidgetClass, setWidgetListener, setWidgetOverride, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdateWidgetListener, smartUpdateWidgetOverride, toString, updateByClient, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerialize
public Combobox()
public Combobox(java.lang.String value) throws WrongValueException
WrongValueException
protected java.lang.String coerceToString(java.lang.Object value)
Textbox
Textbox.setValue(java.lang.String)
.
Default: convert null to an empty string.
coerceToString
in class Textbox
public <T> ListModel<T> getModel()
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)
.
ListSubModel.getSubModel(Object, int)
public void setModel(ListModel<?> model)
model
- the list model to associate, or null to dissociate
any previous model.UiException
- if failed to initialize with the modelpublic <T> ComboitemRenderer<T> getItemRenderer()
public void setItemRenderer(ComboitemRenderer<?> renderer)
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.
renderer
- the renderer, or null to use the default.UiException
- if failed to initialize with the modelpublic void setItemRenderer(java.lang.String clsnm) throws java.lang.ClassNotFoundException, java.lang.NoSuchMethodException, java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.reflect.InvocationTargetException
java.lang.ClassNotFoundException
java.lang.NoSuchMethodException
java.lang.IllegalAccessException
java.lang.InstantiationException
java.lang.reflect.InvocationTargetException
public void onInitRender(Event data)
public boolean isAutodrop()
Default: false.
public void setAutodrop(boolean autodrop)
public boolean isAutocomplete()
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.
public void setAutocomplete(boolean autocomplete)
Comboitem
.public boolean isOpen()
Default: false.
public void setOpen(boolean open)
Comboitem
.
only works while visiblepublic void open()
Comboitem
.
It is the same as setOpen(true).public void close()
Comboitem
if it was
dropped down.
It is the same as setOpen(false).public boolean isButtonVisible()
Default: true.
public void setButtonVisible(boolean visible)
public java.util.List<Comboitem> getItems()
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.
public int getItemCount()
public Comboitem getItemAtIndex(int index)
public Comboitem appendItem(java.lang.String label)
public Comboitem removeItemAt(int index)
public Comboitem getSelectedItem()
public void setSelectedItem(Comboitem 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
.
public void setSelectedIndex(int jsel)
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
.
public int getSelectedIndex()
public void setMultiline(boolean multiline)
Textbox
setMultiline
in class Textbox
public void setRows(int rows)
Textbox
public java.lang.Object getExtraCtrl()
HtmlBasedComponent
Default: creates an instance of HtmlBasedComponent.ExtraCtrl
.
getExtraCtrl
in interface ComponentCtrl
getExtraCtrl
in class HtmlBasedComponent
Cropper
.ComponentCtrl.getExtraCtrl()
public java.lang.String getZclass()
HtmlBasedComponent
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.
getZclass
in class Textbox
HtmlBasedComponent.getSclass()
protected void renderProperties(ContentRenderer renderer) throws java.io.IOException
HtmlBasedComponent
renderProperties
in class Textbox
java.io.IOException
public void service(AuRequest request, boolean everError)
Default: in addition to what are handled by InputElement.service(org.zkoss.zk.au.AuRequest, boolean)
,
it also handles onOpen and onSelect.
service
in interface ComponentCtrl
service
in class InputElement
everError
- whether any error ever occurred before
processing this request.AbstractComponent.setAuService(org.zkoss.zk.au.AuService)
public void beforeChildAdded(Component newChild, Component refChild)
AbstractComponent
beforeChildAdded
in interface ComponentCtrl
beforeChildAdded
in class AbstractComponent
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.ComponentCtrl.beforeChildAdded(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
protected boolean isChildable()
isChildable
in class InputElement
public void onChildAdded(Component child)
AbstractComponent
onChildAdded
in interface ComponentCtrl
onChildAdded
in class AbstractComponent
ComponentCtrl.onChildAdded(org.zkoss.zk.ui.Component)
public void onChildRemoved(Component child)
AbstractComponent
onChildRemoved
in interface ComponentCtrl
onChildRemoved
in class AbstractComponent
ComponentCtrl.onChildRemoved(org.zkoss.zk.ui.Component)
public java.lang.Object clone()
Component
public void sessionWillPassivate(Page page)
ComponentCtrl
Note: only root components are notified by this method.
sessionWillPassivate
in interface ComponentCtrl
sessionWillPassivate
in class AbstractComponent
public void sessionDidActivate(Page page)
ComponentCtrl
Note: only root components are notified by this method.
sessionDidActivate
in interface ComponentCtrl
sessionDidActivate
in class AbstractComponent
public PropertyAccess getPropertyAccess(java.lang.String prop)
ComponentCtrl
getPropertyAccess
in interface ComponentCtrl
getPropertyAccess
in class Textbox
prop
- the name of the propertyCopyright © 2005-2011 Potix Corporation. All Rights Reserved.