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.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
57 @Inject
58 public NotificationWorkbench(NotificationWorkbenchDefinition definition, WorkbenchContext workbenchContext,
59 MessagesManager messagesManager, SubAppContext subAppContext, ValueContext<Message> valueContext) {
60 super(definition, workbenchContext);
61
62 this.messagesManager = messagesManager;
63 this.subAppContext = subAppContext;
64 this.userName = MgnlContext.getUser().getName();
65 registerMessageListener();
66 valueContext.observe(taskSelectedItems -> updateTitle());
67 }
68
69 @Override
70 protected ContentViews<Message> getContentViews(WorkbenchDefinition definition) {
71 return create(new NotificationContentViewsDefinition(definition.getContentViews()), definition.getExtensionViews());
72 }
73
74 @Override
75 public void destroy() {
76 messagesManager.unregisterMessagesListener(userName, messageListener);
77 }
78
79 @Override
80 public void setTitle(String ignore) {
81 updateTitle();
82 }
83
84 @Override
85 public void setTitle(String ignore, boolean isHtml) {
86 updateTitle();
87 }
88
89 private void updateTitle() {
90 SubApp subApp = subAppContext.getSubApp();
91 if (subApp instanceof NotificationBrowserSubApp) {
92 String title = ((NotificationBrowserSubApp) subApp).getTitle();
93 boolean isHtml = subAppContext.getAppContext().getAppDescriptor().isHtmlCaption();
94
95 super.setTitle(title, isHtml);
96 }
97 }
98
99 private void registerMessageListener() {
100 messageListener = new MessagesManager.MessageListener() {
101 @Override
102 public void messageSent(Message message) {
103 updateTitle();
104 }
105
106 @Override
107 public void messageCleared(Message message) {
108 updateTitle();
109 }
110
111 @Override
112 public void messageRemoved(String id) {
113 updateTitle();
114 }
115 };
116 messagesManager.registerMessagesListener(userName, messageListener);
117 }
118 }