import java.util.ArrayList; import java.util.List; import org.zkoss.bind.BindUtils; import org.zkoss.bind.annotation.AfterCompose; import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.ContextParam; import org.zkoss.bind.annotation.ContextType; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.select.Selectors; import org.zkoss.zul.DefaultTreeModel; import org.zkoss.zul.DefaultTreeNode; import org.zkoss.zul.TreeNode; public class DynColTreeVM { @AfterCompose public void afterCompose(@ContextParam(ContextType.VIEW) Component view) { Selectors.wireComponents(view, this, false); } public DefaultTreeModel getTreeModel() { List> children = new ArrayList>(); TreeNode root = new DefaultTreeNode("root", children); for (int i = 0; i < 10; i++) { root.getChildren().add(new DefaultTreeNode("c" + i)); } DefaultTreeModel model = new DefaultTreeModel(root); return model; } public List getCols() { List result = new ArrayList(); result.add("col_1"); result.add("col_2"); result.add("col_3"); return result; } public List getItems() { List result = new ArrayList(); result.add("item_1"); result.add("item_2"); result.add("item_3"); return result; } @Command public void doSomething() { BindUtils.postNotifyChange(null, null, this, "cols"); } public boolean isVisible(String name) { return true; // return name.indexOf("_2") == -1; } }