Package org.zkoss.zul
Class SimpleGroupsModel<D,H,F,E>
- java.lang.Object
-
- org.zkoss.zul.AbstractGroupsModel<D,java.lang.Object,F,E>
-
- org.zkoss.zul.SimpleGroupsModel<D,H,F,E>
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable,org.zkoss.zk.ui.util.ComponentCloneListener,GroupsSelectableModel<E>,GroupsSortableModel<D>,Selectable<E>,Sortable<D>,GroupsModel<D,java.lang.Object,F>
public class SimpleGroupsModel<D,H,F,E> extends AbstractGroupsModel<D,java.lang.Object,F,E> implements GroupsSortableModel<D>, org.zkoss.zk.ui.util.ComponentCloneListener, java.lang.Cloneable
A simple implementation ofGroupsModel. This implementation assumes the data is grouped, and the grouping structure is immutable. If you allow the user to re-group the content, useGroupsModelArrayinstead.Generics:
- D
- The class of each data
- H
- The class of each group header
- F
- The class of each group footer
- E
- The class of each selection. It is the common base class of D, H, F. In other words, D, H and F must extend from E.
For more information, please refer to ZK Developer's Reference: Groups Model
By default, the model support cloneable when the component is cloned. (since 6.0.0)
- Since:
- 3.5.0
- Author:
- Dennis.Chen
- See Also:
GroupsModel,GroupsModelArray,ComponentCloneListener, Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.zkoss.zul.AbstractGroupsModel
AbstractGroupsModel.DefaultSelectionControl<E>
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<java.util.List<D>>_datamember field to store group dataprotected java.util.List<F>_footsmember field to store group foot dataprotected java.util.List<H>_headsmember field to store group head dataprotected boolean[]_opensmember field to store group close statusprotected boolean_sortDiris the sort ascending?protected java.util.Comparator<D>_sortingthe sorting comparator-
Fields inherited from class org.zkoss.zul.AbstractGroupsModel
_selection
-
-
Constructor Summary
Constructors Constructor Description SimpleGroupsModel(D[][] data)Constructs a groups data model with a two-dimensional array of data.SimpleGroupsModel(D[][] data, H[] heads)Constructor When using this constructor ,getGroup(int)will return the corresponding Object depends on heads.SimpleGroupsModel(D[][] data, H[] heads, F[] foots)Constructor When using this constructor ,getGroup(int)will return the corresponding Object depends on heads.SimpleGroupsModel(D[][] data, H[] heads, F[] foots, boolean[] closes)Constructor When using this constructor ,getGroup(int)will return the corresponding Object depends on heads.SimpleGroupsModel(java.util.List<java.util.List<D>> data)Constructs a groups data model with a two-dimensional list of data.SimpleGroupsModel(java.util.List<java.util.List<D>> data, java.util.List<H> heads)Constructor When using this constructor ,getGroup(int)will return the corresponding Object depends on heads.SimpleGroupsModel(java.util.List<java.util.List<D>> data, java.util.List<H> heads, java.util.List<F> foots)Constructor When using this constructor ,getGroup(int)will return the corresponding Object depends on heads.SimpleGroupsModel(java.util.List<java.util.List<D>> data, java.util.List<H> heads, java.util.List<F> foots, boolean[] closes)Constructor When using this constructor ,getGroup(int)will return the corresponding Object depends on heads.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description booleanaddOpenGroup(int groupIndex)Opens the group at the specified index.java.lang.Objectclone()DgetChild(int groupIndex, int index)Returns the child value of the specified group at the specified index.intgetChildCount(int groupIndex)Returns the number of children of the specified group.java.lang.ObjectgetGroup(int groupIndex)Returns the data representing the group.intgetGroupCount()Returns the number of groups.FgetGroupfoot(int groupIndex)Returns the foot value of the specified group, or null if the specified group does not have any foot.java.lang.StringgetSortDirection(java.util.Comparator<D> cmpr)Returns the sort direction of this model for the given comparator.voidgroup(java.util.Comparator<D> cmpr, boolean ascending, int colIndex)booleanhasGroupfoot(int groupIndex)Returns if the specified group has a foot value.booleanisGroupOpened(int groupIndex)Whether the group is open at the specified index.booleanremoveOpenGroup(int groupIndex)Closes the group at the specified index.booleansetOpenGroup0(int groupIndex, boolean open)voidsort(java.util.Comparator<D> cmpr, boolean ascending, int colIndex)Sort each data in each group by Comparator, developer could overridesortGroupData(Object, List, Comparator, boolean, int)(Since 6.0.1) to customize.protected voidsortGroupData(java.lang.Object group, D[] groupdata, java.util.Comparator<D> cmpr, boolean ascending, int colIndex)Deprecated.As of release 6.0.1, replaced withsortGroupData(Object, List, Comparator, boolean, int).protected voidsortGroupData(java.lang.Object group, java.util.List<D> groupdata, java.util.Comparator<D> cmpr, boolean ascending, int colIndex)Sorts a group of data.java.lang.ObjectwillClone(org.zkoss.zk.ui.Component comp)Allows the model to clone-
Methods inherited from class org.zkoss.zul.AbstractGroupsModel
addGroupsDataListener, addToSelection, clearSelection, fireEvent, fireSelectionEvent, getSelection, getSelectionControl, isGroupSelectable, isMultiple, isSelected, isSelectionEmpty, newEmptySelection, readSelection, removeAllSelection, removeFromSelection, removeGroupsDataListener, retainAllSelection, setGroupSelectable, setMultiple, setSelection, setSelectionControl, writeSelection
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.zkoss.zul.ext.GroupsSortableModel
sort
-
-
-
-
Field Detail
-
_data
protected java.util.List<java.util.List<D>> _data
member field to store group data
-
_heads
protected java.util.List<H> _heads
member field to store group head data
-
_foots
protected java.util.List<F> _foots
member field to store group foot data
-
_opens
protected boolean[] _opens
member field to store group close status
-
_sorting
protected java.util.Comparator<D> _sorting
the sorting comparator
-
_sortDir
protected boolean _sortDir
is the sort ascending?
-
-
Constructor Detail
-
SimpleGroupsModel
public SimpleGroupsModel(D[][] data)
Constructs a groups data model with a two-dimensional array of data. For example, if you have three groups and each of them have 5 elements, then the data argument must be a 3 x 5 array. Furthermore, data[0] is the array of elements of the first group, data[1] is elements of the second group, and so on. Of course, each group might have different number of elements.This constructor assumes there is no group foot at all.
- Parameters:
data- a two-dimensional array to represent groups data, where data[0] is the array of element of the first group, data[1] is of the second group and so on.
-
SimpleGroupsModel
public SimpleGroupsModel(D[][] data, H[] heads)
Constructor When using this constructor ,getGroup(int)will return the corresponding Object depends on heads.hasGroupfoot(int)will always return false- Parameters:
data- a 2 dimension array to represent groups dataheads- an array to represent head data of group
-
SimpleGroupsModel
public SimpleGroupsModel(D[][] data, H[] heads, F[] foots)
Constructor When using this constructor ,getGroup(int)will return the corresponding Object depends on heads. The return value ofhasGroupfoot(int)andgetGroupfoot(int)are depends on foots.- Parameters:
data- a 2 dimension array to represent groups dataheads- an array to represent head data of groupfoots- an array to represent foot data of group, if an element in this array is null, thenhasGroupfoot(int)will return false in corresponding index.
-
SimpleGroupsModel
public SimpleGroupsModel(D[][] data, H[] heads, F[] foots, boolean[] closes)
Constructor When using this constructor ,getGroup(int)will return the corresponding Object depends on heads. The return value ofhasGroupfoot(int)andgetGroupfoot(int)are depends on foots.Notice that, for backward compatibility, the last argument is
closes.- Parameters:
data- a 2 dimension array to represent groups dataheads- an array to represent head data of groupfoots- an array to represent foot data of group, if an element in this array is null, thenhasGroupfoot(int)will return false in corresponding index.closes- an array of boolean to represent close status of group. If not specified, thenisGroupOpened(int)will return true in corresponding index(i.e. group is default to open)
-
SimpleGroupsModel
public SimpleGroupsModel(java.util.List<java.util.List<D>> data)
Constructs a groups data model with a two-dimensional list of data. For example, if you have three groups and each of them have 5 elements, then the data argument must be a 3 x 5 list. Furthermore,list.get(0)is the elements of the first group,list.get(1)is the elements of the second group, and so on. Of course, each group might have different number of elements.This constructor assumes there is no group foot at all.
- Parameters:
data- a two-dimensional list to represent groups data.- Since:
- 6.0.1
-
SimpleGroupsModel
public SimpleGroupsModel(java.util.List<java.util.List<D>> data, java.util.List<H> heads)
Constructor When using this constructor ,getGroup(int)will return the corresponding Object depends on heads.hasGroupfoot(int)will always return false- Parameters:
data- a two dimensional list to represent groups dataheads- a list to represent head data of group- Since:
- 6.0.1
-
SimpleGroupsModel
public SimpleGroupsModel(java.util.List<java.util.List<D>> data, java.util.List<H> heads, java.util.List<F> foots)
Constructor When using this constructor ,getGroup(int)will return the corresponding Object depends on heads. The return value ofhasGroupfoot(int)andgetGroupfoot(int)are depends on foots.- Parameters:
data- a two dimensional list to represent groups dataheads- a list to represent head data of groupfoots- a list to represent foot data of group, if an element in this list is null, thenhasGroupfoot(int)will return false in corresponding index.- Since:
- 6.0.1
-
SimpleGroupsModel
public SimpleGroupsModel(java.util.List<java.util.List<D>> data, java.util.List<H> heads, java.util.List<F> foots, boolean[] closes)
Constructor When using this constructor ,getGroup(int)will return the corresponding Object depends on heads. The return value ofhasGroupfoot(int)andgetGroupfoot(int)are depends on foots.Notice that, for backward compatibility, the last argument is
closes.- Parameters:
data- a two dimensional list to represent groups dataheads- a list to represent head data of groupfoots- a list to represent foot data of group, if an element in this list is null, thenhasGroupfoot(int)will return false in corresponding index.closes- an array of boolean to represent close status of group. If not specified, thenisGroupOpened(int)will return true in corresponding index(i.e. group is default to open)- Since:
- 6.0.1
-
-
Method Detail
-
getChild
public D getChild(int groupIndex, int index)
Description copied from interface:GroupsModelReturns the child value of the specified group at the specified index.- Specified by:
getChildin interfaceGroupsModel<D,H,F>- Parameters:
groupIndex- the index of the group.index- the index of the element in the group.
-
getChildCount
public int getChildCount(int groupIndex)
Description copied from interface:GroupsModelReturns the number of children of the specified group.Note: it does not include the group foot (
GroupsModel.getGroupfoot(int)).- Specified by:
getChildCountin interfaceGroupsModel<D,H,F>- Parameters:
groupIndex- the index of the group.
-
getGroup
public java.lang.Object getGroup(int groupIndex)
Returns the data representing the group. It is H, if heads is specified in the constructor, or D[] if not specified.- Specified by:
getGroupin interfaceGroupsModel<D,H,F>- Parameters:
groupIndex- the index of the group.
-
getGroupCount
public int getGroupCount()
Description copied from interface:GroupsModelReturns the number of groups.- Specified by:
getGroupCountin interfaceGroupsModel<D,H,F>
-
getGroupfoot
public F getGroupfoot(int groupIndex)
Description copied from interface:GroupsModelReturns the foot value of the specified group, or null if the specified group does not have any foot. It is used to renderGroupfootandListgroupfoot.Note: it is ignored if
GroupsModel.hasGroupfoot(int)returns false.- Specified by:
getGroupfootin interfaceGroupsModel<D,H,F>- Parameters:
groupIndex- the index of the group.
-
hasGroupfoot
public boolean hasGroupfoot(int groupIndex)
Description copied from interface:GroupsModelReturns if the specified group has a foot value.- Specified by:
hasGroupfootin interfaceGroupsModel<D,H,F>- Parameters:
groupIndex- the index of the group.
-
isGroupOpened
public boolean isGroupOpened(int groupIndex)
Description copied from interface:GroupsModelWhether the group is open at the specified index. It is used to renderGroupandListgroup.Default: true
- Specified by:
isGroupOpenedin interfaceGroupsModel<D,H,F>- Parameters:
groupIndex- the index of the group.
-
addOpenGroup
public boolean addOpenGroup(int groupIndex)
Description copied from interface:GroupsModelOpens the group at the specified index.- Specified by:
addOpenGroupin interfaceGroupsModel<D,H,F>- Parameters:
groupIndex- the index of the group.- Returns:
- if it has been added successfully; false if it was opened.
-
removeOpenGroup
public boolean removeOpenGroup(int groupIndex)
Description copied from interface:GroupsModelCloses the group at the specified index.- Specified by:
removeOpenGroupin interfaceGroupsModel<D,H,F>- Parameters:
groupIndex- the index of the group.- Returns:
- if it has been removed successfully; false if it was closed.
-
setOpenGroup0
public boolean setOpenGroup0(int groupIndex, boolean open)
-
group
public void group(java.util.Comparator<D> cmpr, boolean ascending, int colIndex)
Do nothing in default implementation, however developer can override it to re-group by manipulating_data,_heads,_foots- Specified by:
groupin interfaceGroupsSortableModel<D>- Parameters:
cmpr- the comparator assigned toColumn.setSortAscending(java.util.Comparator<?>)and other relative methods. If developers didn't assign any one, the method is returned directly.ascending- whether to sort in the ascending order (or in the descending order)colIndex- the index of the column
-
sort
public void sort(java.util.Comparator<D> cmpr, boolean ascending, int colIndex)
Sort each data in each group by Comparator, developer could overridesortGroupData(Object, List, Comparator, boolean, int)(Since 6.0.1) to customize.- Specified by:
sortin interfaceGroupsSortableModel<D>- Parameters:
cmpr- the comparator assigned toListheader.setSortAscending(java.util.Comparator)and other relative methods. If developers didn't assign any one, the default comparator is used. Notice that it is capable to sort the data in the correct order, you could ignore the ascending parameter.ascending- whether to sort in the ascending order (or in the descending order, if false). Notice that it is used only to provide additional information. To sort the data correctly, you could count on the cmpr parameter only.colIndex- the index of the column
-
sortGroupData
protected void sortGroupData(java.lang.Object group, D[] groupdata, java.util.Comparator<D> cmpr, boolean ascending, int colIndex)Deprecated.As of release 6.0.1, replaced withsortGroupData(Object, List, Comparator, boolean, int).
-
sortGroupData
protected void sortGroupData(java.lang.Object group, java.util.List<D> groupdata, java.util.Comparator<D> cmpr, boolean ascending, int colIndex)Sorts a group of data.Default:
Collections.sort(groupdata, cmpr)- Parameters:
group- the group (the same asgetGroup(int))groupdata- the group of data to sort- Since:
- 6.0.1
-
clone
public java.lang.Object clone()
- Overrides:
clonein classAbstractGroupsModel<D,java.lang.Object,F,E>
-
willClone
public java.lang.Object willClone(org.zkoss.zk.ui.Component comp)
Allows the model to clone- Specified by:
willClonein interfaceorg.zkoss.zk.ui.util.ComponentCloneListener- Since:
- 6.0.0
-
getSortDirection
public java.lang.String getSortDirection(java.util.Comparator<D> cmpr)
Description copied from interface:SortableReturns the sort direction of this model for the given comparator. It must be one of "ascending", "descending" and "natural".Default: "natural".
- Specified by:
getSortDirectionin interfaceGroupsSortableModel<D>- Specified by:
getSortDirectionin interfaceSortable<D>
-
-