@Override public void applyPreservingExpansionState(Task rootTask, Predicate<Task> callable) { MutableTreeTableNode rootNode = getNode(rootTask); List<MutableTreeTableNode> subtree = TreeUtil.collectSubtree(rootNode); Collections.reverse(subtree); LinkedHashMap<Task, Boolean> states = Maps.newLinkedHashMap(); for (MutableTreeTableNode node : subtree) { Task t = (Task) node.getUserObject(); states.put(t, t.getExpand()); } callable.apply(rootTask); for (Map.Entry<Task, Boolean> state : states.entrySet()) { setExpanded(state.getKey(), state.getValue()); } }
/** @return an ArrayList with all tasks. */ List<MutableTreeTableNode> getAllTasks() { return TreeUtil.collectSubtree(getRootNode()); }