/** Sets whether multiple selections are allowed. * <p>Notice that, if a model is assigned, it will change the model's * state (by {@link TreeSelectableModel#setMultiple}). */ public void setMultiple(boolean multiple) { if (_multiple != multiple) { _multiple = multiple; if (!_multiple && _selItems.size() > 1) { final Treeitem item = getSelectedItem(); for (Iterator<Treeitem> it = _selItems.iterator(); it.hasNext();) { final Treeitem ti = it.next(); if (ti != item) { ti.setSelectedDirectly(false); it.remove(); } } //No need to update selId because z.multiple will do the job } if (_model != null) ((TreeSelectableModel) _model).setMultiple(multiple); smartUpdate("multiple", _multiple); } }
/** @deprecated As of release 5.0.6, replaced with {@link #setItemRenderer}. * Sets the renderer which is used to render each item * if {@link #getModel} is not null. * * <p>Note: changing a render will not cause the tree to re-render. * If you want it to re-render, you could assign the same model again * (i.e., setModel(getModel())), or fire an {@link TreeDataEvent} event. * * @param renderer the renderer, or null to use the default. * @exception UiException if failed to initialize with the model * @since 3.0.0 */ public void setTreeitemRenderer(TreeitemRenderer<?> renderer) { setItemRenderer(renderer); }
public void onEvent(Event event) throws Exception { if (_modelInitListener != null) { Tree.this.removeEventListener("onInitModel", _modelInitListener); _modelInitListener = null; } if (_model != null) { //rows not created yet //ZK-1007 Left the job to onInitRenderer if exist if (getAttribute(ATTR_ON_INIT_RENDER_POSTED) == null) { if (_treechildren == null) { renderTree(); } else { setModel(_model); } } } }
/** * Return the Tree or Treeitem component by a path, or null if corresponding * Treeitem is not instantiated (i.e., rendered) yet. It returns this tree * if the given node is the root node. (i.e., {@link TreeModel#getRoot}). * @since 6.0.0 */ protected Component getChildByPath(int[] path) { if (path.length == 0) return this; // return Tree Treeitem item = getChildTreeitem(getTreechildren(), path[0]); for (int j = 1; j < path.length && item != null; j++) item = getChildTreeitem(item.getTreechildren(), path[j]); return item; }
for (Component child : getChildren()) { if (child instanceof Treecols) { _treecols = (Treecols) child; } else if (child instanceof Paging) { _pgi = _paging = (Paging) child; addPagingListener(_pgi); if (--cnt == 0) break; _selItems.clear(); if (cntSel != 0) { for (Treeitem ti : getItems()) { if (ti.isSelected()) { if (_sel == null)
List<String> sitems = cast((List) request.getData().get("items")); boolean selectAll = Boolean.parseBoolean(data.get("selectAll") + ""); boolean paging = inPagingMold(); Paginal pgi = getPaginal(); if (pgi != null) { int pgsz = pgi.getPageSize(); if (paging && (!isCheckmarkDeselectOther() || (isCheckmarkDeselectOther() && selectAll))) { disableClientUpdate(true); clearSelection(); if (_model instanceof TreeSelectableModel) ((TreeSelectableModel) _model).clearSelection(); if (!_multiple || (!paging && isAllRendered() && (curSeldItems == null || curSeldItems.size() <= 1))) { final Treeitem item = curSeldItems != null && curSeldItems.size() > 0 ? curSeldItems.iterator().next() : null; selectItem(item); if (_model instanceof TreeSelectableModel) { TreeSelectableModel tsm = (TreeSelectableModel) _model; tsm.clearSelection(); if (item != null) tsm.addSelectionPath(getTreeitemPath(this, item)); addItemToSelection(item); if (_model instanceof TreeSelectableModel) ((TreeSelectableModel) _model).addSelectionPath(getTreeitemPath(this, item));
public void render(Component comp, Writer out) throws IOException { final SmartWriter wh = new SmartWriter(out); final Tree self = (Tree) comp; final String uuid = self.getUuid(); final String zcls = self.getZclass(); final Execution exec = Executions.getCurrent(); final String tag = exec.isBrowser("ie") || exec.isBrowser("gecko") ? "a" : "button"; wh.write("<div id=\"").write(self.getUuid()).write("\" z.type=\"zul.tree.Tree\" z.pg=\"t\"") .write(self.getOuterAttrs()).write(self.getInnerAttrs()).write(">"); if (self.getPagingChild() != null && self.getPagingPosition().equals("top") || self.getPagingPosition().equals("both")) { wh.write("<div id=\"").write(uuid) .write("!pgit\" class=\"").write(zcls).write("-pgi-t\">") .write(self.getPagingChild()) .write("</div>"); if(self.getTreecols() != null){ wh.write("<div id=\"").write(self.getUuid()).write("!head\" class=\"").write(zcls).write("-header\">") .write("<table width=\"").write(self.getInnerWidth()).write("\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"table-layout:fixed\">"); if(self.getTreecols() != null) { wh.write("<tbody style=\"visibility:hidden;height:0px\">") .write("<tr id=\"").write(self.getTreecols().getUuid()).write("!hdfaker\" class=\"").write(zcls).write("-faker\">"); for (Iterator it = self.getTreecols().getChildren().iterator(); it.hasNext();) { final Treecol child = (Treecol) it.next(); wh.write("<th id=\"").write(child.getUuid()).write("!hdfaker\"").write(child.getOuterAttrs()) wh.writeComponents(self.getHeads()) .write("</table></div>"); wh.write("<div id=\"").write(self.getUuid()).write("!body\" class=\"").write(zcls).write("-body\">")
final TreeModel model = tree.getModel(); boolean isPagingMold = tree.inPagingMold(); int activePg = isPagingMold ? tree.getPaginal().getActivePage() : 0; if (model != null) { //live data if (!(model instanceof Sortable)) ((Sortable) model).sort(cmpr, ascending); } else { //not live data sort0(tree.getTreechildren(), cmpr); tree.getPaginal().setActivePage(activePg); for (Iterator it = tree.getTreecols().getChildren().iterator(); it.hasNext();) { final Treecol col = (Treecol) it.next(); col.setSortDirection(col != this ? "natural" : ascending ? "ascending" : "descending"); tree.invalidate();
final String old = getMold(); if (!Objects.equals(old, mold)) { super.setMold(mold); removePagingListener(_paging); _paging.detach(); } else if (_pgi != null) { removePagingListener(_pgi); invalidate(); //paging mold -> non-paging mold } else if (inPagingMold()) { //change to paging if (_pgi != null) addPagingListener(_pgi); else newInternalPaging(); setFixedLayout(true); resetPosition(true); //non-paging mold -> paging mold if (_model instanceof Pageable) { Pageable m = (Pageable) _model;
if (tree != null && tree.getModel() != null) { if (open && !isLoaded()) { tree.renderItem(Treeitem.this); TreeModel model = tree.getModel(); if (model instanceof TreeOpenableModel) { if (open) hasOpenableModel = ((TreeOpenableModel) model).addOpenPath(tree.getTreeitemPath(tree, this)); else hasOpenableModel = ((TreeOpenableModel) model).removeOpenPath(tree.getTreeitemPath(tree, this)); if (tree != null && tree.inPagingMold()) { TreeModel model = tree.getModel(); if (!open && model != null && WebApps.getFeature("ee")) { int activePage = tree.getActivePage(); getChildren().clear(); setRendered(false); setLoaded(false); Events.postEvent(new PagingEvent("onPagingImpl", (Paging) tree.getPaginal(), activePage)); tree.focus();
public void onEvent(Event event) { if (inPagingMold() && event instanceof PagingEvent) { PagingEvent pe = (PagingEvent) event; if (_model instanceof Pageable) { ((Pageable) _model).setActivePage(pe.getPageable().getActivePage()); if (WebApps.getFeature("ee") && getModel() != null) { if (_rodPagingIndex == null) _rodPagingIndex = new LinkedList<Integer>(); int end = start + size; for (Treeitem ti : new ArrayList<Treeitem>(Tree.this.getItems())) { if (i < start) { i++; final Renderer renderer = new Renderer(); try { for (Treeitem ti : new ArrayList<Treeitem>(Tree.this.getItems())) { if (i < start) { i++; ti.getChildren().clear(); Treechildren parent = (Treechildren) ti.getParent(); Object childNode = Tree.this.getAssociatedNode(ti, Tree.this); renderChildren0(renderer, parent, ti, childNode, i); invalidate();
public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); type = ((String[])param.get("Type"))[0]; fileFilterMap = initFileFilterMap(); String url = getFolderUrl(); if (Strings.isBlank(url)) return; if (url.startsWith("./")) url = url.substring(1); if (!url.startsWith("/")) url = "/" + url; Map rootFolderMap = new TreeMap(); Map map = new TreeMap(); rootFolderMap.put(url, map); parseFolders(url, map); tree.setItemRenderer(new ExplorerTreeitemRenderer()); tree.setModel(new SimpleTreeModel(new SimpleTreeNode("ROOT",initTreeModel(rootFolderMap, new ArrayList())))); showImages(map); }
if (_model instanceof TreeSelectableModel) { TreeSelectableModel model = (TreeSelectableModel) _model; if (!model.isSelectionEmpty() && getSelectedCount() != model.getSelectionCount() && model.isPathSelected(path = getPath0(parent, i))) addItemToSelection(ti); if (path == null) path = getTreeitemPath(this, ti); ti.setOpen(model.isPathOpened(path)); this.renderChildren(renderer, tc, childNode);
@SuppressWarnings("unchecked") public Object coerceToUi(Object val, Component comp, BindContext ctx) { Tree tree = (Tree) comp; final TreeModel<Object> model = tree.getModel(); if (model != null && !(model instanceof TreeSelectableModel)) { for (final Iterator<?> it = tree.getItems().iterator(); it.hasNext();) { final Treeitem ti = (Treeitem) it.next();
List<? extends Component> children = this.getTreechildren().getChildren(); TreeModel model = this.getModel(); if (model instanceof TreeOpenableModel) ((TreeOpenableModel) model).addOpenPath(Arrays.copyOf(path, i + 1));
public void onSelect$tree(){ cntDiv.getChildren().clear(); Treeitem item = tree.getSelectedItem(); Map map = (Map)item.getValue(); showImages(map); }
private static boolean doSort(Tree tree) { Treecols cols = tree.getTreecols(); if (!tree.isAutosort() || cols == null) return false; for (Component c : cols.getChildren()) { final Treecol hd = (Treecol) c; String dir = hd.getSortDirection(); if (!"natural".equals(dir)) { hd.doSort("ascending".equals(dir)); return true; } } return false; }
/** Selects all items. */ public void selectAll() { if (!_multiple) throw new UiException("Appliable only to the multiple seltype: " + this); //we don't invoke getItemCount first because it is slow! boolean first = true; for (Treeitem item : getItems()) { if (!item.isSelected()) { _selItems.add(item); item.setSelectedDirectly(true); } if (first) { _sel = item; first = false; } } smartUpdate("selectAll", true); }
/** Make _sel to be the first selected item. */ private boolean fixSelected() { Treeitem sel = null; switch (_selItems.size()) { case 1: sel = _selItems.iterator().next(); case 0: break; default: for (Treeitem item : getItems()) { if (item.isSelected()) { sel = item; break; } } } if (sel != _sel) { _sel = sel; return true; } return false; }
@SuppressWarnings("unchecked") public Object coerceToBean(Object val, Component comp, BindContext ctx) { Set<Object> vals = new LinkedHashSet<Object>(); if (val != null) { final Tree tree = (Tree) comp; final TreeModel<?> model = tree.getModel(); if (model != null && !(model instanceof TreeSelectableModel)) { throw new UiException("model doesn't implement TreeSelectableModel"); } if (model != null) { int[][] paths = ((TreeSelectableModel) model).getSelectionPaths(); if (paths != null && paths.length > 0) { for (int[] path : paths) { vals.add(model.getChild(path)); } } } else { final Set<Treeitem> items = (Set<Treeitem>) Classes.coerce(LinkedHashSet.class, val); for (Treeitem item : items) { vals.add(item.getValue()); } } } return vals; } }