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.ui.admincentral.usermenu;
35
36 import info.magnolia.cms.security.MgnlUserManager;
37 import info.magnolia.context.MgnlContext;
38 import info.magnolia.ui.admincentral.usermenu.action.UserActionExecutor;
39 import info.magnolia.ui.api.action.ActionDefinition;
40 import info.magnolia.ui.api.action.ActionExecutionException;
41 import info.magnolia.ui.api.message.Message;
42 import info.magnolia.ui.api.message.MessageType;
43 import info.magnolia.ui.api.view.View;
44 import info.magnolia.ui.framework.message.MessagesManager;
45
46 import javax.inject.Inject;
47
48 import org.apache.commons.lang3.StringUtils;
49 import org.slf4j.Logger;
50 import org.slf4j.LoggerFactory;
51
52
53
54
55
56 public class UserMenuPresenter implements UserMenuView.Listener {
57 private static final Logger log = LoggerFactory.getLogger(UserMenuPresenter.class);
58
59 private final UserMenuView view;
60 private UserActionExecutor actionExecutor;
61 private MessagesManager messagesManager;
62
63 @Inject
64 public UserMenuPresenter(UserMenuView view, UserActionExecutor actionExecutor, MessagesManager messagesManager) {
65 this.view = view;
66 this.actionExecutor = actionExecutor;
67 this.messagesManager = messagesManager;
68 }
69
70 public View getView() {
71 return view;
72 }
73
74 public View start() {
75 view.setListener(this);
76 String title = MgnlContext.getUser().getProperty(MgnlUserManager.PROPERTY_TITLE);
77 String name = MgnlContext.getUser().getName();
78 String caption = "";
79 if (StringUtils.isNotEmpty(title) && !title.equals(name)) {
80 caption = String.format("%s (%s)", title, name);
81 } else {
82 caption = name;
83 }
84 view.setCaption(caption);
85
86 for (ActionDefinition action : actionExecutor.getActions()) {
87 view.addAction(action.getName(), action.getLabel(), action.getIcon());
88 }
89 return view;
90 }
91
92 @Override
93 public void onAction(String actionName) {
94 try {
95 actionExecutor.execute(actionName);
96 } catch (ActionExecutionException e) {
97 Message error = new Message(MessageType.ERROR, "An error occurred while executing an action.", e.getMessage());
98 log.error("An error occurred while executing action [{}]", actionName, e);
99 messagesManager.sendLocalMessage(error);
100 }
101 }
102 }