@Override public boolean hasChildren(Object element) { return !treeDef.childrenOf((T) element).isEmpty(); }
@Override public Object[] getChildren(Object parentElement) { return treeDef.childrenOf((T) parentElement).toArray(); }
@Override public void updateChildCount(Object element, int currentChildCount) { viewer.setChildCount(element, treeDef.childrenOf((T) element).size()); }
@Override public void updateElement(Object parent, int index) { T child = treeDef.childrenOf((T) parent).get(index); viewer.replace(parent, index, child); updateChildCount(child, 0); }
/** Creates a new {@code TreeDef.Parented} whose {@code childrenOf} and {@code parentOf} methods are filtered by {@code predicate}. */ @Override default Parented<T> filter(Predicate<T> predicate) { return of(node -> TreeImp.filteredList(childrenOf(node), predicate), node -> { if (predicate.test(node)) { return parentOf(node); } else { return null; } }); }