private void findPath(List<Node> ancestors, IJavaElement element) { if (element == null) { ancestors.add(this.root); return; } findPath(ancestors, getParent(element)); Node last = ancestors.get(ancestors.size() - 1); Node next = last.findChildFor(element); if (next != null) { ancestors.add(next); } } }
private void findPath(List<Node> ancestors, IJavaElement element) { if (element == null) { ancestors.add(this.root); return; } findPath(ancestors, getParent(element)); Node last = ancestors.get(ancestors.size() - 1); Node next = last.findChildFor(element); if (next != null) { ancestors.add(next); } } }
private void findPath(List<Node> ancestors, IJavaElement element) { if (element == null) { ancestors.add(this.root); return; } findPath(ancestors, getParent(element)); Node last = ancestors.get(ancestors.size() - 1); Node next = last.findChildFor(element); if (next != null) { ancestors.add(next); } } }
private Node findExactNode(IJavaElement element) { if (element == null) { return this.root; } Node parentNode = findExactNode(getParent(element)); if (parentNode == null) { return null; } return parentNode.findChildFor(element); }
private Node findMostSpecificNodeFor(IJavaElement element) { if (element == null) { return this.root; } Node parentNode = findMostSpecificNodeFor(getParent(element)); Node child = parentNode.findChildFor(element); if (child == null) { return parentNode; } return child; }
private Node createNodeFor(IJavaElement element) { if (element == null) { return this.root; } Node parentNode = createNodeFor(getParent(element)); return parentNode.createChildFor(element); }
private Node findMostSpecificNodeFor(IJavaElement element) { if (element == null) { return this.root; } Node parentNode = findMostSpecificNodeFor(getParent(element)); Node child = parentNode.findChildFor(element); if (child == null) { return parentNode; } return child; }
private Node createNodeFor(IJavaElement element) { if (element == null) { return this.root; } Node parentNode = createNodeFor(getParent(element)); return parentNode.createChildFor(element); }
private Node createNodeFor(IJavaElement element) { if (element == null) { return this.root; } Node parentNode = createNodeFor(getParent(element)); return parentNode.createChildFor(element); }
private Node findMostSpecificNodeFor(IJavaElement element) { if (element == null) { return this.root; } Node parentNode = findMostSpecificNodeFor(getParent(element)); Node child = parentNode.findChildFor(element); if (child == null) { return parentNode; } return child; }
private Node findExactNode(IJavaElement element) { if (element == null) { return this.root; } Node parentNode = findExactNode(getParent(element)); if (parentNode == null) { return null; } return parentNode.findChildFor(element); }
private Node findExactNode(IJavaElement element) { if (element == null) { return this.root; } Node parentNode = findExactNode(getParent(element)); if (parentNode == null) { return null; } return parentNode.findChildFor(element); }
@Override public boolean remove(IJavaElement element) { Node node = findExactNode(element); if (node == null) { return false; } node.clearChildren(); boolean returnValue = node.isEmpty(); List<Node> ancestors = new ArrayList<>(); findPath(ancestors, element); IJavaElement currentElement = element; int idx = ancestors.size(); while (--idx > 0 && currentElement != null) { Node current = ancestors.get(idx); Node parent = ancestors.get(idx - 1); if (current.isEmpty()) { parent.removeChild(currentElement); } else { break; } currentElement = getParent(currentElement); } return returnValue; }
@Override public boolean remove(IJavaElement element) { Node node = findExactNode(element); if (node == null) { return false; } node.clearChildren(); boolean returnValue = node.isEmpty(); List<Node> ancestors = new ArrayList<>(); findPath(ancestors, element); IJavaElement currentElement = element; int idx = ancestors.size(); while (--idx > 0 && currentElement != null) { Node current = ancestors.get(idx); Node parent = ancestors.get(idx - 1); if (current.isEmpty()) { parent.removeChild(currentElement); } else { break; } currentElement = getParent(currentElement); } return returnValue; }
@Override public boolean remove(IJavaElement element) { Node node = findExactNode(element); if (node == null) { return false; } node.clearChildren(); boolean returnValue = node.isEmpty(); List<Node> ancestors = new ArrayList<>(); findPath(ancestors, element); IJavaElement currentElement = element; int idx = ancestors.size(); while (--idx > 0 && currentElement != null) { Node current = ancestors.get(idx); Node parent = ancestors.get(idx - 1); if (current.isEmpty()) { parent.removeChild(currentElement); } else { break; } currentElement = getParent(currentElement); } return returnValue; }
final int nodeIndex = bp.getParent().getChildrenUnmodifiable() .indexOf(bp); clipboard.putString(Integer.toString(nodeIndex));