package org.zkoss.zktest.test2; import java.util.ArrayList; import java.util.List; import org.zkoss.bind.annotation.Init; import org.zkoss.zul.AbstractTreeModel; public class B70_ZK_2375_TreeVM { private BinaryTreeModel<String> model; private int totalsize = 0; @Init public void init() { List<String> list = new ArrayList<String>(); for (int i = 0; i < 1000; i++) { list.add("" + i); } model = new BinaryTreeModel<String>(list); } public BinaryTreeModel<String> getModel() { return model; } public void setModel(BinaryTreeModel<String> model) { this.model = model; } public int getTotalsize() { return totalsize; } public void setTotalsize(int totalsize) { this.totalsize = totalsize; } } class BinaryTreeModel<T> extends AbstractTreeModel<T> { private static final long serialVersionUID = 5067310002210333471L; private List<T> _tree = null; public BinaryTreeModel(List<T> tree) { super(tree.get(0)); _tree = tree; } public boolean isLeaf(Object node) { return (getChildCount(node) == 0); } public T getChild(Object parent, int index) { int i = _tree.indexOf(parent) * 2 + 1 + index; if (i >= _tree.size()) return null; else return _tree.get(i); } public int getChildCount(Object parent) { int count = 0; if (getChild(parent, 0) != null) count++; if (getChild(parent, 1) != null) count++; return count; } public int getIndexOfChild(Object arg0, Object arg1) { return 0; } }