@Override public int getLevel(T item) { TreeDataGridItems<T> items = getTreeDataGridSource(); if (!items.containsItem(item)) { throw new IllegalArgumentException("Data provider doesn't contain the item passed to the method"); } int level = 0; T currentItem = item; while ((currentItem = items.getParent(currentItem)) != null) { ++level; } return level; } }
@Override public int getChildCount(HierarchicalQuery<T, SerializablePredicate<T>> query) { if (getTreeDataGridSource().getState() == BindingState.INACTIVE) { return 0; } return getTreeDataGridSource().getChildCount(query.getParent()); }
@Override public boolean hasChildren(T item) { return getTreeDataGridSource().hasChildren(item); }
protected int createDataGridHierarchicalRow(TreeDataGrid dataGrid, TreeDataGridItems<Entity> treeDataGridItems, List<DataGrid.Column> columns, int startColumn, int rowNumber, Entity item) { if (!checkIsRowNumberExceed(rowNumber)) { createDataGridRow(dataGrid, columns, startColumn, ++rowNumber, item.getId()); Collection<Entity> children = treeDataGridItems.getChildren(item).collect(Collectors.toList()); for (Entity child: children) { rowNumber = createDataGridHierarchicalRow(dataGrid, treeDataGridItems, columns, startColumn, rowNumber, child); } } return rowNumber; }
@Override public Stream<T> fetchChildren(HierarchicalQuery<T, SerializablePredicate<T>> query) { if (dataGridItems.getState() == BindingState.INACTIVE) { return Stream.empty(); } return getTreeDataGridSource().getChildren(query.getParent()) .skip(query.getOffset()) .limit(query.getLimit()); }
@Override public void expandAll() { if (getItems() != null) { expandRecursively(getItems().getChildren(null), Integer.MAX_VALUE); } }
@Override public void collapseAll() { if (getItems() != null) { collapseRecursively(getItems().getChildren(null), Integer.MAX_VALUE); } }
@SuppressWarnings("unchecked") TreeDataGridItems<Entity> treeDataGridItems = (TreeDataGridItems) dataGridSource; List<Entity> items = treeDataGridItems.getChildren(null).collect(Collectors.toList()); for (Entity item: items) { if (checkIsRowNumberExceed(r)) {