1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.contentapp.browser;
35
36 import info.magnolia.objectfactory.ComponentProvider;
37 import info.magnolia.ui.availability.AvailabilityChecker;
38 import info.magnolia.ui.contentapp.Datasource;
39 import info.magnolia.ui.contentapp.FilterableHierarchicalDataProvider;
40 import info.magnolia.ui.contentapp.configuration.GridViewDefinition;
41 import info.magnolia.ui.observation.DatasourceObservation;
42
43 import java.util.stream.Stream;
44
45 import javax.inject.Inject;
46
47 import com.vaadin.ui.TreeGrid;
48
49
50
51
52
53
54
55 public abstract class TreePresenter<T> extends GridViewPresenter<T> {
56
57 @Inject
58 public TreePresenter(
59 GridViewDefinition<T> definition,
60 ComponentProvider componentProvider,
61 AvailabilityChecker availabilityChecker,
62 Datasource<T> datasource,
63 DatasourceObservation datasourceObservation
64 ) {
65 super(definition, componentProvider, availabilityChecker, datasource, datasourceObservation);
66 }
67
68 public TreePresenter(
69 GridViewDefinition<T> definition,
70 ComponentProvider componentProvider,
71 AvailabilityChecker availabilityChecker,
72 Datasource<T> datasource
73 ) {
74 super(definition, componentProvider, availabilityChecker, datasource, componentProvider.getComponent(DatasourceObservation.class));
75 }
76
77 @Override
78 protected TreeGrid<T> createGrid() {
79 return new MagnoliaTreeGrid<>(
80 propertySet(),
81 this::isItemAvailable,
82 this::isPropertyEditable,
83 datasource
84 );
85 }
86
87 public TreeGrid<T> grid() {
88 return (TreeGrid<T>) super.grid();
89 }
90
91 public abstract Stream<T> getParents(T item);
92
93 @Override
94 protected FilterableHierarchicalDataProvider<T> dataProvider() {
95
96 return (FilterableHierarchicalDataProvider<T>) super.dataProvider();
97 }
98
99 @Override
100 public abstract FilterableHierarchicalDataProvider<T> createDataProvider();
101 }