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.view;
35
36 import info.magnolia.event.EventBus;
37 import info.magnolia.task.Task;
38 import info.magnolia.task.app.TasksSubApp;
39 import info.magnolia.task.event.TaskEvent;
40 import info.magnolia.task.event.TaskEventHandler;
41 import info.magnolia.ui.api.app.SubAppContext;
42 import info.magnolia.ui.api.event.AdmincentralEventBus;
43 import info.magnolia.ui.contentapp.browser.ContentViews;
44 import info.magnolia.ui.contentapp.browser.Workbench;
45 import info.magnolia.ui.contentapp.browser.context.ValueContext;
46 import info.magnolia.ui.contentapp.configuration.WorkbenchDefinition;
47
48 import javax.inject.Inject;
49 import javax.inject.Named;
50
51
52
53
54 public class TasksWorkbench extends Workbench<Task> {
55 @Inject
56 public TasksWorkbench(TasksWorkbenchDefinition definition, WorkbenchContext workbenchContext,
57 SubAppContext subAppContext, ValueContext<Task> valueContext,
58 @Named(AdmincentralEventBus.NAME) EventBus eventBus) {
59 super(definition, workbenchContext);
60
61 eventBus.addHandler(TaskEvent.class, createTaskHandler(subAppContext));
62
63 valueContext.observe(taskSelectedItems -> updateTitle(subAppContext));
64 }
65
66 @Override
67 protected ContentViews<Task> getContentViews(WorkbenchDefinition<Task> definition) {
68 final TasksContentViewsDefinition contentViewsDefinition = new TasksContentViewsDefinition(definition.getContentViews());
69 return create(contentViewsDefinition);
70 }
71
72 private TaskEventHandler createTaskHandler(SubAppContext subAppContext) {
73 return new TaskEventHandler() {
74 @Override
75 public void taskClaimed(TaskEvent taskEvent) {
76 updateTitle(subAppContext);
77 }
78
79 @Override
80 public void taskAdded(TaskEvent taskEvent) {
81 updateTitle(subAppContext);
82
83 }
84
85 @Override
86 public void taskArchived(TaskEvent taskEvent) {
87 updateTitle(subAppContext);
88
89 }
90
91 @Override
92 public void taskResolved(TaskEvent taskEvent) {
93 updateTitle(subAppContext);
94
95 }
96
97 @Override
98 public void taskFailed(TaskEvent taskEvent) {
99 updateTitle(subAppContext);
100
101 }
102
103 @Override
104 public void taskRemoved(TaskEvent taskEvent) {
105 updateTitle(subAppContext);
106
107 }
108
109 @Override
110 public void taskScheduled(TaskEvent taskEvent) {
111 updateTitle(subAppContext);
112
113 }
114 };
115 }
116
117 private void updateTitle(SubAppContext subAppContext) {
118 subAppContext.getAppContext().getSubAppContexts().forEach(context -> {
119 context.getAppContext().getView().updateCaption(context.getInstanceId(), context.getSubApp().getCaption());
120
121 TasksSubApp tasksSubApp = (TasksSubApp) subAppContext.getSubApp();
122 if (subAppContext.getSubAppId().equals(context.getSubAppId())) {
123 setTitle(tasksSubApp.getTitle());
124 }
125 });
126 }
127 }