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;
35
36 import info.magnolia.context.Context;
37 import info.magnolia.ui.api.ioc.UiContextScoped;
38 import info.magnolia.ui.api.message.Message;
39 import info.magnolia.ui.framework.ioc.Destructible;
40 import info.magnolia.ui.framework.message.MessagesManager;
41 import info.magnolia.ui.observation.LocalManualDatasourceObservation;
42
43 import javax.inject.Inject;
44
45 import com.vaadin.ui.UI;
46
47
48
49
50 @UiContextScoped
51 public class NotificationDataSourceObservation extends LocalManualDatasourceObservation implements Destructible {
52
53 private final MessagesManager.MessageListener messageListener;
54 private final MessagesManager messagesManager;
55 private final String userName;
56
57 @Inject
58 NotificationDataSourceObservation(UI ui, MessagesManager messagesManager, Context context) {
59 super(ui);
60 this.messagesManager = messagesManager;
61 this.userName = context.getUser().getName();
62 this.messageListener = new MessagesManager.MessageListener() {
63 @Override
64 public void messageSent(Message message) {
65 trigger();
66 }
67
68 @Override
69 public void messageCleared(Message message) {
70 trigger();
71 }
72
73 @Override
74 public void messageRemoved(String id) {
75 trigger();
76 }
77 };
78 this.messagesManager.registerMessagesListener(userName, messageListener); }
79
80 @Override
81 public void destroy() {
82 messagesManager.unregisterMessagesListener(userName, messageListener);
83 }
84 }