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); } } }
@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; }