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.task.app;
35
36 import info.magnolia.context.Context;
37 import info.magnolia.objectfactory.ComponentProvider;
38 import info.magnolia.task.Task;
39 import info.magnolia.task.TasksManager;
40 import info.magnolia.ui.contentapp.FilterableListDataProvider;
41 import info.magnolia.ui.contentapp.browser.ActionExecutionService;
42 import info.magnolia.ui.contentapp.browser.ItemInteractionAvailability;
43 import info.magnolia.ui.contentapp.browser.ListPresenter;
44 import info.magnolia.ui.contentapp.configuration.GridViewDefinition;
45
46 import javax.inject.Inject;
47 import javax.inject.Provider;
48
49 import com.vaadin.data.BeanPropertySet;
50 import com.vaadin.data.PropertySet;
51
52
53
54
55 public class TaskListPresenter extends ListPresenter<Task> {
56
57 private final TasksManager tasksManager;
58 private final TasksDataSourceDefinition dataSourceDefinition;
59 private final Provider<Context> contextProvider;
60 private final ItemInteractionAvailability<Task> itemInteractionAvailability;
61
62 @Inject
63 public TaskListPresenter(GridViewDefinition<Task> definition,
64 ComponentProvider componentProvider,
65 ActionExecutionService actionExecutionService,
66 TasksManager tasksManager,
67 TasksDataSourceDefinition dataSourceDefinition,
68 Provider<Context> contextProvider) {
69 super(definition, componentProvider, actionExecutionService);
70 this.tasksManager = tasksManager;
71 this.dataSourceDefinition = dataSourceDefinition;
72 this.contextProvider = contextProvider;
73 this.itemInteractionAvailability = new TaskInteractionAvailability(tasksManager, dataSourceDefinition.getCategory());
74 }
75
76 @Override
77 public FilterableListDataProvider<Task> createDataProvider() {
78 return FilterableListDataProvider.wrap(new TasksDataProvider(tasksManager, contextProvider, dataSourceDefinition));
79 }
80
81 @Override
82 protected PropertySet<Task> createPropertySet() {
83 return BeanPropertySet.get(Task.class);
84 }
85
86 @Override
87 public boolean isItemAvailable(Task item) {
88 return itemInteractionAvailability.isItemAvailable(item);
89 }
90 }