public TreeDataProvider(TreeItems<T> treeItems, TreeSourceEventsDelegate<T> eventsDelegate) { this.treeItems = treeItems; this.eventsDelegate = eventsDelegate; this.itemSetChangeSubscription = this.treeItems.addItemSetChangeListener(this::datasourceItemSetChanged); this.valueChangeSubscription = this.treeItems.addValueChangeListener(this::datasourceValueChanged); this.stateChangeSubscription = this.treeItems.addStateChangeListener(this::datasourceStateChanged); this.selectedItemChangeSubscription = this.treeItems.addSelectedItemChangeListener(this::datasourceSelectedItemChanged); }
@Override public int getChildCount(HierarchicalQuery<T, SerializablePredicate<T>> query) { if (treeItems.getState() == BindingState.INACTIVE) { return 0; } return treeItems.getChildCount(query.getParent()); }
@Override public Stream<T> fetchChildren(HierarchicalQuery<T, SerializablePredicate<T>> query) { if (treeItems.getState() == BindingState.INACTIVE) { return Stream.empty(); } return treeItems.getChildren(query.getParent()) .skip(query.getOffset()) .limit(query.getLimit()); }
@Override public void expand(Object itemId) { expand(getItems().getItem(itemId)); }
@Override public void treeSourceItemSetChanged(TreeItems.ItemSetChangeEvent<E> event) { // #PL-2035, reload selection from ds Set<E> selectedItems = getSelected(); Set<E> newSelection = new HashSet<>(); TreeItems<E> source = event.getSource(); for (E item : selectedItems) { if (source.containsItem(item)) { newSelection.add(source.getItem(item.getId())); } } if (source.getState() == BindingState.ACTIVE && source instanceof EntityTreeItems && ((EntityTreeItems<E>) source).getSelectedItem() != null) { newSelection.add(((EntityTreeItems<E>) source).getSelectedItem()); } if (newSelection.isEmpty()) { setSelected((E) null); } else { // Workaround for the MultiSelect model. // Set the selected items only if the previous selection is different // Otherwise, the tree rows will display the values before editing if (isMultiSelect() && !selectedItems.equals(newSelection)) { setSelectedInternal(newSelection); } } refreshActionsState(); }
@Override public Object getId(T item) { return treeItems.getItemId(item); }
@Override public void setItems(TreeItems<E> treeItems) { if (this.dataBinding != null) { this.dataBinding.unbind(); this.dataBinding = null; this.component.setDataProvider(createEmptyDataProvider()); } if (treeItems != null) { this.dataBinding = createDataGridDataProvider(treeItems); this.hierarchyProperty = treeItems.getHierarchyPropertyName(); this.component.setDataProvider(this.dataBinding); initShowInfoAction(); refreshActionsState(); setUiTestId(treeItems); } }
@Override public void collapse(Object itemId) { collapse(getItems().getItem(itemId)); }
@Override public boolean isExpanded(Object itemId) { return component.isExpanded(getItems().getItem(itemId)); }
Group draggedGroup = groupsTree.getItems().getItem(UUID.fromString(draggedItemId));
treeNodes.add(treeItems.getItem(UUID.fromString(id)));