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.api.ioc.ViewScoped;
38 import info.magnolia.ui.contentapp.browser.ActionExecutionService;
39 import info.magnolia.ui.contentapp.browser.ListPresenter;
40 import info.magnolia.ui.contentapp.configuration.GridViewDefinition;
41 import info.magnolia.ui.contentapp.observation.JcrDataSourceObservation;
42 import info.magnolia.ui.contentapp.observation.JcrObservation;
43 import info.magnolia.ui.databinding.JcrItemPropertySet;
44 import info.magnolia.ui.datasource.jcr.JcrDatasourceDefinition;
45 import info.magnolia.ui.datasource.jcr.JcrSessionManager;
46
47 import javax.inject.Inject;
48 import javax.jcr.Node;
49
50 import com.vaadin.data.PropertySet;
51
52
53
54
55 @ViewScoped
56 public class JcrListPresenter extends ListPresenter<Node> {
57
58 private final JcrDatasourceDefinition datasourceDefinition;
59 private final JcrDataSourceObservation jcrDataSourceObservation;
60 private final JcrItemInteractionAvailability interactionAvailability;
61
62 @Inject
63 public JcrListPresenter(
64 JcrSessionManager sessionManager,
65 JcrDatasourceDefinition datasourceDefinition,
66 GridViewDefinition<Node> definition,
67 ComponentProvider componentProvider,
68 ActionExecutionService actionExecutionService,
69 JcrObservation jcrObservation) {
70 super(definition, componentProvider, actionExecutionService);
71 this.datasourceDefinition = datasourceDefinition;
72
73 this.interactionAvailability = new JcrItemInteractionAvailability(sessionManager);
74 this.jcrDataSourceObservation = new JcrDataSourceObservation(jcrObservation);
75 this.jcrDataSourceObservation.register(datasourceDefinition, this.dataProvider);
76 }
77
78 @Override
79 public FilterableListDataProvider<Node> createDataProvider() {
80 return FilterableListDataProvider.wrap(componentProvider.newInstance(JcrDataProvider.class, datasourceDefinition, jcrDataSourceObservation));
81 }
82
83 @Override
84 protected PropertySet<Node> createPropertySet() {
85 return (PropertySet) JcrItemPropertySet.fromColumns(definition.getColumns());
86 }
87
88 @Override
89 public boolean isItemAvailable(Node item) {
90 return this.interactionAvailability.isItemAvailable(item);
91 }
92
93 @Override
94 public void destroy() {
95 jcrDataSourceObservation.destroy();
96 }
97 }