1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package com.hack23.cia.web.impl.ui.application.views.common.menufactory.impl;
20
21 import com.hack23.cia.web.impl.ui.application.util.UserContextUtil;
22 import com.hack23.cia.web.impl.ui.application.views.common.pagelinks.api.PageModeMenuCommand;
23 import com.hack23.cia.web.impl.ui.application.views.common.sizing.ContentRatio;
24 import com.hack23.cia.web.impl.ui.application.views.common.viewnames.AdminViews;
25 import com.hack23.cia.web.impl.ui.application.views.common.viewnames.ApplicationPageMode;
26 import com.hack23.cia.web.impl.ui.application.views.common.viewnames.CommonsViews;
27 import com.hack23.cia.web.impl.ui.application.views.common.viewnames.PageMode;
28 import com.hack23.cia.web.impl.ui.application.views.common.viewnames.UserViews;
29 import com.vaadin.server.FontAwesome;
30 import com.vaadin.server.Resource;
31 import com.vaadin.server.Sizeable.Unit;
32 import com.vaadin.ui.Alignment;
33 import com.vaadin.ui.Button;
34 import com.vaadin.ui.Button.ClickListener;
35 import com.vaadin.ui.GridLayout;
36 import com.vaadin.ui.Label;
37 import com.vaadin.ui.MenuBar;
38 import com.vaadin.ui.MenuBar.MenuItem;
39 import com.vaadin.ui.VerticalLayout;
40
41
42
43
44 public abstract class AbstractMenuItemFactoryImpl {
45
46
47 private static final PageModeMenuCommand COMMAND_APPLICATION_EVENTS_CHARTS = new PageModeMenuCommand(AdminViews.ADMIN_APPLICATIONS_EVENTS_VIEW_NAME, PageMode.CHARTS);
48
49
50 private static final PageModeMenuCommand COMMAND_EMAIL = new PageModeMenuCommand(AdminViews.ADMIN_EMAIL_VIEW_NAME,
51 "");
52
53
54 private static final PageModeMenuCommand COMMAND_MAINVIEW_PAGEVISITHISTORY = new PageModeMenuCommand(CommonsViews.MAIN_VIEW_NAME,
55 PageMode.PAGEVISITHISTORY);
56
57
58 private static final PageModeMenuCommand COMMAND_USERACCOUNT = new PageModeMenuCommand(AdminViews.ADMIN_USERACCOUNT_VIEW_NAME,
59 "");
60
61
62 private static final PageModeMenuCommand COMMAND_APPLICATION_EVENTS = new PageModeMenuCommand(
63 AdminViews.ADMIN_APPLICATIONS_EVENTS_VIEW_NAME, "");
64
65
66 private static final PageModeMenuCommand COMMAND_APPLICATION_SESSION = new PageModeMenuCommand(
67 AdminViews.ADMIN_APPLICATIONS_SESSION_VIEW_NAME, "");
68
69
70 private static final PageModeMenuCommand COMMAND_MONITORING = new PageModeMenuCommand(AdminViews.ADMIN_MONITORING_VIEW_NAME,
71 "");
72
73
74 private static final PageModeMenuCommand COMMAND_DATASUMMARY = new PageModeMenuCommand(
75 AdminViews.ADMIN_DATA_SUMMARY_VIEW_NAME, "");
76
77
78 private static final PageModeMenuCommand COMMAND_AGENT_OPERATION = new PageModeMenuCommand(
79 AdminViews.ADMIN_AGENT_OPERATIONVIEW_NAME, "");
80
81
82 private static final PageModeMenuCommand COMMAND_LANGUAGE_CONTENT = new PageModeMenuCommand(
83 AdminViews.ADMIN_LANGUAGE_CONTENT_VIEW_NAME, "");
84
85
86 private static final PageModeMenuCommand COMMAND_LANGUAGE = new PageModeMenuCommand(AdminViews.ADMIN_LANGUAGE_VIEW_NAME,
87 "");
88
89
90 private static final PageModeMenuCommand COMMAND_COUNTRY = new PageModeMenuCommand(AdminViews.ADMIN_COUNTRY_VIEW_NAME, "");
91
92
93 private static final PageModeMenuCommand COMMAND_PORTAL = new PageModeMenuCommand(AdminViews.ADMIN_PORTAL_VIEW_NAME, "");
94
95
96 private static final PageModeMenuCommand COMMAND_AGENCY = new PageModeMenuCommand(AdminViews.ADMIN_AGENCY_VIEW_NAME, "");
97
98
99 private static final PageModeMenuCommand COMMAND_APPLICATION_CONFIGURATION = new PageModeMenuCommand(
100 AdminViews.ADMIN_APPLICATIONS_CONFIGURATION_VIEW_NAME, "");
101
102
103 private static final PageModeMenuCommand COMMAND_REGISTER = new PageModeMenuCommand(CommonsViews.MAIN_VIEW_NAME,
104 ApplicationPageMode.REGISTER.toString());
105
106
107 private static final PageModeMenuCommand COMMAND_LOGIN = new PageModeMenuCommand(CommonsViews.MAIN_VIEW_NAME,
108 ApplicationPageMode.LOGIN.toString());
109
110
111 private static final PageModeMenuCommand COMMAND_LOGOUT = new PageModeMenuCommand(CommonsViews.MAIN_VIEW_NAME,
112 ApplicationPageMode.LOGOUT.toString());
113
114
115 private static final PageModeMenuCommand COMMAND_USERHOME = new PageModeMenuCommand(UserViews.USERHOME_VIEW_NAME, "");
116
117
118 private static final PageModeMenuCommand COMMAND_MAINVIEW_OVERVIEW = new PageModeMenuCommand(CommonsViews.MAIN_VIEW_NAME,
119 PageMode.OVERVIEW);
120
121
122 private static final String LINK_STYLE_NAME = "link";
123
124
125 private static final String HEADER_STYLE_NAME = "Header";
126
127
128 private static final String MENU_BAR_WIDTH = "80%";
129
130
131 private static final String MAIN = "Main";
132
133
134 private static final String REGISTER = "Register";
135
136
137 private static final String LOGIN = "Login";
138
139
140 private static final String LOGOUT = "Logout";
141
142
143 private static final String APPLICATION = "Application";
144
145
146 private static final String EMAIL = "Email";
147
148
149 private static final String USER_ACTIVITY = "User Activity";
150
151
152 private static final String MANAGEMENT = "Management";
153
154
155 private static final String CONFIGURATION = "Configuration";
156
157
158 private static final String ROLE_USER = "ROLE_USER";
159
160
161 private static final String ROLE_ADMIN = "ROLE_ADMIN";
162
163
164 private static final String START_TEXT = "Start";
165
166
167 private static final String USERHOME = "Userhome";
168
169
170 private static final String LANGUAGE_CONTENT = "Language Content";
171
172
173 private static final String LANGUAGE = "Language";
174
175
176 private static final String COUNTRY = "Country";
177
178
179 private static final String USERACCOUNT = "Useraccount";
180
181
182 private static final String APPLICATION_EVENT = "Application Event";
183
184
185 private static final String APPLICATION_SESSION = "Application Session";
186
187
188 private static final String PORTAL = "Portal";
189
190
191 private static final String AGENCY = "Agency";
192
193
194 private static final String APPLICATION_CONFIGURATION = "System settings";
195
196
197 private static final String SYSTEM_PERFORMANCE = "System Performance";
198
199
200 private static final String DATA_SUMMARY_TEXT = "Data Summary";
201
202
203 private static final String AGENT_OPERATIONS_TEXT = "Agent operations";
204
205
206 private static final String ADMIN_TEXT = "Admin";
207
208
209 private static final String PAGE_VISIT_HISTORY_TEXT = "Page Visit History";
210
211
212 private static final String APPLICATION_EVENT_CHARTS = "Application Event charts";
213
214
215
216
217
218
219
220 public AbstractMenuItemFactoryImpl() {
221 super();
222 }
223
224
225
226
227
228
229
230 protected final void initApplicationMenuBar(final MenuBar menuBar) {
231 menuBar.removeItems();
232 menuBar.setWidth(MENU_BAR_WIDTH);
233 menuBar.setStyleName(HEADER_STYLE_NAME);
234 final MenuItem mainViewItem = menuBar.addItem(APPLICATION, FontAwesome.SERVER, null);
235
236 mainViewItem.addItem(START_TEXT, FontAwesome.STAR, COMMAND_MAINVIEW_OVERVIEW);
237
238 final MenuItem mainItem = mainViewItem.addItem(MAIN, FontAwesome.STAR, null);
239
240 mainItem.addItem(PAGE_VISIT_HISTORY_TEXT, FontAwesome.AREA_CHART, COMMAND_MAINVIEW_PAGEVISITHISTORY);
241
242
243 if (UserContextUtil.allowRoleInSecurityContext(ROLE_ADMIN) || UserContextUtil.allowRoleInSecurityContext(ROLE_USER)) {
244 mainViewItem.addItem(USERHOME, FontAwesome.USER,COMMAND_USERHOME);
245 createAdminMenu(mainViewItem);
246 mainViewItem.addItem(LOGOUT, FontAwesome.SIGN_OUT, COMMAND_LOGOUT);
247 } else {
248 mainViewItem.addItem(LOGIN, FontAwesome.SIGN_IN, COMMAND_LOGIN);
249 mainViewItem.addItem(REGISTER, FontAwesome.USER_PLUS, COMMAND_REGISTER);
250 }
251
252 }
253
254
255
256
257
258
259
260 private static void createAdminMenu(final MenuItem mainViewItem) {
261 if (UserContextUtil.allowRoleInSecurityContext(ROLE_ADMIN)) {
262 final MenuItem adminMenuItem = mainViewItem.addItem(ADMIN_TEXT, FontAwesome.SERVER, null);
263
264 final MenuItem configurationMenuItem = adminMenuItem.addItem(CONFIGURATION, FontAwesome.GEARS, null);
265 configurationMenuItem.addItem(APPLICATION_CONFIGURATION,FontAwesome.GEARS, COMMAND_APPLICATION_CONFIGURATION);
266
267 configurationMenuItem.addItem(AGENCY,FontAwesome.SERVER, COMMAND_AGENCY);
268 configurationMenuItem.addItem(PORTAL, FontAwesome.SITEMAP,COMMAND_PORTAL);
269 configurationMenuItem.addItem(COUNTRY,FontAwesome.FLAG, COMMAND_COUNTRY);
270 configurationMenuItem.addItem(LANGUAGE,FontAwesome.LANGUAGE, COMMAND_LANGUAGE);
271 configurationMenuItem.addItem(LANGUAGE_CONTENT,FontAwesome.FILE_TEXT, COMMAND_LANGUAGE_CONTENT);
272
273 final MenuItem managementMenuItem = adminMenuItem.addItem(MANAGEMENT, FontAwesome.SERVER, null);
274
275 managementMenuItem.addItem(AGENT_OPERATIONS_TEXT,FontAwesome.USER_SECRET, COMMAND_AGENT_OPERATION);
276
277 managementMenuItem.addItem(DATA_SUMMARY_TEXT,FontAwesome.DATABASE, COMMAND_DATASUMMARY);
278
279 managementMenuItem.addItem(EMAIL,FontAwesome.MAIL_FORWARD, COMMAND_EMAIL);
280
281
282 managementMenuItem.addItem(SYSTEM_PERFORMANCE,FontAwesome.DASHBOARD, COMMAND_MONITORING);
283
284 final MenuItem userActivityMenuItem = adminMenuItem.addItem(USER_ACTIVITY, FontAwesome.DATABASE, null);
285 userActivityMenuItem.addItem(APPLICATION_SESSION,FontAwesome.LAPTOP, COMMAND_APPLICATION_SESSION);
286 userActivityMenuItem.addItem(APPLICATION_EVENT,FontAwesome.ARROWS, COMMAND_APPLICATION_EVENTS);
287 userActivityMenuItem.addItem(APPLICATION_EVENT_CHARTS,FontAwesome.ARROWS, COMMAND_APPLICATION_EVENTS_CHARTS);
288
289 userActivityMenuItem.addItem(USERACCOUNT,FontAwesome.GROUP, COMMAND_USERACCOUNT);
290
291 }
292 }
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308 protected final void createButtonLink(final GridLayout panelContent,final String linkText,final Resource icon, final ClickListener command, final String description) {
309 final GridLayout grid = new GridLayout(2, 1);
310 grid.setWidth(100, Unit.PERCENTAGE);
311 grid.setHeight(100, Unit.PERCENTAGE);
312 grid.setColumnExpandRatio(0, 1);
313 grid.setColumnExpandRatio(1, 2);
314
315 final Button b = new Button(linkText);
316 b.setStyleName(LINK_STYLE_NAME);
317 b.addClickListener(command);
318 b.setWidth(100, Unit.PERCENTAGE);
319
320 b.setIcon(icon);
321 b.setWidth(100, Unit.PERCENTAGE);
322
323
324 grid.addComponent(b, 0, 0);
325 grid.setComponentAlignment(b, Alignment.MIDDLE_LEFT);
326
327 final Label descriptionLabel = new Label(description);
328 descriptionLabel.setWidth(100, Unit.PERCENTAGE);
329 grid.addComponent(descriptionLabel,1,0);
330 grid.setComponentAlignment(descriptionLabel, Alignment.MIDDLE_LEFT);
331
332
333 panelContent.addComponent(grid);
334 panelContent.setComponentAlignment(grid, Alignment.MIDDLE_LEFT);
335 }
336
337
338
339
340
341
342
343
344 protected final GridLayout createGridLayout(final VerticalLayout panelContent) {
345 final GridLayout grid = new GridLayout(2, 1);
346 grid.setWidth(100, Unit.PERCENTAGE);
347 grid.setHeight(100, Unit.PERCENTAGE);
348 grid.setColumnExpandRatio(0, 1);
349 grid.setColumnExpandRatio(1, 1);
350 grid.setSpacing(true);
351 panelContent.addComponent(grid);
352 panelContent.setExpandRatio(grid, ContentRatio.LARGE);
353 return grid;
354 }
355
356 }