Package org.zkoss.zul

Class Listheader

java.lang.Object
org.zkoss.zk.ui.AbstractComponent
All Implemented Interfaces:
Serializable, Cloneable, org.zkoss.zk.ui.Component, org.zkoss.zk.ui.ext.Scope, org.zkoss.zk.ui.sys.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 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-listheader.(since 5.0.0)

Author:
tomyeh
See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.zkoss.zul.impl.HeaderElement

    HeaderElement.ExtraCtrl

    Nested classes/interfaces inherited from class org.zkoss.zk.ui.AbstractComponent

    org.zkoss.zk.ui.AbstractComponent.Children, org.zkoss.zk.ui.AbstractComponent.ForwardInfo, org.zkoss.zk.ui.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_CLONED, 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(String label, String src)
     
    Listheader(String label, String src, String width)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    beforeParentChanged(org.zkoss.zk.ui.Component parent)
     
     
    int
    Returns the column index, starting from 0.
    Returns the listbox that this belongs to.
    int
    Returns the maximal length of each item's label.
    Returns the ascending sorter, or null if not available.
    Returns the descending sorter, or null if not available.
    Returns the sort direction.
    <T> T
    Returns the value.
     
    boolean
    group(boolean ascending)
    Groups and sorts the items (Listitem) based on getSortAscending().
    boolean
    Returns whether this header's column is visible when the listbox is in responsive (stacking) mode.
    void
    onGroupLater(org.zkoss.zk.ui.event.SortEvent event)
    Internal use only.
    void
    onSort(org.zkoss.zk.ui.event.SortEvent event)
    Invokes a sorting action based on a SortEvent and maintains getSortDirection().
    protected void
    renderProperties(org.zkoss.zk.ui.sys.ContentRenderer renderer)
     
    void
    service(org.zkoss.zk.au.AuRequest request, boolean everError)
    Processes an AU request.
    void
    setMaxlength(int maxlength)
    Sets the maximal length of each item's label.
    void
    setResponsiveVisible(boolean responsiveVisible)
    Sets whether this header's column is visible in responsive (stacking) mode.
    void
    Sets the type of the sorter.
    void
    Sets the ascending sorter with the class name, or null for no sorter for the ascending order.
    void
    Sets the ascending sorter, or null for no sorter for the ascending order.
    void
    Sets the descending sorter with the class name, or null for no sorter for the descending order.
    void
    Sets the descending sorter, or null for no sorter for the descending order.
    void
    Sets the sort direction.
    <T> void
    setValue(T 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().
    void
    ungroup(boolean ascending)
    Ungroups and sorts the items (Listitem) based on the ascending.
    protected void
     

    Methods inherited from class org.zkoss.zul.impl.HeaderElement

    evalCSSFlex, getAlign, getExtraCtrl, getValign, setAlign, setValign

    Methods inherited from class org.zkoss.zul.impl.LabelElement

    getLabel, renderCrawlable, setLabel

    Methods inherited from class org.zkoss.zk.ui.HtmlBasedComponent

    addSclass, focus, getAction, getClientAction, getDraggable, getDroppable, getHeight, getHflex, getLeft, getRenderdefer, getSclass, getSkeleton, 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, setSkeleton, 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, getStubonlyDescendants, 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, setStubonlyDescendants, setSubBindingAnnotationCount, setTemplate, setVisible, setVisibleDirectly, setWidgetClass, setWidgetListener, setWidgetOverride, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdateWidgetListener, smartUpdateWidgetOverride, toString, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerialize

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • Listheader

      public Listheader()
    • Listheader

      public Listheader(String label)
    • Listheader

      public Listheader(String label, String src)
    • Listheader

      public Listheader(String label, String src, String width)
  • Method Details

    • 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 String getSortDirection()
      Returns the sort direction.

      Default: "natural".

    • setSortDirection

      public void setSortDirection(String sortDir) throws org.zkoss.zk.ui.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:
      org.zkoss.zk.ui.WrongValueException
    • setSort

      public void setSort(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/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-sensitive.

      If "auto(LOWER(FIELD_NAME))" or "auto(UPPER(FIELD_NAME))" 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 "auto(number)" is specified, setSortAscending(java.util.Comparator) and/or setSortDescending(java.util.Comparator) are called with ArrayComparator. 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) and setSortDescending(java.util.Comparator) are called with null. Therefore, no more sorting is available to users for this column.

    • getSortAscending

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

      public void setSortAscending(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 of GroupComparator to have a better control. If an instance of GroupComparator is passed, GroupComparator.compareGroup(D, D) is used to group elements, and Comparator.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(String clsnm) throws ClassNotFoundException, InstantiationException, IllegalAccessException
      Sets the ascending sorter with the class name, or null for no sorter for the ascending order.
      Throws:
      ClassNotFoundException
      InstantiationException
      IllegalAccessException
    • getSortDescending

      public Comparator getSortDescending()
      Returns the descending sorter, or null if not available.
    • setSortDescending

      public void setSortDescending(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 of GroupComparator to have a better control. If an instance of GroupComparator is passed, GroupComparator.compareGroup(D, D) is used to group elements, and Comparator.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(String clsnm) throws ClassNotFoundException, InstantiationException, IllegalAccessException
      Sets the descending sorter with the class name, or null for no sorter for the descending order.
      Throws:
      ClassNotFoundException
      InstantiationException
      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 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<? 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 implement Sortable to sort the live data explicitly.

      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:
      org.zkoss.zk.ui.UiException - if Listbox.getModel() is not null but Sortable is not implemented.
    • sort

      public boolean sort(boolean ascending, boolean force)
      Sorts the list items based on getSortAscending() and getSortDescending().
      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.
    • group

      public boolean group(boolean ascending)
      Groups and sorts the items (Listitem) based on getSortAscending(). If the corresponding comparator is not set, it returns false and does nothing.
      Parameters:
      ascending - whether to use getSortAscending(). 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(org.zkoss.zk.ui.event.SortEvent event)
      Invokes a sorting action based on a SortEvent and maintains getSortDirection().
      Since:
      6.5.0
    • onGroupLater

      public void onGroupLater(org.zkoss.zk.ui.event.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 use getSortAscending(). If the corresponding comparator is not set, it returns false and does nothing.
      Since:
      6.5.0
    • getZclass

      public String getZclass()
      Overrides:
      getZclass in class org.zkoss.zk.ui.HtmlBasedComponent
    • beforeParentChanged

      public void beforeParentChanged(org.zkoss.zk.ui.Component parent)
      Specified by:
      beforeParentChanged in interface org.zkoss.zk.ui.sys.ComponentCtrl
      Overrides:
      beforeParentChanged in class org.zkoss.zk.ui.AbstractComponent
    • service

      public void service(org.zkoss.zk.au.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 interface org.zkoss.zk.ui.sys.ComponentCtrl
      Overrides:
      service in class org.zkoss.zk.ui.HtmlBasedComponent
      Since:
      6.5.0
    • renderProperties

      protected void renderProperties(org.zkoss.zk.ui.sys.ContentRenderer renderer) throws IOException
      Overrides:
      renderProperties in class HeaderElement
      Throws:
      IOException
    • isResponsiveVisible

      public boolean isResponsiveVisible()
      Returns whether this header's column is visible when the listbox is in responsive (stacking) mode.

      Default true. Stacking behavior is provided by ZK EE (zkmax); CE stores the value only.

      Returns:
      true if visible in stacking mode (default), false to hide it.
      Since:
      11.0.0
    • setResponsiveVisible

      public void setResponsiveVisible(boolean responsiveVisible)
      Sets whether this header's column is visible in responsive (stacking) mode.

      false hides the column only in stacking mode; it stays visible in table mode.

      Parameters:
      responsiveVisible - visibility flag for stacking mode
      Since:
      11.0.0
    • clone

      public Object clone()
      Specified by:
      clone in interface org.zkoss.zk.ui.Component
      Overrides:
      clone in class LabelImageElement
    • updateByClient

      protected void updateByClient(String name, Object value)
      Overrides:
      updateByClient in class org.zkoss.zk.ui.AbstractComponent