org.zkoss.zul
Class SimpleGroupsModel<D,H,F>

java.lang.Object
  extended by org.zkoss.zul.AbstractGroupsModel<D,Object,F>
      extended by org.zkoss.zul.SimpleGroupsModel<D,H,F>
All Implemented Interfaces:
GroupsModel<D,Object,F>, GroupsModelExt<D>

public class SimpleGroupsModel<D,H,F>
extends AbstractGroupsModel<D,Object,F>
implements GroupsModelExt<D>

A simple implementation of GroupsModel. This implementation assumes the data is grouped, and the grouping structure is immutable. If you allow the user to re-group the content, use GroupsModelArray instead.

For more information, please refer to ZK Developer's Reference: Groups Model

Since:
3.5.0
Author:
Dennis.Chen
See Also:
GroupsModel, GroupsModelArray

Field Summary
protected  boolean[] _closes
          memeber field to store group close status
protected  D[][] _data
          member field to store group data
protected  F[] _foots
          member field to store group foot data
protected  H[] _heads
          member field to store group head data
 
Constructor Summary
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.
 
Method Summary
 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.
 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.
 void group(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
 boolean hasGroupfoot(int groupIndex)
          Returns if the specified group has a foot value.
 boolean isClose(int groupIndex)
          Whether the group is close at the specified index.
 void setClose(int groupIndex, boolean close)
          Sets whether the group is close at the specified index.
 void sort(Comparator<D> cmpr, boolean ascending, int colIndex)
          Sort each data in each group by Comparator, developer could override sortGroupData(Object, Object[], Comparator, boolean, int) to customize.
protected  void sortGroupData(Object group, D[] groupdata, Comparator<D> cmpr, boolean ascending, int colIndex)
          Sorts a group of data.
 
Methods inherited from class org.zkoss.zul.AbstractGroupsModel
addGroupsDataListener, fireEvent, removeGroupsDataListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_data

protected D[][] _data
member field to store group data


_heads

protected H[] _heads
member field to store group head data


_foots

protected F[] _foots
member field to store group foot data


_closes

protected boolean[] _closes
memeber field to store group close status

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 data
heads - 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 of hasGroupfoot(int) and getGroupfoot(int) are depends on foots.

Parameters:
data - a 2 dimension array to represent groups data
heads - an array to represent head data of group
foots - an array to represent foot data of group, if an element in this array is null, then hasGroupfoot(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 of hasGroupfoot(int) and getGroupfoot(int) are depends on foots.

Parameters:
data - a 2 dimension array to represent groups data
heads - an array to represent head data of group
foots - an array to represent foot data of group, if an element in this array is null, then hasGroupfoot(int) will return false in corresponding index.
closes - an array of boolean to represent close status of group. If not specified, then isClose(int) will return false in corresponding index(i.e. group is default to open)
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 interface GroupsModel<D,Object,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 groot foot (GroupsModel.getGroupfoot(int)).

Specified by:
getChildCount in interface GroupsModel<D,Object,F>
Parameters:
groupIndex - the index of the group.

getGroup

public 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 interface GroupsModel<D,Object,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 interface GroupsModel<D,Object,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 render Groupfoot and Listgroupfoot.

Note: it is ignored if GroupsModel.hasGroupfoot(int) returns false.

Specified by:
getGroupfoot in interface GroupsModel<D,Object,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 interface GroupsModel<D,Object,F>
Parameters:
groupIndex - the index of the group.

isClose

public boolean isClose(int groupIndex)
Description copied from interface: GroupsModel
Whether the group is close at the specified index. It is used to render Group and Listgroup.

Specified by:
isClose in interface GroupsModel<D,Object,F>
Parameters:
groupIndex - the index of the group.

setClose

public void setClose(int groupIndex,
                     boolean close)
Description copied from interface: GroupsModel
Sets whether the group is close at the specified index. It is used to render Group and Listgroup.

Specified by:
setClose in interface GroupsModel<D,Object,F>
Parameters:
groupIndex - the index of the group.
close - true to close the Group.

group

public void group(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 interface GroupsModelExt<D>
Parameters:
cmpr - the comparator assigned to Column.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(Comparator<D> cmpr,
                 boolean ascending,
                 int colIndex)
Sort each data in each group by Comparator, developer could override sortGroupData(Object, Object[], Comparator, boolean, int) to customize.

Specified by:
sort in interface GroupsModelExt<D>
Parameters:
cmpr - the comparator assigned to Listheader.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(Object group,
                             D[] groupdata,
                             Comparator<D> cmpr,
                             boolean ascending,
                             int colIndex)
Sorts a group of data.

Default: Arrays.sort(groupdata, cmpr)

Parameters:
group - the group (the same as getGroup(int))
groupdata - the group of data to sort


Copyright © 2011. All Rights Reserved.