private boolean isAllRendered() { for (Treeitem item : getItems()) { if (!item.isRendered() || !item.isLoaded()) return false; } return true; }
private void onTreeDataRemoved(Component parent, Object node, int index) { final Treechildren tc = treechildrenOf(parent); final List<? extends Component> items = tc.getChildren(); if (items.size() > index) { ((Treeitem) items.get(index)).detach(); } else if (!(parent instanceof Treeitem) || ((Treeitem) parent).isLoaded()) { tc.detach(); } }
private void onTreeDataInsert(Component parent, Object node, int index) { /* * Find the sibling to insertBefore; if there is no sibling or new item * is inserted at end. */ Treeitem newTi = newUnloadedItem(); Treechildren tc = treechildrenOf(parent); //B50-ZK-721 if (!(parent instanceof Treeitem) || ((Treeitem) parent).isLoaded()) { List<? extends Component> siblings = tc.getChildren(); // if there is no sibling or new item is inserted at end. tc.insertBefore(newTi, // Note: we don't use index >= size(); reason: it detects bug siblings.isEmpty() || index == siblings.size() ? null : (Treeitem) siblings.get(index)); renderChangedItem(newTi, _model.getChild(node, index)); } }
/** * Unload the tree item * <p>To load the tree item, with * {@link Tree#renderItem(Treeitem)}, {@link Tree#renderItem(Treeitem, Object)}, or {@link Tree#renderItems(java.util.Set)} * * @since 3.0.4 */ public void unload() { if (isLoaded()) { //Clean its children if (getTreechildren() != null) getTreechildren().getChildren().clear(); //Set the load status to unloaded setLoaded(false); //Change the "+/-" sign icon setOpen(false); } }
/** Sets whether this container is open. */ public void setOpen(boolean open) { if (_open != open) { _open = open; //Note: _treerow might not be ready yet because it might be //initialized before creating child components (for ZK pages) smartUpdate("open", _open); //If the item is open, its tree has model and not rendered, render the item if (_treechildren != null) addVisibleItemCount((_open ? 1 : -1) * _treechildren.getVisibleItemCount()); Tree tree = getTree(); if (tree != null && tree.getModel() != null) { if (_open && !isLoaded()) tree.renderItem(this); } } }
/** Note: it doesn't call render doCatch/doFinally */ private void renderItem0(Renderer renderer, Treeitem item, Object node) throws Throwable { if (item.isLoaded()) //all direct children are loaded return; /* * After modified the node in tree model, if node is leaf, * its treechildren is needed to be dropped. */ Treechildren tc = item.getTreechildren(); if (_model.isLeaf(node)) { if (tc != null) tc.detach(); //just in case //no children to render //Note item already rendered, so no need: //renderer.render(item, node); } else { if (tc != null) tc.getChildren().clear(); //just in case else { tc = new Treechildren(); tc.setParent(item); } renderChildren(renderer, tc, node); } Object v = item.getAttribute(Attributes.MODEL_RENDERAS); if (v != null) //a new item is created to replace the existent one (item = (Treeitem) v).setOpen(false); item.setLoaded(true); }
protected void renderProperties(org.zkoss.zk.ui.sys.ContentRenderer renderer) throws java.io.IOException { super.renderProperties(renderer); render(renderer, "selected", isSelected()); render(renderer, "disabled", isDisabled()); if (!isOpen()) renderer.render("open", false); if (!isSelectable()) renderer.render("checkable", false); render(renderer, "_loadedChildren", isLoaded()); render(renderer, "_loaded", isRendered() ? true : (getTree() != null ? getTree().getModel() == null : false)); if (_value instanceof String) render(renderer, "value", _value); }
boolean hasOpenableModel = false; if (tree != null && tree.getModel() != null) { if (open && !isLoaded()) { tree.renderItem(Treeitem.this);