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
,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>, 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, useGroupsModelArray
instead.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>>
_data
member field to store group dataprotected java.util.List<F>
_foots
member field to store group foot dataprotected java.util.List<H>
_heads
member field to store group head dataprotected boolean[]
_opens
member field to store group close statusprotected boolean
_sortDir
is the sort ascending?protected java.util.Comparator<D>
_sorting
the 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 boolean
addOpenGroup(int groupIndex)
Opens the group at the specified index.java.lang.Object
clone()
D
getChild(int groupIndex, int index)
Returns the child value of the specified group at the specified index.int
getChildCount(int groupIndex)
Returns the number of children of the specified group.java.lang.Object
getGroup(int groupIndex)
Returns the data representing the group.int
getGroupCount()
Returns the number of groups.F
getGroupfoot(int groupIndex)
Returns the foot value of the specified group, or null if the specified group does not have any foot.java.lang.String
getSortDirection(java.util.Comparator<D> cmpr)
Returns the sort direction of this model for the given comparator.void
group(java.util.Comparator<D> cmpr, boolean ascending, int colIndex)
boolean
hasGroupfoot(int groupIndex)
Returns if the specified group has a foot value.boolean
isGroupOpened(int groupIndex)
Whether the group is open at the specified index.boolean
removeOpenGroup(int groupIndex)
Closes the group at the specified index.boolean
setOpenGroup0(int groupIndex, boolean open)
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.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)
.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.java.lang.Object
willClone(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:GroupsModel
Returns the child value of the specified group at the specified index.- Specified by:
getChild
in 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:GroupsModel
Returns the number of children of the specified group.Note: it does not include the group foot (
GroupsModel.getGroupfoot(int)
).- Specified by:
getChildCount
in 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:
getGroup
in interfaceGroupsModel<D,H,F>
- Parameters:
groupIndex
- the index of the group.
-
getGroupCount
public int getGroupCount()
Description copied from interface:GroupsModel
Returns the number of groups.- Specified by:
getGroupCount
in interfaceGroupsModel<D,H,F>
-
getGroupfoot
public F getGroupfoot(int groupIndex)
Description copied from interface:GroupsModel
Returns the foot value of the specified group, or null if the specified group does not have any foot. It is used to renderGroupfoot
andListgroupfoot
.Note: it is ignored if
GroupsModel.hasGroupfoot(int)
returns false.- Specified by:
getGroupfoot
in interfaceGroupsModel<D,H,F>
- Parameters:
groupIndex
- the index of the group.
-
hasGroupfoot
public boolean hasGroupfoot(int groupIndex)
Description copied from interface:GroupsModel
Returns if the specified group has a foot value.- Specified by:
hasGroupfoot
in interfaceGroupsModel<D,H,F>
- Parameters:
groupIndex
- the index of the group.
-
isGroupOpened
public boolean isGroupOpened(int groupIndex)
Description copied from interface:GroupsModel
Whether the group is open at the specified index. It is used to renderGroup
andListgroup
.Default: true
- Specified by:
isGroupOpened
in interfaceGroupsModel<D,H,F>
- Parameters:
groupIndex
- the index of the group.
-
addOpenGroup
public boolean addOpenGroup(int groupIndex)
Description copied from interface:GroupsModel
Opens the group at the specified index.- Specified by:
addOpenGroup
in 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:GroupsModel
Closes the group at the specified index.- Specified by:
removeOpenGroup
in 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:
group
in 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:
sort
in 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:
clone
in classAbstractGroupsModel<D,java.lang.Object,F,E>
-
willClone
public java.lang.Object willClone(Component comp)
Allows the model to clone- Specified by:
willClone
in interfaceComponentCloneListener
- Parameters:
comp
- the cloned component (not the original one)- Returns:
- the object to be used in the cloned component. If this object is returned, the same object is shared by the cloned and original components. If other object is returned, it is used by the cloned component. If null is returned, it is not used by the cloned component at all.
- Since:
- 6.0.0
-
getSortDirection
public java.lang.String getSortDirection(java.util.Comparator<D> cmpr)
Description copied from interface:Sortable
Returns the sort direction of this model for the given comparator. It must be one of "ascending", "descending" and "natural".Default: "natural".
- Specified by:
getSortDirection
in interfaceGroupsSortableModel<D>
- Specified by:
getSortDirection
in interfaceSortable<D>
-
-