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.app.SubAppContext;
38 import info.magnolia.ui.api.message.Message;
39 import info.magnolia.ui.contentapp.browser.ContentViews;
40 import info.magnolia.ui.contentapp.browser.Workbench;
41 import info.magnolia.ui.framework.message.MessagesManager;
42
43 import javax.inject.Inject;
44
45 import com.vaadin.shared.ui.ContentMode;
46 import com.vaadin.ui.Button;
47 import com.vaadin.ui.Label;
48
49
50
51
52 public class MessageContentViews extends ContentViews {
53
54 private final MessagesManager messagesManager;
55 private final SubAppContext subAppContext;
56 private MessagesManager.MessageListener messageListener;
57 private final String userName;
58
59 @Inject
60 public MessageContentViews(Workbench.WorkbenchContext workbenchContext, SubAppContext subAppContext, MessageContentViewsDefinition messageContentViewsDef,
61 MessagesManager messagesManager) {
62 super(workbenchContext, messageContentViewsDef);
63 this.messagesManager = messagesManager;
64 this.subAppContext = subAppContext;
65 this.userName = MgnlContext.getUser().getName();
66 layoutMessageUI();
67 }
68
69 @Override
70 protected Button createContentViewIcon(String viewType, String icon) {
71 final Button contentViewIcon = super.createContentViewIcon(viewType, icon);
72 contentViewIcon.setVisible(((MessageContentViewsDefinition) getDefinition()).showToggleViewsButton());
73 return contentViewIcon;
74 }
75
76 @Override
77 public void destroy() {
78 messagesManager.unregisterMessagesListener(userName, messageListener);
79 }
80
81 private void updateMessageAppHeaderLabel(Label headerLabel) {
82 ContentMode htmlContent = subAppContext.getAppContext().getAppDescriptor().isHtmlCaption() ? ContentMode.HTML : ContentMode.TEXT;
83 headerLabel.setContentMode(htmlContent);
84 headerLabel.setValue(subAppContext.getSubApp().getCaption());
85 }
86
87 protected void layoutMessageUI() {
88 final Label headerLabel = new Label();
89 headerLabel.addStyleName("heading-1 tab-header");
90 updateMessageAppHeaderLabel(headerLabel);
91 getToolBar().addComponent(headerLabel, 0);
92 getToolBar().setExpandRatio(headerLabel, 0);
93 messageListener = new MessagesManager.MessageListener() {
94 @Override
95 public void messageSent(Message message) {
96 updateMessageAppHeaderLabel(headerLabel);
97 }
98
99 @Override
100 public void messageCleared(Message message) {
101 updateMessageAppHeaderLabel(headerLabel);
102 }
103
104 @Override
105 public void messageRemoved(String id) {
106 updateMessageAppHeaderLabel(headerLabel);
107 }
108 };
109 messagesManager.registerMessagesListener(userName, messageListener);
110 }
111 }