org.zkoss.zul
Class Listheader

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.LabelElement
                  extended by org.zkoss.zul.impl.LabelImageElement
                      extended by org.zkoss.zul.impl.HeaderElement
                          extended by org.zkoss.zul.Listheader
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, HtmlBasedComponent, Component, Scope, ComponentCtrl, Listheader, HeaderElement, LabelElement, LabelImageElement, XulElement

public class Listheader
extends HeaderElement
implements Listheader

The list header which defines the attributes and header of a columen of a list box. Its parent must be Listhead.

Difference from XUL:

  1. There is no listcol in ZUL because it is merged into Listheader. Reason: easier to write Listbox.

Default getZclass(): z-list-header.(since 3.5.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
 
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
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
 java.lang.Object clone()
          Clones the component.
 java.lang.String getColumnHtmlPrefix()
          Returns the prefix of the first column (in HTML tags), null if this is not first column.
 int getColumnIndex()
          Returns the column index, starting from 0.
 Listbox getListbox()
          Returns the listbox that this belongs to.
 Listbox getListboxApi()
          Returns the listbox that this belongs to.
 int getMaxlength()
          Returns the maximal length of each item's label.
 java.lang.String getOuterAttrs()
          Returns the exterior attributes for generating the enclosing HTML tag; never return null.
protected  java.lang.String getRealSclass()
          Returns the real style class that will be generated to the client (when HtmlBasedComponent.getOuterAttrs() is called).
 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.
 java.lang.Object getValue()
          Returns the value.
 java.lang.String getZclass()
          Returns the ZK Cascading Style class(es) for this component.
protected  void invalidateWhole()
          Invalidates the whole box.
 void onSort()
          It invokes sort(boolean) to sort list items and maintain getSortDirection().
 void setMaxlength(int maxlength)
          Sets the maximal length of each item's label.
 void setParent(Component parent)
          Sets the parent component.
 void setSort(java.lang.String type)
          Sets the type of the sorter.
 void setSortAscending(java.util.Comparator sorter)
          Sets the ascending sorter, or null for no sorter for the ascending order.
 void setSortAscending(java.lang.String clsnm)
          Sets the ascending sorter with the class name, or null for no sorter for the ascending order.
 void setSortDescending(java.util.Comparator sorter)
          Sets the descending sorter, or null for no sorter for the descending 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 setSortDirection(java.lang.String sortDir)
          Sets the sort direction.
 void setValue(java.lang.Object value)
          Sets the value.
 boolean sort(boolean ascending)
          Sorts the list items based on getSortAscending() and getSortDescending(), if getSortDirection() doesn't matches the ascending argument.
 boolean sort(boolean ascending, boolean force)
          Sorts the list items based on getSortAscending() and getSortDescending().
 
Methods inherited from class org.zkoss.zul.impl.HeaderElement
getAlign, getColAttrs, getValign, setAlign, setValign, setVisible
 
Methods inherited from class org.zkoss.zul.impl.LabelImageElement
getEncodedImageURL, getHoverImage, getImage, getImageContent, getImgTag, getImgTag, getSrc, isImageAssigned, newExtraCtrl, setHoverImage, setHoverImageContent, setHoverImageContent, setImage, setImageContent, setImageContent, setSrc
 
Methods inherited from class org.zkoss.zul.impl.LabelElement
getLabel, setLabel
 
Methods inherited from class org.zkoss.zul.impl.XulElement
getAction, getActionAttrs, getAllOnClickAttrs, getContext, getCtrlKeys, getInnerAttrs, 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, getRealStyle, getRealStyleFlags, 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 org.zkoss.zk.ui.AbstractComponent
addAnnotation, addAnnotation, addEventHandler, addEventListener, addForward, addForward, addForward, addForward, addMoved, addSharedAnnotationMap, addSharedEventHandlerMap, appendAsapAttr, appendAsapAttr, appendChild, applyProperties, containsVariable, detach, equals, getAnnotatedProperties, getAnnotatedPropertiesBy, getAnnotation, getAnnotation, getAnnotations, getAnnotations, getAttribute, getAttribute, getAttributes, getAttributes, getChildren, getCommand, getDefinition, getDesktop, getEventHandler, getEventHandlerNames, getExtraCtrl, getFellow, getFellowIfAny, getFellows, getFirstChild, getId, getLastChild, getListenerIterator, getMold, getMoldURI, getNamespace, getNextSibling, getPage, getParent, getPreviousSibling, getRoot, getSpaceOwner, getUuid, getVariable, hasFellow, insertBefore, invalidate, isAsapRequired, isChildable, isInvalidated, isListenerAvailable, isVisible, newChildren, onChildAdded, onChildRemoved, onDrawNewChild, onPageAttached, onPageDetached, onWrongValue, removeAttribute, removeAttribute, removeChild, removeEventListener, removeForward, removeForward, response, sessionDidActivate, sessionWillPassivate, setAttribute, setAttribute, setComponentDefinition, setId, setMold, setPage, setPageBefore, setVariable, smartUpdate, smartUpdate, smartUpdate, smartUpdateDeferred, smartUpdateValues, toString, unsetVariable
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.zkoss.zul.impl.api.HeaderElement
getAlign, getValign, setAlign, setValign
 
Methods inherited from interface org.zkoss.zul.impl.api.LabelImageElement
getHoverImage, getImage, getImageContent, setHoverImage, setHoverImageContent, setHoverImageContent, setImage, setImageContent, setImageContent
 
Methods inherited from interface org.zkoss.zul.impl.api.LabelElement
getLabel, setLabel
 
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, getAttributes, getAttributes, getChildren, getDefinition, getDesktop, getFellow, getFellowIfAny, getFellows, getFirstChild, getId, getLastChild, getListenerIterator, getMold, getNamespace, getNextSibling, getPage, getParent, getPreviousSibling, getRoot, getSpaceOwner, getUuid, getVariable, insertBefore, invalidate, isChildable, isInvalidated, isListenerAvailable, isVisible, redraw, removeAttribute, removeAttribute, removeChild, removeEventListener, removeForward, removeForward, setAttribute, setAttribute, setId, setMold, setPage, setPageBefore, setVariable, setVisible, unsetVariable
 

Constructor Detail

Listheader

public Listheader()

Listheader

public Listheader(java.lang.String label)

Listheader

public Listheader(java.lang.String label,
                  java.lang.String src)

Listheader

public Listheader(java.lang.String label,
                  java.lang.String src,
                  java.lang.String width)
Method Detail

getListbox

public Listbox getListbox()
Returns the listbox that this belongs to.


getListboxApi

public Listbox getListboxApi()
Returns the listbox that this belongs to.

Specified by:
getListboxApi in interface Listheader
Since:
3.5.2

getValue

public java.lang.Object 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 void setValue(java.lang.Object 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".

Specified by:
getSortDirection in interface Listheader

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.

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 manaully.

Specified by:
setSortDirection in interface Listheader
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.6.0) or "none".

If "auto" is specified, setSortAscending(java.util.Comparator) and/or setSortDescending(java.util.Comparator) are called with ListitemComparator, if getSortDescending() and/or getSortAscending() 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/or setSortDescending(java.util.Comparator) are called with FieldComparator, if getSortDescending() and/or getSortAscending() are null. If you assigned a comparator to them, it won't be affected. The auto created comparator is case-insensitive.

If "none" is specified, both setSortAscending(java.util.Comparator) and setSortDescending(java.util.Comparator) are called with null. Therefore, no more sorting is available to users for this column.

Specified by:
setSort in interface Listheader

getSortAscending

public java.util.Comparator getSortAscending()
Returns the ascending sorter, or null if not available.

Specified by:
getSortAscending in interface Listheader

setSortAscending

public void setSortAscending(java.util.Comparator sorter)
Sets the ascending sorter, or null for no sorter for the ascending order.

Specified by:
setSortAscending in interface Listheader
Parameters:
sorter - the comparator used to sort the ascending order. If you are using the group feature, you can pass an instance of GroupComparator to have a better control. If an instance of GroupComparator is passed, GroupComparator.compareGroup(java.lang.Object, java.lang.Object) is used to group elements, and Comparator.compare(java.lang.Object, java.lang.Object) is used to sort elements with a group. Otherwise, Comparator.compare(java.lang.Object, java.lang.Object) 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.

Specified by:
setSortAscending in interface Listheader
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.

Specified by:
getSortDescending in interface Listheader

setSortDescending

public void setSortDescending(java.util.Comparator sorter)
Sets the descending sorter, or null for no sorter for the descending order.

Specified by:
setSortDescending in interface Listheader
Parameters:
sorter - the comparator used to sort the ascending order. If you are using the group feature, you can pass an instance of GroupComparator to have a better control. If an instance of GroupComparator is passed, GroupComparator.compareGroup(java.lang.Object, java.lang.Object) is used to group elements, and Comparator.compare(java.lang.Object, java.lang.Object) is used to sort elements with a group. Otherwise, Comparator.compare(java.lang.Object, java.lang.Object) 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.

Specified by:
setSortDescending in interface Listheader
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).

Specified by:
getMaxlength in interface Listheader

setMaxlength

public void setMaxlength(int maxlength)
Sets the maximal length of each item's label.

Specified by:
setMaxlength in interface Listheader

getColumnIndex

public int getColumnIndex()
Returns the column index, starting from 0.

Specified by:
getColumnIndex in interface Listheader

sort

public boolean sort(boolean ascending)
Sorts the list items based on getSortAscending() and getSortDescending(), if getSortDirection() doesn't matches the ascending argument.

It checks getSortDirection() to see whether sorting is required, and update setSortDirection(java.lang.String) after sorted. For example, if getSortDirection() returns "ascending" and the ascending argument is false, nothing happens. To enforce the sorting, you can invoke setSortDirection(java.lang.String) with "natural" before invoking this method. Alternatively, you can invoke sort(boolean, boolean) instead.

It sorts the listitem by use of Components.sort(java.util.List, java.util.Comparator) data (i.e., Grid.getModel() is null).

On the other hand, it invokes ListModelExt.sort(java.util.Comparator, 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 implement ListModelExt to sort the live data explicitly.

Specified by:
sort in interface Listheader
Parameters:
ascending - whether to use getSortAscending(). If the corresponding comparator is not set, it returns false and does nothing.
Returns:
whether the list items are sorted.
Throws:
UiException - if Listbox.getModel() is not null but ListModelExt is not implemented.

sort

public boolean sort(boolean ascending,
                    boolean force)
Sorts the list items based on getSortAscending() and getSortDescending().

Specified by:
sort in interface Listheader
Parameters:
ascending - whether to use getSortAscending(). 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 as sort(boolean).
Returns:
whether the rows are sorted.

onSort

public void onSort()
It invokes sort(boolean) to sort list items and maintain getSortDirection().


getRealSclass

protected java.lang.String getRealSclass()
Description copied from class: HtmlBasedComponent
Returns the real style class that will be generated to the client (when HtmlBasedComponent.getOuterAttrs() is called).

Default: it simply returns the catenation of HtmlBasedComponent.getSclass() and HtmlBasedComponent.getZclass() (since 3.5.0).

Derived classes might override it to provide, say, dual style classes. For example,

final String sclass = getSclass();
return sclass != null ? sclass + " my-addon": "myaddon";

Overrides:
getRealSclass in class HtmlBasedComponent
See Also:
HtmlBasedComponent.getZclass()

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 HtmlBasedComponent
See Also:
HtmlBasedComponent.getSclass(), HtmlBasedComponent.getRealSclass()

getOuterAttrs

public java.lang.String getOuterAttrs()
Description copied from class: HtmlBasedComponent
Returns the exterior attributes for generating the enclosing HTML tag; never return null.

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

Overrides:
getOuterAttrs in class HeaderElement

getColumnHtmlPrefix

public java.lang.String getColumnHtmlPrefix()
Returns the prefix of the first column (in HTML tags), null if this is not first column. Called only by listheader.dsp.

Since:
3.0.1

invalidateWhole

protected void invalidateWhole()
Invalidates the whole box.

Specified by:
invalidateWhole in class HeaderElement

setParent

public void setParent(Component parent)
Description copied from interface: Component
Sets the parent component.

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.

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

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.