Interface HasHierarchicalDataProvider<T>

Type Parameters:
T - the item data type
All Superinterfaces:
Serializable
All Known Implementing Classes:
TreeGrid

public interface HasHierarchicalDataProvider<T> extends Serializable
A generic interface for hierarchical listing components that use a data provider for showing hierarchical data.
Since:
1.2
Author:
Vaadin Ltd
  • Method Details

    • getDataProvider

    • setTreeData

      default void setTreeData(TreeData<T> treeData)
      Sets a new TreeDataProvider wrapping the given TreeData.
      Parameters:
      treeData - the tree data to set
    • getTreeData

      default TreeData<T> getTreeData()
      Gets the backing TreeData instance of the data provider, if the data provider is a TreeDataProvider.
      Returns:
      the TreeData instance used by the data provider
      Throws:
      IllegalStateException - if the type of the data provider is not TreeDataProvider
    • setItems

      default void setItems(Collection<T> rootItems, ValueProvider<T,Collection<T>> childItemProvider)
      Sets the root data items of this component provided as a collection and recursively populates them with child items with the given value provider.

      The provided items are wrapped into a TreeDataProvider backed by a flat TreeData structure. The data provider instance is used as a parameter for the setDataProvider(HierarchicalDataProvider) method. It means that the items collection can be accessed later on via getTreeData():

       
       Collection<Person> grandParents = getGrandParents();
       HasHierarchicalDataProvider<Person> treeGrid = new TreeGrid<>();
       treeGrid.setItems(grandParents, Person::getChildren);
       ...
      
       TreeData<Person> data = treeGrid.getTreeData();
       
       

      The returned TreeData instance may be used as-is to add, remove or modify items in the hierarchy. These modifications to the object are not automatically reflected back to the TreeGrid. Items modified should be refreshed with DataProvider.refreshItem(Object) and when adding or removing items DataProvider.refreshAll() should be called.

      Parameters:
      rootItems - the root items to display, not null
      childItemProvider - the value provider used to recursively populate the given root items with child items, not null
    • setItems

      default void setItems(Stream<T> rootItems, ValueProvider<T,Stream<T>> childItemProvider)
      Sets the root data items of this component provided as a stream and recursively populates them with child items with the given value provider.

      The provided items are wrapped into a TreeDataProvider backed by a flat TreeData structure. The data provider instance is used as a parameter for the setDataProvider(HierarchicalDataProvider) method. It means that the items collection can be accessed later on via getTreeData():

       
       Stream<Person> grandParents = getGrandParents();
       HasHierarchicalDataProvider<Person> treeGrid = new TreeGrid<>();
       treeGrid.setItems(grandParents, Person::getChildren);
       ...
      
       TreeData<Person> data = treeGrid.getTreeData();
       
       

      The returned TreeData instance may be used as-is to add, remove or modify items in the hierarchy. These modifications to the object are not automatically reflected back to the TreeGrid. Items modified should be refreshed with DataProvider.refreshItem(Object) and when adding or removing items DataProvider.refreshAll() should be called.

      Parameters:
      rootItems - the root items to display, not null
      childItemProvider - the value provider used to recursively populate the given root items with child items, not null
    • setDataProvider

      void setDataProvider(HierarchicalDataProvider<T,?> hierarchicalDataProvider)
      Sets the hierarchical data provider for this listing. The data provider provides the items and the hierarchy as needed.
      Parameters:
      hierarchicalDataProvider - the hierarchical data provider to use, not null