Processing...

Suggested case list:

Using timer to refresh a grid

383guest172.69.33.12125nk0uiMay 7, 2020 7:23:47 AMlink

user model to move item to another listbox

120guest162.158.193.148d0n3krApr 2, 2020 5:28:28 AMlink

Disabled list item row passed to VM-1981

296fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:44 PMlink

Disabled list item row passed to VM-1981

295fatih123160.83.36.13025nk0uiFeb 13, 2018 4:25:16 PMlink

Disabled list item row passed to VM-1981

294fatih123160.83.36.13225nk0uiFeb 13, 2018 3:30:44 PMlink

grid sample with ListModel/RowRenderer

816guest80.82.2.1312vah9ajFeb 21, 2017 11:42:21 AMlink

grid sample with ListModel/RowRenderer

809guest175.98.113.1622vah9ajJan 26, 2017 9:19:33 AMlink

grid sample with ListModel/RowRenderer

196guest79.185.142.402vah9ajApr 26, 2014 10:53:57 PMlink

grid sample with ListModel/RowRenderer

195guest79.185.142.402vah9ajApr 26, 2014 10:53:54 PMlink

grid sample with ListModel/RowRenderer

194guest79.185.142.402vah9ajApr 26, 2014 10:53:51 PMlink

grid sample with ListModel/RowRenderer

193guest79.185.142.402vah9ajApr 26, 2014 10:53:48 PMlink

grid sample with ListModel/RowRenderer

192guest79.185.142.402vah9ajApr 26, 2014 10:53:44 PMlink

grid sample with ListModel/RowRenderer

191guest79.185.142.402vah9ajApr 26, 2014 10:53:40 PMlink

Hierarchy table without using ZK PE/EE

1aaknai151.28.135.2131s871daJul 29, 2013 11:02:46 PMlink

grid sample with ListModel/RowRenderer

128aaknai151.28.135.2132vah9ajJul 29, 2013 7:20:00 PMlink

user model to move item to another listbox

1TonyQ114.25.109.94d0n3krApr 21, 2012 10:43:27 AMlink

Using timer to refresh a grid

1TonyQ220.133.44.3725nk0uiFeb 17, 2012 3:17:34 AMlink

Fire a event from child iframe

1TonyQ220.133.44.372eupjotFeb 3, 2012 5:04:52 AMlink

Textbox input restriction sample

1TonyQ72.21.245.2431b3nlr0Dec 20, 2011 10:09:10 AMlink

Test web core taglib in ZUL

1TonyQ198.203.175.175ofqkemDec 17, 2011 3:36:08 AMlink

Latest 10 Fiddles :

Another new ZK fiddle

1guest172.70.111.155rcrbibApr 24, 2024 10:32:38 AMlink

open new url in same tab

16guest172.71.134.14923nk51gApr 23, 2024 3:42:54 PMlink

Dedalus Concerto CONC-5938

71guest188.114.102.11417kiilApr 23, 2024 1:10:17 PMlink

Dedalus Concerto CONC-XXXX

70guest172.71.246.317kiilApr 23, 2024 10:43:35 AMlink

Dedalus Concerto CONC-XXXX

69guest172.71.246.217kiilApr 23, 2024 10:42:44 AMlink

Dedalus Concerto CONC-XXXX

68guest172.71.246.4917kiilApr 23, 2024 10:40:09 AMlink

Scrapbook Concerto CONC-XXXX

67guest172.71.246.4817kiilApr 23, 2024 10:39:49 AMlink

Scrapbook Concerto CONC-XXXX

66guest172.71.246.4917kiilApr 23, 2024 10:39:35 AMlink

Scrapbook Concerto CONC-XXXX

65guest172.71.246.4917kiilApr 23, 2024 10:38:52 AMlink

Scrapbook Concerto CONC-XXXX

64guest172.71.246.4917kiilApr 23, 2024 10:38:47 AMlink

Another new ZK fiddle

2guest176.10.249.68kogcv0Apr 26, 2017 7:21:03 PMlink

resources

index.zulzul<zk> <window id="demoWindow" apply="pkg$.DemoComposer"> <style> .h-inline-block { display: inline-block; _display: inline; } </style> <tree id="tree" width="300px" > <treecols> <treecol label="My Contact List" /> </treecols> </tree> </window> </zk> DemoComposer.javajava import java.util.HashMap; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.DropEvent; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.select.SelectorComposer; import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zul.DefaultTreeNode; import org.zkoss.zul.Hlayout; import org.zkoss.zul.Image; import org.zkoss.zul.Label; import org.zkoss.zul.Tree; import org.zkoss.zul.Treecell; import org.zkoss.zul.Treeitem; import org.zkoss.zul.TreeitemRenderer; import org.zkoss.zul.Treerow; import org.zkoss.zul.Window; public class DemoComposer extends SelectorComposer<Component> { private static final long serialVersionUID = 3814570327995355261L; @Wire private Window demoWindow; @Wire private Tree tree; private AdvancedTreeModel contactTreeModel; public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); contactTreeModel = new AdvancedTreeModel(new ContactList().getRoot()); tree.setItemRenderer(new ContactTreeRenderer()); tree.setModel(contactTreeModel); } /** * The structure of tree * * <pre> * &lt;treeitem> * &lt;treerow> * &lt;treecell>...&lt;/treecell> * &lt;/treerow> * &lt;treechildren> * &lt;treeitem>...&lt;/treeitem> * &lt;/treechildren> * &lt;/treeitem> * </pre> */ private final class ContactTreeRenderer implements TreeitemRenderer<ContactTreeNode> { @Override public void render(final Treeitem treeItem, ContactTreeNode treeNode, int index) throws Exception { ContactTreeNode ctn = treeNode; Contact contact = (Contact) ctn.getData(); Treerow dataRow = new Treerow(); dataRow.setParent(treeItem); treeItem.setValue(ctn); treeItem.setOpen(ctn.isOpen()); if (!isCategory(contact)) { // Contact Row Hlayout hl = new Hlayout(); hl.appendChild(new Image("/widgets/tree/dynamic_tree/img/" + contact.getProfilepic())); hl.appendChild(new Label(contact.getName())); hl.setSclass("h-inline-block"); Treecell treeCell = new Treecell(); treeCell.appendChild(hl); dataRow.setDraggable("true"); dataRow.appendChild(treeCell); dataRow.addEventListener(Events.ON_DOUBLE_CLICK, new EventListener<Event>() { @Override public void onEvent(Event event) throws Exception { ContactTreeNode clickedNodeValue = (ContactTreeNode) ((Treeitem) event.getTarget().getParent()) .getValue(); Window w = new Window("ZK IM - " + ((Contact) clickedNodeValue.getData()).getName(), "normal", true); w.setPosition("parent"); w.setParent(demoWindow); HashMap<String, String> dataArgs = new HashMap<String, String>(); dataArgs.put("name", clickedNodeValue.getData().getName()); Executions.createComponents("/widgets/tree/dynamic_tree/dialog.zul", w, dataArgs); w.doOverlapped(); } }); } else { // Category Row dataRow.appendChild(new Treecell(contact.getCategory())); } // Both category row and contact row can be item dropped dataRow.setDroppable("true"); dataRow.addEventListener(Events.ON_DROP, new EventListener<Event>() { @SuppressWarnings("unchecked") @Override public void onEvent(Event event) throws Exception { // The dragged target is a TreeRow belongs to an // Treechildren of TreeItem. Treeitem draggedItem = (Treeitem) ((DropEvent) event).getDragged().getParent(); ContactTreeNode draggedValue = (ContactTreeNode) draggedItem.getValue(); Treeitem parentItem = treeItem.getParentItem(); contactTreeModel.remove(draggedValue); if (isCategory((Contact) ((ContactTreeNode) treeItem.getValue()).getData())) { contactTreeModel.add((ContactTreeNode) treeItem.getValue(), new DefaultTreeNode[] { draggedValue }); } else { int index = parentItem.getTreechildren().getChildren().indexOf(treeItem); if(parentItem.getValue() instanceof ContactTreeNode) { contactTreeModel.insert((ContactTreeNode)parentItem.getValue(), index, index, new DefaultTreeNode[] { draggedValue }); } } } }); } private boolean isCategory(Contact contact) { return contact.getName() == null; } } }AdvancedTreeModel.javajavaimport org.zkoss.zul.DefaultTreeModel; import org.zkoss.zul.DefaultTreeNode; public class AdvancedTreeModel extends DefaultTreeModel<Contact> { private static final long serialVersionUID = -5513180500300189445L; DefaultTreeNode<Contact> _root; public AdvancedTreeModel(ContactTreeNode contactTreeNode) { super(contactTreeNode); _root = contactTreeNode; } /** * remove the nodes which parent is <code>parent</code> with indexes * <code>indexes</code> * * @param parent * The parent of nodes are removed * @param indexFrom * the lower index of the change range * @param indexTo * the upper index of the change range * @throws IndexOutOfBoundsException * - indexFrom < 0 or indexTo > number of parent's children */ public void remove(DefaultTreeNode<Contact> parent, int indexFrom, int indexTo) throws IndexOutOfBoundsException { DefaultTreeNode<Contact> stn = parent; for (int i = indexTo; i >= indexFrom; i--) try { stn.getChildren().remove(i); } catch (Exception exp) { exp.printStackTrace(); } } public void remove(DefaultTreeNode<Contact> target) throws IndexOutOfBoundsException { int index = 0; DefaultTreeNode<Contact> parent = null; // find the parent and index of target parent = dfSearchParent(_root, target); for (index = 0; index < parent.getChildCount(); index++) { if (parent.getChildAt(index).equals(target)) { break; } } remove(parent, index, index); } /** * insert new nodes which parent is <code>parent</code> with indexes * <code>indexes</code> by new nodes <code>newNodes</code> * * @param parent * The parent of nodes are inserted * @param indexFrom * the lower index of the change range * @param indexTo * the upper index of the change range * @param newNodes * New nodes which are inserted * @throws IndexOutOfBoundsException * - indexFrom < 0 or indexTo > number of parent's children */ public void insert(DefaultTreeNode<Contact> parent, int indexFrom, int indexTo, DefaultTreeNode<Contact>[] newNodes) throws IndexOutOfBoundsException { DefaultTreeNode<Contact> stn = parent; for (int i = indexFrom; i <= indexTo; i++) { try { stn.getChildren().add(i, newNodes[i - indexFrom]); } catch (Exception exp) { throw new IndexOutOfBoundsException("Out of bound: " + i + " while size=" + stn.getChildren().size()); } } } /** * append new nodes which parent is <code>parent</code> by new nodes * <code>newNodes</code> * * @param parent * The parent of nodes are appended * @param newNodes * New nodes which are appended */ public void add(DefaultTreeNode<Contact> parent, DefaultTreeNode<Contact>[] newNodes) { DefaultTreeNode<Contact> stn = (DefaultTreeNode<Contact>) parent; for (int i = 0; i < newNodes.length; i++) stn.getChildren().add(newNodes[i]); } private DefaultTreeNode<Contact> dfSearchParent(DefaultTreeNode<Contact> node, DefaultTreeNode<Contact> target) { if (node.getChildren() != null && node.getChildren().contains(target)) { return node; } else { int size = getChildCount(node); for (int i = 0; i < size; i++) { DefaultTreeNode<Contact> parent = dfSearchParent((DefaultTreeNode<Contact>) getChild(node, i), target); if (parent != null) { return parent; } } } return null; } } ContactTreeNode.javajavaimport org.zkoss.zul.DefaultTreeNode; public class ContactTreeNode extends DefaultTreeNode<Contact> { private static final long serialVersionUID = -7012663776755277499L; private boolean open = false; public ContactTreeNode(Contact data, DefaultTreeNode<Contact>[] children) { super(data, children); } public ContactTreeNode(Contact data, DefaultTreeNode<Contact>[] children, boolean open) { super(data, children); setOpen(open); } public ContactTreeNode(Contact data) { super(data); } public boolean isOpen() { return open; } public void setOpen(boolean open) { this.open = open; } } ContactList.javajavapublic class ContactList { public final static String Category = "Category"; public final static String Contact = "Contact"; private ContactTreeNode root; public ContactList() { root = new ContactTreeNode(null, new ContactTreeNode[] { new ContactTreeNode(new Contact("Friend"),new ContactTreeNode[] { new ContactTreeNode(new Contact("High School"), new ContactTreeNode[] { new ContactTreeNode(new Contact("Fernando Terrell", "Contact.png")), new ContactTreeNode(new Contact("Stanley Larson", "Contact.png")) },true), new ContactTreeNode(new Contact("University"), new ContactTreeNode[] { new ContactTreeNode(new Contact("Camryn Breanna", "Contact.png")), new ContactTreeNode(new Contact("Juliana Isabela","Contact-gu.png")), new ContactTreeNode(new Contact("Holden Craig", "Contact-g.png")) }), new ContactTreeNode(new Contact("Emma Jones", "Contact-i.png")), new ContactTreeNode(new Contact("Eric Franklin", "Contact.png")), new ContactTreeNode(new Contact("Alfred Wong", "Contact.png")), new ContactTreeNode(new Contact("Miguel Soto", "Contact.png")) },true), new ContactTreeNode(new Contact("Work"),new ContactTreeNode[] { new ContactTreeNode(new Contact("Andrew Willis", "Contact.png")), new ContactTreeNode(new Contact("Russell Thomas", "Contact-jq.png")), new ContactTreeNode(new Contact("Donovan Marcus", "Contact.png")) }) },true ); } public ContactTreeNode getRoot() { return root; } }