private Collapsible c() { return (Collapsible) getContainerDataSource(); }
@Override protected int getAddedRowCount() { return countSubNodesRecursively(getContainerDataSource(), toggledItemId); }
@Override public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed) throws UnsupportedOperationException { return getContainerDataSource().setChildrenAllowed(itemId, areChildrenAllowed); }
@Override public boolean setParent(Object itemId, Object newParentId) throws UnsupportedOperationException { return getContainerDataSource().setParent(itemId, newParentId); }
@Override public boolean hasChildren(Object itemId) { return getContainerDataSource().hasChildren(itemId); }
@Override public Collection<?> rootItemIds() { return getContainerDataSource().rootItemIds(); }
@Override public Collection<?> getChildren(Object itemId) { return getContainerDataSource().getChildren(itemId); }
@Override public Object getParent(Object itemId) { return getContainerDataSource().getParent(itemId); }
@Override public boolean isRoot(Object itemId) { return getContainerDataSource().isRoot(itemId); }
@Override public boolean areChildrenAllowed(Object itemId) { return getContainerDataSource().areChildrenAllowed(itemId); }
/** * Preorder of ids currently visible * * @return */ private List<Object> getPreOrder() { if (preOrder == null) { preOrder = new ArrayList<Object>(); Collection<?> rootItemIds = getContainerDataSource() .rootItemIds(); for (Object id : rootItemIds) { preOrder.add(id); addVisibleChildTree(id); } } return preOrder; }
private ContainerStrategy getContainerStrategy() { if (cStrategy == null) { if (getContainerDataSource() instanceof Collapsible) { cStrategy = new CollapsibleStrategy(); } else { cStrategy = new HierarchicalStrategy(); } } return cStrategy; }
/** * Consider adding getDepth to {@link Collapsible}, might help * scalability with some container implementations. */ @Override public int getDepth(Object itemId) { int depth = 0; Hierarchical hierarchicalContainer = getContainerDataSource(); while (!hierarchicalContainer.isRoot(itemId)) { depth++; itemId = hierarchicalContainer.getParent(itemId); } return depth; }
private void addVisibleChildTree(Object id) { if (isNodeOpen(id)) { Collection<?> children = getContainerDataSource() .getChildren(id); if (children != null) { for (Object childId : children) { preOrder.add(childId); addVisibleChildTree(childId); } } } }
@Override protected void paintRowAttributes(PaintTarget target, Object itemId) throws PaintException { super.paintRowAttributes(target, itemId); target.addAttribute("depth", getContainerStrategy().getDepth(itemId)); if (getContainerDataSource().areChildrenAllowed(itemId)) { target.addAttribute("ca", true); target.addAttribute("open", getContainerStrategy().isNodeOpen(itemId)); } }