zktest/src/main/java/org/zkoss/zktest/bind/basic/CollectionTemplateGridVM.java
/* CollectionIndexComposer.java
Purpose:
Description:
History:
Created by Dennis
Copyright (C) 2011 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.zktest.bind.basic;
import java.util.ArrayList;
import java.util.List;
import org.zkoss.bind.Binder;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.ContextParam;
import org.zkoss.bind.annotation.ContextType;
import org.zkoss.bind.annotation.NotifyChange;
/**
* @author Dennis Chen
*
*/
public class CollectionTemplateGridVM{
private String message1;
List<Item> items ;
public CollectionTemplateGridVM() {
items = new ArrayList<Item>();
items.add(new Item("A"));
items.add(new Item("B"));
items.add(new Item("C"));
items.add(new Item("D"));
}
public List<Item> getItems() {
return items;
}
@NotifyChange({ "message1" }) @Command
public void showIndex(@BindingParam("index") Integer index) {
int i =index.intValue();
message1 = "item index " + i;
}
@NotifyChange({ "items", "message1" }) @Command
public void delete(@BindingParam("item") Item item) {
int i = items.indexOf(item);
items.remove(item);
message1 = "remove item index " + i;
}
@NotifyChange({ "items", "message1" }) @Command
public void addAfter(@BindingParam("item") Item item) {
int i = items.indexOf(item);
Item newi = new Item(item.getName() + i);
items.add(i + 1, newi);
message1 = "addAfter item index " + (i + 1);
}
@NotifyChange({ "items","message1" }) @Command
public void addBefore(@BindingParam("item") Item item) {
int i = items.indexOf(item);
Item newi = new Item(item.getName() + i);
items.add(i, newi);
message1 = "addBefore item index " + (i + 1);
}
public String getMessage1() {
return message1;
}
static public class Item {
String name;
List<String> options = new ArrayList<String>();
public Item(String name) {
this.name = name;
options.add(name+" 0");
options.add(name+" 1");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getOptions() {
return options;
}
public String toString(){
return super.toString()+":"+name;
}
}
@Command @NotifyChange("items")
public void reload() {
System.out.println(">>>>>>>>>>>>>>>>>reload");
}
@Command @NotifyChange("items")
public void change1() {
items.get(0).setName("X");
items.get(1).setName("A");
}
@Command
public void change2(@ContextParam(ContextType.BINDER)Binder binder) {
items.get(0).setName("A");
binder.notifyChange(items.get(0), "name");
items.get(1).setName("B");
binder.notifyChange(items.get(1), "*");
}
}