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;
35
36 import info.magnolia.objectfactory.ComponentProvider;
37 import info.magnolia.ui.availability.AvailabilityChecker;
38 import info.magnolia.ui.contentapp.browser.ListPresenter;
39 import info.magnolia.ui.contentapp.configuration.GridViewDefinition;
40 import info.magnolia.ui.contentapp.observation.JcrDataSourceObservation;
41 import info.magnolia.ui.editor.JcrItemPropertySet;
42 import info.magnolia.ui.datasource.jcr.JcrDatasource;
43
44 import javax.inject.Inject;
45 import javax.jcr.Node;
46
47 import com.vaadin.data.PropertySet;
48
49
50
51
52 public class JcrListPresenter extends ListPresenter<Node> {
53
54 private final JcrItemInteractionAvailability interactionAvailability;
55
56 @Inject
57 public JcrListPresenter(
58 GridViewDefinition<Node> definition,
59 ComponentProvider componentProvider,
60 AvailabilityChecker availabilityChecker,
61 JcrDatasource datasource,
62 JcrDataSourceObservation datasourceObservation) {
63 super(definition, componentProvider, availabilityChecker, (Datasource) datasource, datasourceObservation);
64 this.interactionAvailability = new JcrItemInteractionAvailability(datasource);
65 }
66
67 @Override
68 public FilterableListDataProvider<Node> createDataProvider() {
69 return FilterableListDataProvider.wrap(componentProvider.newInstance(JcrDataProvider.class));
70 }
71
72 @Override
73 protected PropertySet<Node> createPropertySet() {
74 return (PropertySet) JcrItemPropertySet.fromColumns(definition.getColumns());
75 }
76
77 @Override
78 public boolean isItemAvailable(Node item) {
79 return this.interactionAvailability.isItemAvailable(item);
80 }
81 }