if (node == null) return; if (node != getNodeAt(getTouchDownY())) return; if (selection.getMultiple() && selection.hasItems() && UIUtils.shift()) { if (!UIUtils.ctrl()) selection.clear(); float start = rangeStart.actor.getY(), end = node.actor.getY(); if (start > end) else { selectNodes(rootNodes, start, end); selection.items().orderedItems().reverse(); selection.fireChangeEvent(); Tree.this.rangeStart = rangeStart; return; if (node.children.size > 0 && (!selection.getMultiple() || !UIUtils.ctrl())) { selection.choose(node); if (!selection.isEmpty()) rangeStart = node;
public void clear () { if (selected.size == 0) return; snapshot(); selected.clear(); if (programmaticChangeEvents && fireChangeEvent()) revert(); else { lastSelected = null; changed(); } cleanup(); }
/** Adds the item to the selection. */ public void add (T item) { if (item == null) throw new IllegalArgumentException("item cannot be null."); if (!selected.add(item)) return; if (programmaticChangeEvents && fireChangeEvent()) selected.remove(item); else { lastSelected = item; changed(); } }
return; Selection<Node> selection = tree.getSelection(); if(selection.size() < 1) return; if(selection.getMultiple()) { @SuppressWarnings("unchecked") Array<FileHandle> files = Pools.obtain(Array.class); Pools.free(files); } else { Object object = selection.getLastSelected().getObject(); if(object instanceof FileHandle) { FileHandle file = (FileHandle) object;
public Array<Node> getSiblings() { Selection<Node> selection = tree.getSelection(); Node nodeSel = selection.first(); int level = nodeSel.getLevel(); Array<Node> siblings = (level == 1) ? tree.getRootNodes(): nodeSel.getParent().getChildren(); return siblings; }
/** Removes all tree nodes. */ public void clearChildren () { super.clearChildren(); setOverNode(null); rootNodes.clear(); selection.clear(); }
void selectNodes (Array<Node> nodes, float low, float high) { for (int i = 0, n = nodes.size; i < n; i++) { Node node = nodes.get(i); if (node.actor.getY() < low) break; if (!node.isSelectable()) continue; if (node.actor.getY() <= high) selection.add(node); if (node.expanded) selectNodes(node.children, low, high); } }
/** Draws selection, icons, and expand icons. */ private void draw (Batch batch, Array<Node> nodes, float indent, float plusMinusWidth) { Drawable plus = style.plus, minus = style.minus; float x = getX(), y = getY(), expandX = x + indent, iconX = expandX + plusMinusWidth + iconSpacingLeft; for (int i = 0, n = nodes.size; i < n; i++) { Node node = nodes.get(i); float height = node.height; Actor actor = node.actor; if (selection.contains(node) && style.selection != null) { style.selection.draw(batch, x, y + actor.getY() - ySpacing / 2, getWidth(), height + ySpacing); } else if (node == overNode && style.over != null) { style.over.draw(batch, x, y + actor.getY() - ySpacing / 2, getWidth(), height + ySpacing); } if (node.icon != null) { float iconY = y + actor.getY() + Math.round((height - node.icon.getMinHeight()) / 2); batch.setColor(actor.getColor()); node.icon.draw(batch, iconX, iconY, node.icon.getMinWidth(), node.icon.getMinHeight()); batch.setColor(Color.WHITE); } if (node.children.size == 0) continue; Drawable expandIcon = node.expanded ? minus : plus; float iconY = y + actor.getY() + Math.round((height - expandIcon.getMinHeight()) / 2); expandIcon.draw(batch, expandX, iconY, expandIcon.getMinWidth(), expandIcon.getMinHeight()); if (node.expanded) draw(batch, node.children, indent + indentSpacing, plusMinusWidth); } }
@Override public void changed(ChangeEvent event, Actor actor) { Selection<Node> selection = tree.getSelection(); if (selection.isEmpty()) { upBtn.setDisabled(true); downBtn.setDisabled(true); leftBtn.setDisabled(true); rightBtn.setDisabled(true); } else { Node nodeSel = selection.first(); int level = nodeSel.getLevel(); Array<Node> siblings = getSiblings(); upBtn.setDisabled(siblings.get(0) == nodeSel); downBtn.setDisabled(siblings.get(siblings.size - 1) == nodeSel); leftBtn.setDisabled(level==1); rightBtn.setDisabled(siblings.get(0) == nodeSel); } toolbar.disableEdit(selection == null); }
public void remove (T item) { if (item == null) throw new IllegalArgumentException("item cannot be null."); if (!selected.remove(item)) return; if (programmaticChangeEvents && fireChangeEvent()) selected.add(item); else { lastSelected = null; changed(); } }
/** Removes all tree nodes. */ public void clearChildren () { super.clearChildren(); setOverNode(null); rootNodes.clear(); selection.clear(); }
void selectNodes (Array<Node> nodes, float low, float high) { for (int i = 0, n = nodes.size; i < n; i++) { Node node = nodes.get(i); if (node.actor.getY() < low) break; if (!node.isSelectable()) continue; if (node.actor.getY() <= high) selection.add(node); if (node.expanded) selectNodes(node.children, low, high); } }
/** Draws selection, icons, and expand icons. */ private void draw (Batch batch, Array<Node> nodes, float indent, float plusMinusWidth) { Drawable plus = style.plus, minus = style.minus; float x = getX(), y = getY(), expandX = x + indent, iconX = expandX + plusMinusWidth + iconSpacingLeft; for (int i = 0, n = nodes.size; i < n; i++) { Node node = nodes.get(i); float height = node.height; Actor actor = node.actor; if (selection.contains(node) && style.selection != null) { style.selection.draw(batch, x, y + actor.getY() - ySpacing / 2, getWidth(), height + ySpacing); } else if (node == overNode && style.over != null) { style.over.draw(batch, x, y + actor.getY() - ySpacing / 2, getWidth(), height + ySpacing); } if (node.icon != null) { float iconY = y + actor.getY() + Math.round((height - node.icon.getMinHeight()) / 2); batch.setColor(actor.getColor()); node.icon.draw(batch, iconX, iconY, node.icon.getMinWidth(), node.icon.getMinHeight()); batch.setColor(Color.WHITE); } if (node.children.size == 0) continue; Drawable expandIcon = node.expanded ? minus : plus; float iconY = y + actor.getY() + Math.round((height - expandIcon.getMinHeight()) / 2); expandIcon.draw(batch, expandX, iconY, expandIcon.getMinWidth(), expandIcon.getMinHeight()); if (node.expanded) draw(batch, node.children, indent + indentSpacing, plusMinusWidth); } }
public void clear () { if (selected.size == 0) return; snapshot(); selected.clear(); if (programmaticChangeEvents && fireChangeEvent()) revert(); else { lastSelected = null; changed(); } cleanup(); }
if (node == null) return; if (node != getNodeAt(getTouchDownY())) return; if (selection.getMultiple() && selection.hasItems() && UIUtils.shift()) { if (!UIUtils.ctrl()) selection.clear(); float start = rangeStart.actor.getY(), end = node.actor.getY(); if (start > end) else { selectNodes(rootNodes, start, end); selection.items().orderedItems().reverse(); selection.fireChangeEvent(); Tree.this.rangeStart = rangeStart; return; if (node.children.size > 0 && (!selection.getMultiple() || !UIUtils.ctrl())) { selection.choose(node); if (!selection.isEmpty()) rangeStart = node;
/** Adds the item to the selection. */ public void add (T item) { if (item == null) throw new IllegalArgumentException("item cannot be null."); if (!selected.add(item)) return; if (programmaticChangeEvents && fireChangeEvent()) selected.remove(item); else { lastSelected = item; changed(); } }