Class Listheader
- java.lang.Object
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,Component
,Scope
,ComponentCtrl
public class Listheader extends HeaderElement
The list header which defines the attributes and header of a column of a list box. Its parent must beListhead
.Difference from XUL:
- There is no listcol in ZUL because it is merged into
Listheader
. Reason: easier to write Listbox.
Default
getZclass()
: z-listheader.(since 5.0.0)- Author:
- tomyeh
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.zkoss.zul.impl.LabelImageElement
LabelImageElement.ExtraCtrl
-
Nested classes/interfaces inherited from class org.zkoss.zk.ui.AbstractComponent
AbstractComponent.Children, AbstractComponent.ForwardInfo, AbstractComponent.TargetInfo
-
-
Field Summary
-
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_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 Listheader()
Listheader(java.lang.String label)
Listheader(java.lang.String label, java.lang.String src)
Listheader(java.lang.String label, java.lang.String src, java.lang.String width)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
beforeParentChanged(Component parent)
Default: If parent is null, execute the @Destroy method if any.java.lang.Object
clone()
Clones the component.int
getColumnIndex()
Returns the column index, starting from 0.Listbox
getListbox()
Returns the listbox that this belongs to.int
getMaxlength()
Returns the maximal length of each item's label.java.util.Comparator
getSortAscending()
Returns the ascending sorter, or null if not available.java.util.Comparator
getSortDescending()
Returns the descending sorter, or null if not available.java.lang.String
getSortDirection()
Returns the sort direction.<T> T
getValue()
Returns the value.java.lang.String
getZclass()
Returns the ZK Cascading Style class for this component.boolean
group(boolean ascending)
Groups and sorts the items (Listitem
) based ongetSortAscending()
.void
onGroupLater(SortEvent event)
Internal use only.void
onSort(SortEvent event)
Invokes a sorting action based on aSortEvent
and maintainsgetSortDirection()
.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
setMaxlength(int maxlength)
Sets the maximal length of each item's label.void
setSort(java.lang.String type)
Sets the type of the sorter.void
setSortAscending(java.lang.String clsnm)
Sets the ascending sorter with the class name, or null for no sorter for the ascending order.void
setSortAscending(java.util.Comparator sorter)
Sets the ascending sorter, or null for no sorter for the ascending order.void
setSortDescending(java.lang.String clsnm)
Sets the descending sorter with the class name, or null for no sorter for the descending order.void
setSortDescending(java.util.Comparator sorter)
Sets the descending sorter, or null for no sorter for the descending order.void
setSortDirection(java.lang.String sortDir)
Sets the sort direction.<T> void
setValue(T value)
Sets the value.boolean
sort(boolean ascending)
Sorts the list items based ongetSortAscending()
andgetSortDescending()
, ifgetSortDirection()
doesn't matches the ascending argument.boolean
sort(boolean ascending, boolean force)
Sorts the list items based ongetSortAscending()
andgetSortDescending()
.void
ungroup(boolean ascending)
Ungroups and sorts the items (Listitem
) based on the ascending.protected void
updateByClient(java.lang.String name, java.lang.Object value)
Called when the widget running at the client asks the server to update a value.-
Methods inherited from class org.zkoss.zul.impl.HeaderElement
evalCSSFlex, getAlign, getValign, setAlign, setValign
-
Methods inherited from class org.zkoss.zul.impl.LabelImageElement
getExtraCtrl, getHoverImage, getHoverImageContent, getIconSclass, getIconSclasses, getIconTooltip, getIconTooltips, getImage, getImageContent, getPropertyAccess, isImageAssigned, setHoverImage, setHoverImageContent, setHoverImageContent, setIconSclass, setIconSclasses, setIconTooltip, setIconTooltips, setImage, setImageContent, setImageContent
-
Methods inherited from class org.zkoss.zul.impl.LabelElement
getLabel, renderCrawlable, setLabel
-
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, 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, setHeight, setHeight0, setHeightDirectly, setHflex, setHflex0, setHflexDirectly, setLeft, setLeftDirectly, setRenderdefer, setSclass, setStyle, setTabindex, setTabindex, setTooltiptext, setTop, setTopDirectly, setVflex, 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, beforeChildAdded, beforeChildRemoved, 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, isChildable, isDisabledHostChanged, isInitialized, isInvalidated, isListenerAvailable, isVisible, onChildAdded, onChildRemoved, onPageAttached, onPageDetached, onParentChanged, onWrongValue, query, queryAll, redraw, redrawChildren, removeAttribute, removeAttribute, removeAttribute, removeCallback, removeChild, removeEventListener, removeForward, removeForward, removeRedrawCallback, removeScopeListener, removeShadowRoot, render, render, render, renderPropertiesOnly, replace, response, response, response, service, sessionDidActivate, sessionWillPassivate, 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, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerialize
-
-
-
-
Method Detail
-
getListbox
public Listbox getListbox()
Returns the listbox that this belongs to.
-
getValue
public <T> T getValue()
Returns the value.Default: null.
Note: the value is application dependent, you can place whatever value you want.
- Since:
- 3.6.0
-
setValue
public <T> void setValue(T value)
Sets the value.- Parameters:
value
- the value.Note: the value is application dependent, you can place whatever value you want.
- Since:
- 3.6.0
-
getSortDirection
public java.lang.String getSortDirection()
Returns the sort direction.Default: "natural".
-
setSortDirection
public void setSortDirection(java.lang.String sortDir) throws WrongValueException
Sets the sort direction. This does not sort the data, it only serves as an indicator as to how the list is sorted. (unless the listbox has "autosort" attribute)If you use
sort(boolean)
to sort list items, the sort direction is maintained automatically. If you want to sort it in customized way, you have to set the sort direction manually.- Parameters:
sortDir
- one of "ascending", "descending" and "natural"- Throws:
WrongValueException
-
setSort
public void setSort(java.lang.String type)
Sets the type of the sorter. You might specify either "auto", "auto(FIELD_NAME1[,FIELD_NAME2] ...)"(since 3.5.3), "auto(number)" (since 5.0.6) or "none".If "client" or "client(number)" is specified, the sort functionality will be done by Javascript at client without notifying to server, that is, the order of the component in the row is out of sync.
- "client" : it is treated by a string
- "client(number)" : it is treated by a number
Note: client sorting cannot work in model case. (since 5.0.0)
If "auto" is specified,
setSortAscending(java.util.Comparator)
and/orsetSortDescending(java.util.Comparator)
are called withListitemComparator
, ifgetSortDescending()
and/orgetSortAscending()
are null. If you assigned a comparator to them, it won't be affected. The auto created comparator is case-insensitive.If "auto(FIELD_NAME1, FIELD_NAME2, ...)" is specified,
setSortAscending(java.util.Comparator)
and/orsetSortDescending(java.util.Comparator)
are called withFieldComparator
, ifgetSortDescending()
and/orgetSortAscending()
are null. If you assigned a comparator to them, it won't be affected. The auto created comparator is case-sensitive.If "auto(LOWER(FIELD_NAME))" or "auto(UPPER(FIELD_NAME))" is specified,
setSortAscending(java.util.Comparator)
and/orsetSortDescending(java.util.Comparator)
are called withFieldComparator
, ifgetSortDescending()
and/orgetSortAscending()
are null. If you assigned a comparator to them, it won't be affected. The auto created comparator is case-insensitive.If "auto(number)" is specified,
setSortAscending(java.util.Comparator)
and/orsetSortDescending(java.util.Comparator)
are called withArrayComparator
. Notice that the data must be an array and the number-th element must be comparable (Comparable
).If "none" is specified, both
setSortAscending(java.util.Comparator)
andsetSortDescending(java.util.Comparator)
are called with null. Therefore, no more sorting is available to users for this column.
-
getSortAscending
public java.util.Comparator getSortAscending()
Returns the ascending sorter, or null if not available.
-
setSortAscending
public void setSortAscending(java.util.Comparator sorter)
Sets the ascending sorter, or null for no sorter for the ascending order.- Parameters:
sorter
- the comparator used to sort the ascending order. If you are using the group feature, you can pass an instance ofGroupComparator
to have a better control. If an instance ofGroupComparator
is passed,GroupComparator.compareGroup(D, D)
is used to group elements, andComparator.compare(T, T)
is used to sort elements with a group. Otherwise,Comparator.compare(T, T)
is used to group elements and sort elements within a group.
-
setSortAscending
public void setSortAscending(java.lang.String clsnm) throws java.lang.ClassNotFoundException, java.lang.InstantiationException, java.lang.IllegalAccessException
Sets the ascending sorter with the class name, or null for no sorter for the ascending order.- Throws:
java.lang.ClassNotFoundException
java.lang.InstantiationException
java.lang.IllegalAccessException
-
getSortDescending
public java.util.Comparator getSortDescending()
Returns the descending sorter, or null if not available.
-
setSortDescending
public void setSortDescending(java.util.Comparator sorter)
Sets the descending sorter, or null for no sorter for the descending order.- Parameters:
sorter
- the comparator used to sort the ascending order. If you are using the group feature, you can pass an instance ofGroupComparator
to have a better control. If an instance ofGroupComparator
is passed,GroupComparator.compareGroup(D, D)
is used to group elements, andComparator.compare(T, T)
is used to sort elements with a group. Otherwise,Comparator.compare(T, T)
is used to group elements and sort elements within a group.
-
setSortDescending
public void setSortDescending(java.lang.String clsnm) throws java.lang.ClassNotFoundException, java.lang.InstantiationException, java.lang.IllegalAccessException
Sets the descending sorter with the class name, or null for no sorter for the descending order.- Throws:
java.lang.ClassNotFoundException
java.lang.InstantiationException
java.lang.IllegalAccessException
-
getMaxlength
public int getMaxlength()
Returns the maximal length of each item's label.Default: 0 (no limit).
-
setMaxlength
public void setMaxlength(int maxlength)
Sets the maximal length of each item's label.Default: 0 (no limit).
Notice that maxlength will be applied to this header and all listcell of the same column.
-
getColumnIndex
public int getColumnIndex()
Returns the column index, starting from 0.
-
sort
public boolean sort(boolean ascending)
Sorts the list items based ongetSortAscending()
andgetSortDescending()
, ifgetSortDirection()
doesn't matches the ascending argument.It checks
getSortDirection()
to see whether sorting is required, and updatesetSortDirection(java.lang.String)
after sorted. For example, ifgetSortDirection()
returns "ascending" and the ascending argument is false, nothing happens. To enforce the sorting, you can invokesetSortDirection(java.lang.String)
with "natural" before invoking this method. Alternatively, you can invokesort(boolean, boolean)
instead.It sorts the listitem by use of
Components.sort(java.util.List<? extends org.zkoss.zk.ui.Component>, java.util.Comparator<? super org.zkoss.zk.ui.Component>)
data (i.e.,Grid.getModel()
is null).On the other hand, it invokes
Sortable.sort(java.util.Comparator<T>, boolean)
to sort the list item, if live data (i.e.,Listbox.getModel()
is not null). In other words, if you use the live data, you have to implementSortable
to sort the live data explicitly.- Parameters:
ascending
- whether to usegetSortAscending()
. If the corresponding comparator is not set, it returns false and does nothing.- Returns:
- whether the list items are sorted.
- Throws:
UiException
- ifListbox.getModel()
is not null butSortable
is not implemented.
-
sort
public boolean sort(boolean ascending, boolean force)
Sorts the list items based ongetSortAscending()
andgetSortDescending()
.- Parameters:
ascending
- whether to usegetSortAscending()
. If the corresponding comparator is not set, it returns false and does nothing.force
- whether to enforce the sorting no matter what the sort direction (getSortDirection()
) is. If false, this method is the same assort(boolean)
.- Returns:
- whether the rows are sorted.
-
group
public boolean group(boolean ascending)
Groups and sorts the items (Listitem
) based ongetSortAscending()
. If the corresponding comparator is not set, it returns false and does nothing.- Parameters:
ascending
- whether to usegetSortAscending()
. If the corresponding comparator is not set, it returns false and does nothing.- Returns:
- whether the rows are grouped.
- Since:
- 6.5.0
-
onSort
public void onSort(SortEvent event)
Invokes a sorting action based on aSortEvent
and maintainsgetSortDirection()
.- Since:
- 6.5.0
-
onGroupLater
public void onGroupLater(SortEvent event)
Internal use only.- Since:
- 6.5.0
-
ungroup
public void ungroup(boolean ascending)
Ungroups and sorts the items (Listitem
) based on the ascending. If the corresponding comparator is not set, it returns false and does nothing.- Parameters:
ascending
- whether to usegetSortAscending()
. If the corresponding comparator is not set, it returns false and does nothing.- Since:
- 6.5.0
-
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 ofHtmlBasedComponent.getZclass()
. Once it is changed, the default style won't be applied at all. If you want to perform small adjustments, useHtmlBasedComponent.setSclass(java.lang.String)
instead.- Overrides:
getZclass
in classHtmlBasedComponent
- See Also:
HtmlBasedComponent.getSclass()
-
beforeParentChanged
public void beforeParentChanged(Component parent)
Description copied from class:AbstractComponent
Default: If parent is null, execute the @Destroy method if any.- Specified by:
beforeParentChanged
in interfaceComponentCtrl
- Overrides:
beforeParentChanged
in classAbstractComponent
- Parameters:
parent
- the new parent. If null, it means detachment.- See Also:
ComponentCtrl.beforeParentChanged(org.zkoss.zk.ui.Component)
-
service
public void service(AuRequest request, boolean everError)
Processes an AU request.Default: in addition to what are handled by its superclass, it also handles onSort.
- Specified by:
service
in interfaceComponentCtrl
- Overrides:
service
in classHtmlBasedComponent
everError
- whether any error ever occurred before processing this request.- Since:
- 6.5.0
- See Also:
AbstractComponent.setAuService(org.zkoss.zk.au.AuService)
-
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.- Overrides:
renderProperties
in classHeaderElement
- Throws:
java.io.IOException
-
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 interfaceComponent
- Overrides:
clone
in classLabelImageElement
- Returns:
- the new component. Notice that it doesn't belong to any page, nor desktop. It doesn't have a parent, either.
-
updateByClient
protected void updateByClient(java.lang.String name, java.lang.Object value)
Description copied from class:AbstractComponent
Called when the widget running at the client asks the server to update a value. The update is caused by an AU request namedsetAttr
(by invoking zk.Widget's smartUpdate at client).By default, it does nothing but log a warning message, since it is not safe to allow the client to update a field arbitrary.
However, if you'd like to allow the update for a particular component you could do one of the following
- For component developers: override this method to update the field
directly. For example,
protected void updateByClient(String name, Object value) { if ("disabled".equals(name)) setDisabled(name, ((Boolean)value).booleanValue()); else super.updateByClient(name, value);
- For application developers: set an attribute called
org.zkoss.zk.ui.updateByClient
to be true. Then, this method will use reflection to find out the setter to update the value. Nothing happens if the method is not found.
Notice: this method will invoke
AbstractComponent.disableClientUpdate(boolean)
to disable any update to the client, when calling the setter.If you want to enable the client update for all instances of a given component (though not recommended for the security reason), you could refer to here.
See also zk.Widget.smartUpdate().
- Overrides:
updateByClient
in classAbstractComponent
- For component developers: override this method to update the field
directly. For example,
-
-