zktest/src/main/java/org/zkoss/zktest/bind/basic/CollectionTemplateGridVM.java

Summary

Maintainability
C
7 hrs
Test Coverage
/* 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), "*");
    }

}