Suggested case list:
Using timer to refresh a grid
383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlinkuser model to move item to another listbox
120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlinkDisabled list item row passed to VM-1981
296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlinkDisabled list item row passed to VM-1981
295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlinkDisabled list item row passed to VM-1981
294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlinkgrid sample with ListModel/RowRenderer
816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlinkgrid sample with ListModel/RowRenderer
809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlinkgrid sample with ListModel/RowRenderer
196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlinkgrid sample with ListModel/RowRenderer
195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlinkgrid sample with ListModel/RowRenderer
194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlinkgrid sample with ListModel/RowRenderer
193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlinkgrid sample with ListModel/RowRenderer
192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlinkgrid sample with ListModel/RowRenderer
191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlinkHierarchy table without using ZK PE/EE
1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlinkgrid sample with ListModel/RowRenderer
128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlinkuser model to move item to another listbox
1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlinkUsing timer to refresh a grid
1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlinkFire a event from child iframe
1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlinkTextbox input restriction sample
1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlinkTest web core taglib in ZUL
1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlinkLatest 10 Fiddles :
Textbox input restriction sample
1guest172.71.137.1339ahuuhJan 12, 2025 6:43:16 AMlinkZK MVVM Converter
21guest172.71.137.13816cf90oJan 12, 2025 6:35:27 AMlinkTemplate composition and include
35guest172.70.246.66vroi36Jan 10, 2025 3:44:06 PMlinkTemplate composition and include
34guest172.70.246.66vroi36Jan 10, 2025 3:43:42 PMlinkTemplate composition and include
33guest172.70.246.66vroi36Jan 10, 2025 3:42:59 PMlinkTemplate composition and include
32guest172.70.246.67vroi36Jan 10, 2025 3:41:58 PMlinkTemplate composition and include
31guest172.70.246.66vroi36Jan 10, 2025 3:41:25 PMlinkTemplate composition and include
30guest172.70.246.66vroi36Jan 10, 2025 3:39:35 PMlinkTemplate composition and include
29guest172.70.246.66vroi36Jan 10, 2025 3:39:09 PMlinkTemplate composition and include
28guest172.70.246.67vroi36Jan 10, 2025 3:37:54 PMlinkTree binding selected item
5guest123.16.154.14017gj1g4May 12, 2017 12:33:14 PMlinkresources
index.zulzul<?xml version="1.0" encoding="UTF-8" ?>
<zk>
<window apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('pkg$.TestVM')">
<tree id="tree" rows="5" selectedItem="@bind(vm.selectedItem) @converter(vm.converter)"
model="@load(vm.model)">
<treecols>
<treecol hflex="3" label="Path" />
<treecol hflex="5" label="Description" />
<treecol hflex="2" label="Size" />
</treecols>
<template name="model">
<treeitem>
<treerow>
<treecell label="${each.data.path}"/>
<treecell label="${each.data.description}"/>
</treerow>
</treeitem>
</template>
</tree>
<textbox value="@bind(vm.nameOfSelectedItem)" />
</window>
</zk>TestVM.javajava
import java.util.*;
import org.zkoss.bind.Converter;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zul.*;
public class TestVM {
Treeitem _selectedItem;
Treeitem _itemOne;
TestConverter _testConverter;
TreeModel _model;
Map<String, int[]> _mappingMap;
public Treeitem getSelectedItem () {
System.out.println("get " + _selectedItem);
return _selectedItem;
}
@NotifyChange("nameOfSelectedItem")
public void setSelectedItem(Treeitem selectedItem) {
System.out.println("set " + selectedItem);
_selectedItem = selectedItem;
}
public String getNameOfSelectedItem() {
if (_selectedItem != null) {
return ((Treecell)_selectedItem.getTreerow().getFirstChild()).getLabel();
}
return "null";
}
@NotifyChange("selectedItem")
public void setNameOfSelectedItem(String value) {
Tree t = (Tree)((TestConverter)getConverter()).getComp();
if (_mappingMap == null) {
_mappingMap = new HashMap<String, int[]>();
createMappingMap((DirectoryTreeNode)_model.getRoot());
}
System.out.println(_mappingMap.containsKey(value));
if (_mappingMap.containsKey(value)) {
int[] path = _mappingMap.get(value);
DefaultTreeModel dtm = (DefaultTreeModel)_model;
DirectoryTreeNode child = (DirectoryTreeNode)dtm.getChild(path);
DirectoryTreeNode parent = (DirectoryTreeNode)child.getParent();
Set openProjects = dtm.getOpenObjects();
while (parent != null) {
openProjects.add(parent);
parent = (DirectoryTreeNode)parent.getParent();
}
dtm.setOpenObjects(openProjects);
dtm.addToSelection(dtm.getChild(path));
_selectedItem = t.getSelectedItem();
}
}
public Converter getConverter () {
if (_testConverter == null)
_testConverter = new TestConverter();
return _testConverter;
}
public TreeModel getModel () {
if (_model == null)
_model = new DefaultTreeModel(new PackageDataUtil().getRoot());
return _model;
}
public void createMappingMap (DirectoryTreeNode dtn) {
if (dtn != null) {
PackageData data = (PackageData)dtn.getData();
if (data != null)
_mappingMap.put(data.getPath(), _model.getPath(dtn));
if (dtn.getChildren() != null)
for (Object tn : dtn.getChildren())
createMappingMap((DirectoryTreeNode)tn);
}
}
}TestConverter.javajava
import org.zkoss.bind.BindContext;
import org.zkoss.bind.Converter;
import org.zkoss.zk.ui.Component;
public class TestConverter implements Converter, java.io.Serializable {
private static final long serialVersionUID = 201109261823L;
Component _comp;
public Object coerceToUi(Object val, Component comp, BindContext ctx) {
if (_comp == null)
_comp = comp;
return val;
}
public Object coerceToBean(Object val, Component comp, BindContext ctx) {
if (_comp == null)
_comp = comp;
return val;
}
public Component getComp () {
return _comp;
}
}
PackageData.javajava
public class PackageData {
private final String path;
private final String description;
private final String size;
public PackageData(String path, String description) {
this.path = path;
this.description = description;
this.size = null;
}
public PackageData(String path, String description, String size) {
this.path = path;
this.description = description;
this.size = size;
}
public String getPath() {
return path;
}
public String getDescription() {
return description;
}
public String getSize() {
return size;
}
}PackageDataUtil.javajava
public class PackageDataUtil {
private DirectoryTreeNode root = new DirectoryTreeNode(null,
new DirectoryTreeNode[] {
new DirectoryTreeNode(new PackageData("/doc", "Release Notes and License")),
new DirectoryTreeNode(new PackageData("/dist", null),new DirectoryTreeNode[]{
new DirectoryTreeNode(new PackageData("/lib", null),new DirectoryTreeNode[]{
new DirectoryTreeNode(new PackageData("/zkforge", null),new DirectoryTreeNode[]{
new DirectoryTreeNode(new PackageData("ckez.jar", "CKeditor", "1709KB")),
new DirectoryTreeNode(new PackageData("timelinez.jar", "Timeline", "283KB"))
},true), //zkforge opened
new DirectoryTreeNode(new PackageData("/ext", null),new DirectoryTreeNode[]{
new DirectoryTreeNode(new PackageData("commons-fileupload.jar", "Upload Features")),
new DirectoryTreeNode(new PackageData("commons-io.jar", "Upload Features")),
new DirectoryTreeNode(new PackageData("jcommon.jar", "Chart Component"))
}), //ext closed
new DirectoryTreeNode(new PackageData("zcommon.jar", "ZK Core Jar File", "413KB" )),
new DirectoryTreeNode(new PackageData("zcommon-el.jar", "ZK Core Jar File", "100KB" )),
new DirectoryTreeNode(new PackageData("zel.jar", "ZK Core Jar File", "151KB" ))
}), //lib closed
new DirectoryTreeNode(new PackageData("/src", "Jar Format Source Code")),
new DirectoryTreeNode(new PackageData("/xsd", "XSD files for Development")),
new DirectoryTreeNode(new PackageData("/WEB-INF", "Configuration Files"))
},true) //dist opened
});;
public DirectoryTreeNode getRoot() {
return root;
}
}DirectoryTreeNode.javajava
import org.zkoss.zul.DefaultTreeNode;
public class DirectoryTreeNode extends DefaultTreeNode {
private boolean open;
public DirectoryTreeNode(Object data, DefaultTreeNode[] children, boolean open) {
super(data, children);
}
public DirectoryTreeNode(Object data, DefaultTreeNode[] children) {
super(data, children);
}
public DirectoryTreeNode(Object data) {
super(data);
}
public boolean isOpen() {
return open;
}
public void setOpen(boolean open) {
this.open = open;
}
}