/** * Override to enable promotion of items * * @param node The node to test. * @return True if the node can be demoted. */ protected boolean canDemote(Treenode node) { return hierarchical && node.getParent() != tree; }
/** * Returns the path of the specified tree node. This consists of the indexes or labels of this * and all parent nodes separated by a "\" character. * * @param item The node (tree item) whose path is to be returned. If this value is null, a zero * length string is returned. * @param useLabels If true, use the labels as identifiers; otherwise, use indexes. * @return The path of the node as described. */ public static String getPath(Treenode item, boolean useLabels) { StringBuilder sb = new StringBuilder(); boolean needsDelim = false; while (item != null) { if (needsDelim) { sb.insert(0, '\\'); } else { needsDelim = true; } sb.insert(0, useLabels ? item.getLabel() : item.getIndex()); item = (Treenode) item.getParent(); } return sb.toString(); }
/** * Ensures that this node is visible (i.e., all of its parent tree nodes are expanded. */ public void makeVisible() { BaseComponent node = getParent(); while (node instanceof Treenode) { ((Treenode) node).setCollapsed(false); node = node.getParent(); } scrollIntoView(); }
/** * Moves item1 to follow item2. * * @param item1 = A tree node. * @param item2 = A tree node. */ private void swap(Treenode item1, Treenode item2) { if (item1 != null && item2 != null) { item1.getParent().swapChildren(item1.getIndex(), item2.getIndex()); doChanged(true); } }
@EventHandler(value = "click", target = "@btnLeft") private void onClick$btnLeft() { Treenode node = tree.getSelectedNode(); doDrop(node, (Treenode) node.getParent().getParent(), false); }
BaseComponent parent = next.getParent();
/** * Adds a tree node under the specified parent. * * @param proxy The proxy associated with the tree node. * @param parent The tree parent to receive the new tree node. * @param insertAfter Tree node after which new node will be added (may be null). * @return The newly created tree node. */ protected Treenode addTreenode(Proxy proxy, BaseComponent parent, Treenode insertAfter) { Treenode node = null; if (proxy != null) { node = new Treenode(); parent = parent == null ? (insertAfter == null ? tree : insertAfter.getParent()) : parent; BaseComponent refChild = insertAfter == null ? null : insertAfter.getNextSibling(); parent.addChild(node, refChild); proxy.setItem(node); initProxy(proxy); if (hasLabelProperty(proxy.getDefinition().getClazz())) { node.addEventForward(DblclickEvent.TYPE, tree, null); } } return node; }
private void doDrop(Treenode dragged, Treenode target, boolean allowExchange) { ElementBase eleTarget = getElement(target); ElementBase eleDragged = getElement(dragged); switch (movementType(dragged, target, allowExchange)) { case INVALID: return; case EXCHANGE: eleDragged.setIndex(eleTarget.getIndex()); target.getParent().addChild(dragged, target); break; case FIRST: eleDragged.setIndex(0); target.addChild(dragged, 0); break; case RELOCATE: eleDragged.setParent(eleTarget); getTreenode(target).addChild(dragged); break; } updateDroppable(); updateControls(); }
/** * Update control states for current selection. */ private void updateControls() { Treenode selectedNode = tree.getSelectedNode(); ElementUI selectedElement = getElement(selectedNode); contextMenu.updateStates(selectedElement, btnAdd, btnDelete, btnCopy, btnCut, btnPaste, btnProperties, btnAbout); BaseComponent parent = selectedNode == null ? null : selectedNode.getParent(); //parent = parent == null ? null : parent.getParent(); Treenode target = parent instanceof Treenode ? (Treenode) parent : null; btnLeft.setDisabled(movementType(selectedNode, target, false) == MovementType.INVALID); target = selectedNode == null ? null : (Treenode) selectedNode.getPreviousSibling(); btnRight.setDisabled(movementType(selectedNode, target, false) == MovementType.INVALID); btnUp.setDisabled(movementType(selectedNode, target, true) == MovementType.INVALID); target = selectedNode == null ? null : (Treenode) selectedNode.getNextSibling(); btnDown.setDisabled(movementType(selectedNode, target, true) == MovementType.INVALID); btnToFront.addStyle("opacity", bringToFront ? null : "0.5"); if (selectedElement != null) { window.setContext(contextMenu.getMenupopup()); contextMenu.setOwner(selectedElement); } if (selectedNode != null) { selectedNode.setSelected(false); selectedNode.setSelected(true); } }