/* B70_ZK_2534.java
Purpose:
Description:
History:
10:07 AM 8/4/15, Created by jumperchen
Copyright (C) 2015 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.zktest.test2;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zul.GroupsModelArray;
/**
* @author jumperchen
*/
public class B70_ZK_2534Group {
private MyGroupsModelArray groupsModel;
Object selected;
public B70_ZK_2534Group() {
groupsModel = new MyGroupsModelArray(FoodData.getAllFoodsArray(), new FoodComparator());
groupsModel.setMultiple(true);
}
public MyGroupsModelArray getGroupsModel() {
return groupsModel;
}
public Object getSelected() {
return selected;
}
public void setSelected(Object selected) {
this.selected = selected;
System.out.println(">>selected:"+selected);
}
public String getTemplate(Object data) {
if (data instanceof Integer) {
return "foot";
} else if (data instanceof Object[]) {
return "head";
} else {
return "row";
}
}
@Command @NotifyChange("selected")
public void select1(){
selected = groupsModel.getChild(0,0);
}
@Command @NotifyChange("selected")
public void select2(){
selected = groupsModel.getChild(1,0);
}
public static class MyGroupsModelArray extends GroupsModelArray {
public MyGroupsModelArray(Object[] data, Comparator cmpr) {
super(data, cmpr);
}
protected Object createGroupHead(Object[] groupdata, int index, int col) {
return new Object[] { groupdata[0], index, col };
}
// Create GroupFoot Data
protected Object createGroupFoot(Object[] groupdata, int index, int col) {
// Return the sum number of each group
return groupdata.length;
}
}
public static class FoodData {
private static List<Food> foods = new ArrayList<Food>();
static {
for (int y = 0; y < 5; y++) {
for (int i = 0; i < 3; i++) {
foods.add(new Food("Vegetables" + y, "Asparagus" + i));
foods.add(new Food("Vegetables" + y, "Beets" + i));
foods.add(new Food("Vegetables" + y, "Corns" + i));
foods.add(new Food("Vegetables" + y, "Lettuces" + i));
foods.add(new Food("Vegetables" + y, "Mushrooms" + i));
foods.add(new Food("Vegetables" + y, "Pumpkins" + i));
}
for (int i = 0; i < 3; i++) {
foods.add(new Food("Seafood" + y, "Basa"));
foods.add(new Food("Seafood" + y, "Bluefish"));
foods.add(new Food("Seafood" + y, "Dorade"));
foods.add(new Food("Seafood" + y, "Salmon"));
foods.add(new Food("Seafood" + y, "Shrimp"));
}
for (int i = 0; i < 3; i++) {
foods.add(new Food("Fruits" + y, "Apples"));
foods.add(new Food("Fruits" + y, "Bananas"));
foods.add(new Food("Fruits" + y, "Oranges"));
foods.add(new Food("Fruits" + y, "Grapes"));
foods.add(new Food("Fruits" + y, "Guavas"));
}
}
}
public static List getAllFoods() {
return foods;
}
public static Object[] getAllFoodsArray() {
return foods.toArray();
}
// This Method only used in "Data Filter" Demo
public static List getFilterFoods(String filter1, String filter2, String filter3) {
List<Food> somefoods = new ArrayList<Food>();
for (Iterator<Food> i = foods.iterator(); i.hasNext();) {
Food tmp = i.next();
if (tmp.getCategory().toLowerCase(java.util.Locale.ENGLISH).indexOf(filter1.trim().toLowerCase(java.util.Locale.ENGLISH)) >= 0
&& tmp.getName().toLowerCase(java.util.Locale.ENGLISH).indexOf(filter2.trim().toLowerCase(java.util.Locale.ENGLISH)) >= 0) {
somefoods.add(tmp);
}
}
return somefoods;
}
// This Method only used in "Header and footer" Demo
public static List<Food> getFoodsByCategory(String category) {
List<Food> somefoods = new ArrayList<Food>();
for (Iterator<Food> i = foods.iterator(); i.hasNext();) {
Food tmp = i.next();
if (tmp.getCategory().equals(category))
somefoods.add(tmp);
}
return somefoods;
}
}
public static class Food {
private String category;
private String name;
public Food(String category, String name) {
super();
this.category = category;
this.name = name;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class FoodComparator implements Comparator, Serializable {
public int compare(Object o1, Object o2) {
Food data = (Food) o1;
Food data2 = (Food) o2;
return data.getCategory().compareTo(data2.getCategory().toString());
}
}
}