@Override public boolean hasGroups() { return getGroupTableSource().hasGroups(); }
protected List getCachedItemIds() { if (cachedItemIds == null) { if (getGroupTableSource().hasGroups()) { List<Object> result = new ArrayList<>(); List<GroupInfo> roots = getGroupTableSource().rootGroups(); if (!roots.isEmpty()) { for (GroupInfo root : roots) { result.add(root); collectItemIds(root, result); } } cachedItemIds = result; } else { Collection<?> itemIds = getGroupTableSource().getItemIds(); cachedItemIds = new ArrayList<>(itemIds); } if (!cachedItemIds.isEmpty()) { first = cachedItemIds.get(0); last = cachedItemIds.get(cachedItemIds.size() - 1); } } return cachedItemIds; }
@Override public void selectAll() { if (isMultiSelect()) { if (getItems() instanceof GroupTableItems) { GroupTableItems<E> tableSource = (GroupTableItems<E>) getItems(); Collection<?> itemIds = tableSource.hasGroups() ? getAllItemIds(tableSource) : tableSource.getItemIds(); if (!itemIds.isEmpty()) { // Filter items that don't exist in the datasource, e.g. GroupInfo itemIds = itemIds.stream() .filter(tableSource::containsId) .collect(Collectors.toList()); } component.setValue(itemIds); return; } } super.selectAll(); }
&& ((GroupTableItems) tableItems).hasGroups()) { GroupTableItems groupTableSource = (GroupTableItems) tableItems;