|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.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
public class Combobox
A combo box.
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).
Comboitem,
Serialized Form| Nested Class Summary | |
|---|---|
protected class |
Combobox.ExtraCtrl
A utility class to implement AbstractComponent.getExtraCtrl(). |
| Nested classes/interfaces inherited from class org.zkoss.zk.ui.AbstractComponent |
|---|
AbstractComponent.Children |
| Field Summary |
|---|
| Fields inherited from class org.zkoss.zk.ui.HtmlBasedComponent |
|---|
_zclass, RS_NO_DISPLAY, RS_NO_HEIGHT, RS_NO_WIDTH |
| 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 |
| 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. |
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 |
getImage()
Deprecated. As of release 3.5.0 |
java.lang.String |
getInnerAttrs()
Generates the Client-Side-Action attributes to the interior tag. |
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. |
java.lang.String |
getOuterAttrs()
Returns the exterior attributes for generating the enclosing HTML tag; never return null. |
protected int |
getRealStyleFlags()
Returns RS_NO_WIDTH|RS_NO_HEIGHT. |
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 |
insertBefore(Component newChild,
Component refChild)
Inserts a child before the reference child. |
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. |
boolean |
isChildable()
Childable. |
protected java.lang.Object |
newExtraCtrl()
Used by AbstractComponent.getExtraCtrl() to create a client control. |
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. |
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 |
setImage(java.lang.String img)
Deprecated. As of release 3.5.0 |
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. |
void |
setText(java.lang.String value)
Sets the value in the String format. |
| 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, getAreaText, getCols, getConstraint, getErrorMessage, getMaxlength, getName, getRawText, getRawValue, getTabindex, getTargetValue, getText, isDisabled, isReadonly, isValid, onWrongValue, select, setCols, setConstraint, setConstraint, setDisabled, setMaxlength, setName, setRawValue, setReadonly, setSelectedText, setSelectionRange, setTabindex, setValueDirectly, shallServerFormat, showCustomError, validate |
| Methods inherited from class org.zkoss.zul.impl.XulElement |
|---|
getAction, getActionAttrs, getAllOnClickAttrs, getContext, getCtrlKeys, getPopup, getTooltip, setAction, setContext, setContext, setCtrlKeys, setPopup, setPopup, setTooltip, setTooltip |
| Methods inherited from class org.zkoss.zk.ui.HtmlBasedComponent |
|---|
focus, getAllOnClickAttrs, getDraggable, getDroppable, getHeight, getLeft, getMoldSclass, getRealSclass, getRealStyle, getSclass, getStyle, getTooltiptext, getTop, getWidth, getZindex, getZIndex, redraw, setClass, setDraggable, setDroppable, setFocus, setHeight, setLeft, setMoldSclass, setSclass, setStyle, setTooltiptext, setTop, setWidth, setZclass, setZindex, setZIndex |
| 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, getAreaText, getCols, getErrorMessage, getMaxlength, getName, getRawText, getRawValue, getTabindex, getText, getType, isDisabled, isMultiline, isReadonly, isValid, select, setCols, setConstraint, setDisabled, setMaxlength, setName, setRawValue, setReadonly, setSelectedText, setSelectionRange, setTabindex |
| 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.zul.ext.Constrainted |
|---|
getConstraint, setConstraint |
| Constructor Detail |
|---|
public Combobox()
public Combobox(java.lang.String value)
throws WrongValueException
WrongValueException| Method Detail |
|---|
protected java.lang.String coerceToString(java.lang.Object value)
TextboxTextbox.setValue(java.lang.String).
Default: convert null to an empty string.
coerceToString in class Textboxpublic ListModel 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).
getModel in interface ComboboxListSubModel.getSubModel(Object, int)public void setModel(ListModel model)
setModel in interface Comboboxmodel - the list model to associate, or null to dis-associate
any previous model.
UiException - if failed to initialize with the modelpublic ComboitemRenderer getItemRenderer()
getItemRenderer in interface Comboboxpublic 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.
setItemRenderer in interface Comboboxrenderer - the renderer, or null to use the default.
UiException - if failed to initialize with the model
public void setItemRenderer(java.lang.String clsnm)
throws java.lang.ClassNotFoundException,
java.lang.NoSuchMethodException,
java.lang.IllegalAccessException,
java.lang.InstantiationException,
java.lang.reflect.InvocationTargetException
setItemRenderer in interface Comboboxjava.lang.ClassNotFoundException
java.lang.NoSuchMethodException
java.lang.IllegalAccessException
java.lang.InstantiationException
java.lang.reflect.InvocationTargetExceptionpublic void onInitRender(Event data)
public boolean isAutodrop()
Default: false.
isAutodrop in interface Comboboxpublic void setAutodrop(boolean autodrop)
setAutodrop in interface Comboboxpublic boolean isAutocomplete()
Comboitem.
Default: false.
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.
Note: this feature is reserved and not yet implemented. 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.
isAutocomplete in interface Comboboxpublic void setAutocomplete(boolean autocomplete)
Comboitem.
setAutocomplete in interface Comboboxpublic void setOpen(boolean open)
Comboitem.
setOpen in interface Comboboxopen(),
close()public void open()
Comboitem.
It is the same as setOpen(true).
open in interface Comboboxpublic void close()
Comboitem if it was
dropped down.
It is the same as setOpen(false).
close in interface Comboboxpublic boolean isButtonVisible()
Default: true.
isButtonVisible in interface Comboboxpublic void setButtonVisible(boolean visible)
setButtonVisible in interface Comboboxpublic java.lang.String getImage()
Default: null. (since 3.5.0)
public void setImage(java.lang.String img)
img - the URI of the button image.public java.util.List 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.
getItems in interface Comboboxpublic int getItemCount()
getItemCount in interface Comboboxpublic Comboitem getItemAtIndex(int index)
public Comboitem getItemAtIndexApi(int index)
getItemAtIndexApi in interface Comboboxpublic Comboitem appendItem(java.lang.String label)
public Comboitem appendItemApi(java.lang.String label)
appendItemApi in interface Comboboxpublic Comboitem removeItemAt(int index)
public Comboitem removeItemAtApi(int index)
removeItemAtApi in interface Comboboxpublic Comboitem getSelectedItem()
public Comboitem getSelectedItemApi()
getSelectedItemApi in interface Comboboxpublic 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 setSelectedItemApi(Comboitem itemApi)
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.
setSelectedItemApi in interface Comboboxpublic 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.
setSelectedIndex in interface Comboboxpublic int getSelectedIndex()
getSelectedIndex in interface Combobox
public void setText(java.lang.String value)
throws WrongValueException
InputElementTextbox.setValue(java.lang.String) and
Intbox.setValue(java.lang.Integer).
It invokes InputElement.coerceFromString(java.lang.String) fisrt and then InputElement.validate(java.lang.Object).
Derives might override them for type conversion and special
validation.
setText in interface InputElementsetText in class InputElementvalue - the value; If null, it is considered as empty.
WrongValueExceptionpublic void setMultiline(boolean multiline)
Textbox
setMultiline in interface TextboxsetMultiline in class Textboxpublic void setRows(int rows)
Textbox
setRows in interface TextboxsetRows in class Textboxpublic java.lang.String getZclass()
HtmlBasedComponentDefault: 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 interface HtmlBasedComponentgetZclass in class TextboxHtmlBasedComponent.getSclass(),
HtmlBasedComponent.getRealSclass()public java.lang.String getOuterAttrs()
HtmlBasedComponentUsed only by component developers.
Default: Generates the tooltip text, style, sclass, draggable
and droppable attribute if necessary.
In other words, the corresponding attribute is generated if
HtmlBasedComponent.getTooltiptext(), HtmlBasedComponent.getRealStyle(),
HtmlBasedComponent.getSclass(), HtmlBasedComponent.getDraggable(), HtmlBasedComponent.getDroppable()
are defined.
You have to call both HtmlBasedComponent.getOuterAttrs() and
HtmlBasedComponent.getInnerAttrs() to generate complete attributes.
For simple components that all attributes are put on the outest HTML element, all you need is as follows.
<xx id="${self.uuid}"${self.outerAttrs}${self.innerAttrs}>
If you want to put attributes in a nested HTML element, you
shall use the following pattern. Notice: if HtmlBasedComponent.getInnerAttrs()
in a different tag, the tag must be named with "${self.uuid}!real".
<xx id="${self.uuid}"${self.outerAttrs}>
<yy id="${self.uuid}!real"${self.innerAttrs}>...
Note: This class handles non-deferrable event listeners automatically.
However, you have to invoke AbstractComponent.appendAsapAttr(java.lang.StringBuffer, java.lang.String) for each event
the component handles in HtmlBasedComponent.getOuterAttrs() as follows.
appendAsapAttr(sb, Events.ON_OPEN);
appendAsapAttr(sb, Events.ON_CHANGE);
Theorectically, you could put any attributes in either
HtmlBasedComponent.getInnerAttrs() or HtmlBasedComponent.getOuterAttrs().
However, zkau.js assumes all attributes are put at the outer one.
If you want something different, you have to provide your own
setAttr (refer to how checkbox is implemented).
getOuterAttrs in class Textboxpublic java.lang.String getInnerAttrs()
XulElement
getInnerAttrs in class Textboxprotected int getRealStyleFlags()
getRealStyleFlags in class HtmlBasedComponent
public boolean insertBefore(Component newChild,
Component refChild)
ComponentYou could use Component.setParent(org.zkoss.zk.ui.Component) or Component.appendChild(org.zkoss.zk.ui.Component)
instead of this method, unless
you want to control where to put the child.
Note: Component.setParent(org.zkoss.zk.ui.Component) always calls back Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and/or Component.removeChild(org.zkoss.zk.ui.Component),
while Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component) and Component.removeChild(org.zkoss.zk.ui.Component)
always calls back Component.setParent(org.zkoss.zk.ui.Component),
if the parent is changed. Thus, you don't need to override
both Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component) and Component.setParent(org.zkoss.zk.ui.Component), if you want
to customize the behavior.
insertBefore in interface ComponentinsertBefore in class AbstractComponentnewChild - the new child to be inserted.refChild - the child before which you want the new child
being inserted. If null, the new child is append to the end.
public boolean isChildable()
isChildable in interface ComponentisChildable in class InputElementpublic void onChildAdded(Component child)
AbstractComponent
onChildAdded in interface ComponentCtrlonChildAdded in class AbstractComponentComponentCtrl.onChildAdded(org.zkoss.zk.ui.Component)public void onChildRemoved(Component child)
AbstractComponent
onChildRemoved in interface ComponentCtrlonChildRemoved in class AbstractComponentComponentCtrl.onChildRemoved(org.zkoss.zk.ui.Component)public java.lang.Object clone()
Component
clone in interface Componentclone in class AbstractComponentprotected java.lang.Object newExtraCtrl()
HtmlBasedComponentAbstractComponent.getExtraCtrl() to create a client control.
It is used only by component developers.
Defaut: creates an instance of HtmlBasedComponent.ExtraCtrl.
newExtraCtrl in class InputElement
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||