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.admincentral.apps.notifications.view;
35
36 import info.magnolia.context.MgnlContext;
37 import info.magnolia.ui.api.app.SubApp;
38 import info.magnolia.ui.api.app.SubAppContext;
39 import info.magnolia.ui.api.message.Message;
40 import info.magnolia.ui.contentapp.browser.ContentViews;
41 import info.magnolia.ui.contentapp.browser.Workbench;
42 import info.magnolia.ui.contentapp.browser.context.ValueContext;
43 import info.magnolia.ui.contentapp.configuration.WorkbenchDefinition;
44 import info.magnolia.ui.framework.message.MessagesManager;
45
46 import javax.inject.Inject;
47
48
49
50
51 public class NotificationWorkbench extends Workbench<Message> {
52 private final MessagesManager messagesManager;
53 private final SubAppContext subAppContext;
54 private MessagesManager.MessageListener messageListener;
55 private final String userName;
56 @Inject
57 public NotificationWorkbench(NotificationWorkbenchDefinition definition, WorkbenchContext workbenchContext,
58 MessagesManager messagesManager, SubAppContext subAppContext, ValueContext<Message> valueContext) {
59 super(definition, workbenchContext);
60
61 this.messagesManager = messagesManager;
62 this.subAppContext = subAppContext;
63 this.userName = MgnlContext.getUser().getName();
64 registerMessageListener();
65 valueContext.observe(taskSelectedItems -> updateTitle());
66 }
67
68 @Override
69 protected ContentViews<Message> getContentViews(WorkbenchDefinition definition) {
70 return create(new NotificationContentViewsDefinition(definition.getContentViews()));
71 }
72
73 @Override
74 public void destroy() {
75 messagesManager.unregisterMessagesListener(userName, messageListener);
76 }
77
78 private void updateTitle() {
79 SubApp subApp = subAppContext.getSubApp();
80 if (subApp instanceof NotificationBrowserSubApp) {
81 String title = ((NotificationBrowserSubApp) subApp).getTitle();
82 boolean isHtml = subAppContext.getAppContext().getAppDescriptor().isHtmlCaption();
83
84 setTitle(title, isHtml);
85 }
86 }
87
88 private void registerMessageListener() {
89 messageListener = new MessagesManager.MessageListener() {
90 @Override
91 public void messageSent(Message message) {
92 updateTitle();
93 }
94
95 @Override
96 public void messageCleared(Message message) {
97 updateTitle();
98 }
99
100 @Override
101 public void messageRemoved(String id) {
102 updateTitle();
103 }
104 };
105 messagesManager.registerMessagesListener(userName, messageListener);
106 }
107 }