Class TreeTable<T>

java.lang.Object
com.vaadin.flow.component.Component
com.vaadin.flow.component.grid.Grid<T>
org.vaadin.firitin.components.grid.VGrid<T>
org.vaadin.firitin.components.TreeTable<T>
Type Parameters:
T - the (super) type of the items in the grid
All Implemented Interfaces:
com.vaadin.flow.component.AttachNotifier, com.vaadin.flow.component.BlurNotifier<com.vaadin.flow.component.grid.Grid<T>>, com.vaadin.flow.component.DetachNotifier, com.vaadin.flow.component.Focusable<com.vaadin.flow.component.grid.Grid<T>>, com.vaadin.flow.component.FocusNotifier<com.vaadin.flow.component.grid.Grid<T>>, com.vaadin.flow.component.HasElement, com.vaadin.flow.component.HasEnabled, com.vaadin.flow.component.HasSize, com.vaadin.flow.component.HasStyle, com.vaadin.flow.component.HasTheme, com.vaadin.flow.data.event.SortEvent.SortNotifier<com.vaadin.flow.component.grid.Grid<T>,com.vaadin.flow.component.grid.GridSortOrder<T>>, com.vaadin.flow.data.provider.HasDataGenerators<T>, com.vaadin.flow.data.provider.HasDataView<T,Void,com.vaadin.flow.component.grid.dataview.GridDataView<T>>, com.vaadin.flow.data.provider.HasLazyDataView<T,Void,com.vaadin.flow.component.grid.dataview.GridLazyDataView<T>>, com.vaadin.flow.data.provider.HasListDataView<T,com.vaadin.flow.component.grid.dataview.GridListDataView<T>>, Serializable, FluentAttachNotifier<VGrid<T>>, FluentBlurNotifier<com.vaadin.flow.component.grid.Grid<T>,VGrid<T>>, FluentComponent<VGrid<T>>, FluentDetachNotifier<VGrid<T>>, FluentFocusable<com.vaadin.flow.component.grid.Grid<T>,VGrid<T>>, FluentFocusNotifier<com.vaadin.flow.component.grid.Grid<T>,VGrid<T>>, FluentHasSize<VGrid<T>>, FluentHasStyle<VGrid<T>>, FluentHasTheme<VGrid<T>>

public class TreeTable<T> extends VGrid<T>
Design goals for this component: - support lazy loading - no weird HierarchicalDataProvider stuff - support scrollToItem - also support provide same simpler API for non-lazy loading mode that is available for TreeGrid

Non-goals: - workaround oddities of Grid itself

The API is a bit different from TreeGrid, as it is not possible to provide the HiearchicalDataProvider. In the same way as with the official TreeGrid, you can provide the root items and a method to retrieve children for each item using setRootItems(List, SerializableFunction).

Alternatively, you can provide the data in lazy loading mode with HasLazyDataView.setItems(CallbackDataProvider.FetchCallback) or HasLazyDataView.setItems(CallbackDataProvider.FetchCallback, CallbackDataProvider.CountCallback). With these methods you will also need to define TreeTable.TreeTableModel (or at least TreeTable.LeafModel and TreeTable.LevelModel separately) that Grid uses to visualise the hierarchy. At least TreeTable.OpenModel should be instance specific! The fetch callbacks need to take the current expanded state into account and return visible subtrees as defined by the TreeTable.OpenModel.

Whether you were using lazy loading or in-memory data set, you can override the TreeTable.OpenModel that controls whether the node is open or not. TreeGrid calls the setter TreeTable.OpenModel.setOpen(Object, boolean) when a node is opened/closed, so you can persist that detail to your backend if you wish to persist the state for longer than the current session.

See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
     
    class 
     
    static interface 
     
    static interface 
     
    static class 
     
    static interface 
     
    static interface 
     

    Nested classes/interfaces inherited from class org.vaadin.firitin.components.grid.VGrid

    VGrid.VColumn<T>

    Nested classes/interfaces inherited from class com.vaadin.flow.component.grid.Grid

    com.vaadin.flow.component.grid.Grid.AbstractGridExtension<T extends Object>, com.vaadin.flow.component.grid.Grid.Column<T extends Object>, com.vaadin.flow.component.grid.Grid.DataCommunicatorBuilder<T extends Object,U extends com.vaadin.flow.data.provider.ArrayUpdater>, com.vaadin.flow.component.grid.Grid.MultiSortPriority, com.vaadin.flow.component.grid.Grid.NestedNullBehavior, com.vaadin.flow.component.grid.Grid.SelectionMode, com.vaadin.flow.component.grid.Grid.UpdateQueue

    Nested classes/interfaces inherited from interface com.vaadin.flow.component.BlurNotifier

    com.vaadin.flow.component.BlurNotifier.BlurEvent<C extends com.vaadin.flow.component.Component>

    Nested classes/interfaces inherited from interface com.vaadin.flow.component.FocusNotifier

    com.vaadin.flow.component.FocusNotifier.FocusEvent<C extends com.vaadin.flow.component.Component>
  • Constructor Summary

    Constructors
    Constructor
    Description
     
    TreeTable(Class<T> beanType)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    com.vaadin.flow.component.grid.Grid.Column<T>
    addHierarchyColumn(com.vaadin.flow.function.SerializableFunction<T,String> valueProvider)
     
    com.vaadin.flow.component.grid.Grid.Column<T>
    addHierarchyComponentColumn(com.vaadin.flow.function.SerializableFunction<T,com.vaadin.flow.component.Component> valueProvider)
     
    void
     
     
     
     
    com.vaadin.flow.component.grid.dataview.GridLazyDataView<T>
    setItems(com.vaadin.flow.data.provider.BackEndDataProvider<T,Void> dataProvider)
    Deprecated.
    com.vaadin.flow.component.grid.dataview.GridDataView<T>
    setItems(com.vaadin.flow.data.provider.DataProvider<T,Void> dataProvider)
    Deprecated.
    com.vaadin.flow.component.grid.dataview.GridDataView<T>
    setItems(com.vaadin.flow.data.provider.InMemoryDataProvider<T> inMemoryDataProvider)
    Deprecated.
    com.vaadin.flow.component.grid.dataview.GridListDataView<T>
    setItems(com.vaadin.flow.data.provider.ListDataProvider<T> dataProvider)
    Deprecated.
    com.vaadin.flow.component.grid.dataview.GridListDataView<T>
    Deprecated.
    com.vaadin.flow.component.grid.dataview.GridListDataView<T>
    setItems(T... items)
    Deprecated.
    void
     
    void
     
    void
     
    void
    setRootItems(List<T> rootItems, com.vaadin.flow.function.SerializableFunction<T,List<T>> childrenProvider)
    Set root items for the tree table.
    void
    Sets the tree table model (a combination of TreeTable.OpenModel, TreeTable.LeafModel and TreeTable.LevelModel.

    Methods inherited from class com.vaadin.flow.component.grid.Grid

    addCellFocusListener, addColumn, addColumn, addColumn, addColumn, addColumn, addColumn, addColumn, addColumnReorderListener, addColumnResizeListener, addColumns, addComponentColumn, addContextMenu, addDataGenerator, addDragEndListener, addDragStartListener, addDropListener, addFirstHeaderRow, addItemClickListener, addItemDoubleClickListener, addSelectionListener, addSortListener, addThemeVariants, addValueProvider, appendFooterRow, appendHeaderRow, asMultiSelect, asSingleSelect, compareMaybeComparables, configureBeanType, createColumn, createColumnId, createDefaultArrayUpdater, createEditor, createSortingComparator, deselect, deselectAll, getArrayUpdater, getBeanType, getClassNameGenerator, getColumnByKey, getColumnLayers, getColumnRendering, getColumns, getDataCommunicator, getDataProvider, getDefaultHeaderRow, getDragFilter, getDropFilter, getDropMode, getEditor, getFooterRows, getGenericDataView, getHeaderRows, getLazyDataView, getListDataView, getNestedNullBehavior, getPageSize, getPartNameGenerator, getPropertySet, getSelectedItems, getSelectionModel, getSortOrder, getUniqueKeyProperty, getUniqueKeyProvider, initConnector, insertColumnLayer, isAllRowsVisible, isColumnReorderingAllowed, isDetailsVisible, isDetailsVisibleOnClick, isMultiSort, isRowsDraggable, onAttach, onDataProviderChange, onDetach, onEnabledStateChanged, prependFooterRow, prependHeaderRow, recalculateColumnWidths, removeAllColumns, removeColumn, removeColumnByKey, removeColumnLayer, removeColumns, removeThemeVariants, scrollToEnd, scrollToIndex, scrollToStart, select, setAllRowsVisible, setClassNameGenerator, setColumnKey, setColumnOrder, setColumnOrder, setColumnRendering, setColumnReorderingAllowed, setColumns, setDataProvider, setDefaultMultiSortPriority, setDetailsVisible, setDetailsVisibleOnClick, setDragDataGenerator, setDragFilter, setDropFilter, setDropMode, setItemDetailsRenderer, setMultiSort, setMultiSort, setMultiSort, setMultiSort, setNestedNullBehavior, setPageSize, setPartNameGenerator, setRowsDraggable, setSelectionDragDetails, setSelectionMode, setSelectionModel, setSortableColumns, setTooltipGenerator, setUniqueKeyProperty, setUniqueKeyProvider, sort, updateSelectionModeOnClient

    Methods inherited from class com.vaadin.flow.component.Component

    addListener, findAncestor, fireEvent, from, get, getChildren, getElement, getEventBus, getId, getListeners, getLocale, getParent, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getUI, hasListener, isAttached, isTemplateMapped, isVisible, removeFromParent, scrollIntoView, scrollIntoView, set, setElement, setId, setVisible

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface com.vaadin.flow.component.AttachNotifier

    addAttachListener

    Methods inherited from interface com.vaadin.flow.component.BlurNotifier

    addBlurListener

    Methods inherited from interface com.vaadin.flow.component.DetachNotifier

    addDetachListener

    Methods inherited from interface org.vaadin.firitin.fluency.ui.FluentAttachNotifier

    withAttachListener

    Methods inherited from interface org.vaadin.firitin.fluency.ui.FluentBlurNotifier

    withBlurListener

    Methods inherited from interface org.vaadin.firitin.fluency.ui.FluentComponent

    setId, setVisible, withId, withVisible

    Methods inherited from interface org.vaadin.firitin.fluency.ui.FluentDetachNotifier

    withDetachListener

    Methods inherited from interface org.vaadin.firitin.fluency.ui.FluentFocusable

    withTabIndex

    Methods inherited from interface org.vaadin.firitin.fluency.ui.FluentFocusNotifier

    withFocusListener

    Methods inherited from interface org.vaadin.firitin.fluency.ui.FluentHasStyle

    withAddedClassName, withClassName, withStyle

    Methods inherited from interface org.vaadin.firitin.fluency.ui.FluentHasTheme

    withThemeNames

    Methods inherited from interface com.vaadin.flow.component.Focusable

    addFocusShortcut, blur, focus, getTabIndex, setTabIndex

    Methods inherited from interface com.vaadin.flow.component.FocusNotifier

    addFocusListener

    Methods inherited from interface com.vaadin.flow.component.HasElement

    getElement

    Methods inherited from interface com.vaadin.flow.component.HasEnabled

    isEnabled, setEnabled

    Methods inherited from interface com.vaadin.flow.data.provider.HasLazyDataView

    setItems, setItems

    Methods inherited from interface com.vaadin.flow.component.HasSize

    getHeight, getHeightUnit, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getWidth, getWidthUnit, setHeight, setHeight, setHeightFull, setMaxHeight, setMaxHeight, setMaxWidth, setMaxWidth, setMinHeight, setMinHeight, setMinWidth, setMinWidth, setSizeFull, setSizeUndefined, setWidth, setWidth, setWidthFull

    Methods inherited from interface com.vaadin.flow.component.HasStyle

    addClassName, addClassNames, getClassName, getClassNames, getStyle, hasClassName, removeClassName, removeClassNames, setClassName, setClassName

    Methods inherited from interface com.vaadin.flow.component.HasTheme

    addThemeName, addThemeNames, getThemeName, getThemeNames, hasThemeName, removeThemeName, removeThemeNames, setThemeName, setThemeName
  • Constructor Details

    • TreeTable

      public TreeTable()
    • TreeTable

      public TreeTable(Class<T> beanType)
  • Method Details

    • addHierarchyColumn

      public com.vaadin.flow.component.grid.Grid.Column<T> addHierarchyColumn(com.vaadin.flow.function.SerializableFunction<T,String> valueProvider)
    • addHierarchyComponentColumn

      public com.vaadin.flow.component.grid.Grid.Column<T> addHierarchyComponentColumn(com.vaadin.flow.function.SerializableFunction<T,com.vaadin.flow.component.Component> valueProvider)
    • setTreeTableModel

      public void setTreeTableModel(TreeTable.TreeTableModel model)
      Sets the tree table model (a combination of TreeTable.OpenModel, TreeTable.LeafModel and TreeTable.LevelModel. This (or separately TreeTable.LeafModel and TreeTable.LevelModel) must be set in case the rows are passed in with the lazy loading mode (using either HasLazyDataView.setItems(com.vaadin.flow.data.provider.CallbackDataProvider.FetchCallback) or HasLazyDataView.setItems(com.vaadin.flow.data.provider.CallbackDataProvider.FetchCallback, com.vaadin.flow.data.provider.CallbackDataProvider.CountCallback)).
      Parameters:
      model - the tree table model.
    • setRootItems

      public void setRootItems(List<T> rootItems, com.vaadin.flow.function.SerializableFunction<T,List<T>> childrenProvider)
      Set root items for the tree table. This is a simpler API for non-lazy loading mode. You only need to provide the root items and a method to retrieve children for each item. TreeTable will then automatically load all children recursively, when needed.

      When using this method, customizing TreeTable.LeafModel or TreeTable.LevelModel is not needed nor supported. If you want, you can override the default in-memory TreeTable.OpenModel that keeps all items closed by default.

      Parameters:
      rootItems - root items
      childrenProvider - a function to retrieve children for each item
    • getOpenModel

      public TreeTable.OpenModel<T> getOpenModel()
    • setOpenModel

      public void setOpenModel(TreeTable.OpenModel<T> openModel)
    • getLevelModel

      public TreeTable.LevelModel<T> getLevelModel()
    • setLevelModel

      public void setLevelModel(TreeTable.LevelModel<T> levelModel)
    • getLeafModel

      public TreeTable.LeafModel<T> getLeafModel()
    • setLeafModel

      public void setLeafModel(TreeTable.LeafModel<T> leafModel)
    • setItems

      @Deprecated public com.vaadin.flow.component.grid.dataview.GridDataView<T> setItems(com.vaadin.flow.data.provider.DataProvider<T,Void> dataProvider)
      Deprecated.
      Not supported in TreeTable, use setRootItems or setItems instead
      Specified by:
      setItems in interface com.vaadin.flow.data.provider.HasDataView<T,Void,com.vaadin.flow.component.grid.dataview.GridDataView<T>>
      Overrides:
      setItems in class com.vaadin.flow.component.grid.Grid<T>
    • setItems

      @Deprecated public com.vaadin.flow.component.grid.dataview.GridDataView<T> setItems(com.vaadin.flow.data.provider.InMemoryDataProvider<T> inMemoryDataProvider)
      Deprecated.
      Not supported in TreeTable, use setRootItems or setItems instead
      Specified by:
      setItems in interface com.vaadin.flow.data.provider.HasDataView<T,Void,com.vaadin.flow.component.grid.dataview.GridDataView<T>>
      Overrides:
      setItems in class com.vaadin.flow.component.grid.Grid<T>
    • setItems

      @Deprecated public com.vaadin.flow.component.grid.dataview.GridLazyDataView<T> setItems(com.vaadin.flow.data.provider.BackEndDataProvider<T,Void> dataProvider)
      Deprecated.
      Not supported in TreeTable, use setRootItems or setItems instead
      Specified by:
      setItems in interface com.vaadin.flow.data.provider.HasLazyDataView<T,Void,com.vaadin.flow.component.grid.dataview.GridLazyDataView<T>>
      Overrides:
      setItems in class com.vaadin.flow.component.grid.Grid<T>
    • setItems

      @Deprecated public com.vaadin.flow.component.grid.dataview.GridListDataView<T> setItems(T... items)
      Deprecated.
      Not supported in TreeTable, use setRootItems or setItems instead
    • setItems

      @Deprecated public com.vaadin.flow.component.grid.dataview.GridListDataView<T> setItems(com.vaadin.flow.data.provider.ListDataProvider<T> dataProvider)
      Deprecated.
      Not supported in TreeTable, use setRootItems or setItems instead
      Specified by:
      setItems in interface com.vaadin.flow.data.provider.HasListDataView<T,com.vaadin.flow.component.grid.dataview.GridListDataView<T>>
      Overrides:
      setItems in class com.vaadin.flow.component.grid.Grid<T>
    • setItems

      @Deprecated public com.vaadin.flow.component.grid.dataview.GridListDataView<T> setItems(Collection<T> items)
      Deprecated.
      Not supported in TreeTable, use setRootItems or setItems instead
    • allowUserToToggleOpenState

      public void allowUserToToggleOpenState(boolean allow)