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.messages.view;
35
36 import info.magnolia.context.MgnlContext;
37 import info.magnolia.ui.api.message.Message;
38 import info.magnolia.ui.contentapp.DataFilter;
39 import info.magnolia.ui.contentapp.browser.ContentViews;
40 import info.magnolia.ui.contentapp.browser.Workbench;
41 import info.magnolia.ui.contentapp.configuration.WorkbenchDefinition;
42 import info.magnolia.ui.framework.datasource.DatasourceComponent;
43 import info.magnolia.ui.framework.message.MessagesManager;
44
45 import javax.inject.Inject;
46
47 import com.vaadin.data.provider.DataProvider;
48
49
50
51
52 public class MessageWorkbench extends Workbench {
53
54 private final DataProvider<Message, DataFilter> messageDataProvider;
55 private final String userName;
56 private final MessagesManager messagesManager;
57 private MessagesManager.MessageListener messageListener;
58
59 @Inject
60 public MessageWorkbench(MessageWorkbenchDefinition definition, MessagesManager messagesManager, @DatasourceComponent DataProvider<Message, DataFilter> messageDataProvider) {
61 super(definition);
62 this.messageDataProvider = messageDataProvider;
63 this.messagesManager = messagesManager;
64 this.userName = MgnlContext.getUser().getName();
65 messageListener = new MessagesManager.MessageListener() {
66 @Override
67 public void messageSent(Message message) {
68 messageDataProvider.refreshAll();
69 }
70
71 @Override
72 public void messageCleared(Message message) {
73 messageDataProvider.refreshAll();
74 }
75
76 @Override
77 public void messageRemoved(String id) {
78 messageDataProvider.refreshAll();
79 }
80 };
81 messagesManager.registerMessagesListener(userName, messageListener);
82 }
83
84 @Override
85 protected ContentViews getContentViews(WorkbenchDefinition definition) {
86 final MessageContentViewsDefinition contentViewsDefinition = new MessageContentViewsDefinition(definition.getContentViews());
87 return getViewProvider().create(contentViewsDefinition);
88 }
89
90 @Override
91 public void destroy() {
92 super.destroy();
93 messagesManager.unregisterMessagesListener(userName, messageListener);
94 }
95 }