]> git.argeo.org Git - lgpl/argeo-commons.git/blob - RapActionBarAdvisor.java
0ca598dce7fe1de554160bdff8db70959f5ad28b
[lgpl/argeo-commons.git] / RapActionBarAdvisor.java
1 /*
2 * Copyright (C) 2007-2012 Argeo GmbH
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.argeo.security.ui.rap;
17
18 import org.argeo.cms.auth.CurrentUser;
19 import org.argeo.cms.ui.workbench.commands.OpenHomePerspective;
20 import org.eclipse.core.commands.Category;
21 import org.eclipse.core.commands.Command;
22 import org.eclipse.jface.action.ICoolBarManager;
23 import org.eclipse.jface.action.IMenuManager;
24 import org.eclipse.jface.action.IToolBarManager;
25 import org.eclipse.jface.action.ToolBarManager;
26 import org.eclipse.swt.SWT;
27 import org.eclipse.ui.IWorkbenchWindow;
28 import org.eclipse.ui.actions.ActionFactory;
29 import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
30 import org.eclipse.ui.application.ActionBarAdvisor;
31 import org.eclipse.ui.application.IActionBarConfigurer;
32 import org.eclipse.ui.commands.ICommandService;
33
34 /** Eclipse rap specific action bar advisor */
35 public class RapActionBarAdvisor extends ActionBarAdvisor {
36 private final static String ID_BASE = "org.argeo.security.ui.rap";
37 // private final static Log log = LogFactory
38 // .getLog(SecureActionBarAdvisor.class);
39
40 /** Null means anonymous */
41 private String username = null;
42
43 // private IAction logoutAction;
44 // private IWorkbenchAction openPerspectiveDialogAction;
45 // private IWorkbenchAction showViewMenuAction;
46 // private IWorkbenchAction preferences;
47 private IWorkbenchAction saveAction;
48 private IWorkbenchAction saveAllAction;
49
50 // private IWorkbenchAction closeAllAction;
51
52 public RapActionBarAdvisor(IActionBarConfigurer configurer, String username) {
53 super(configurer);
54 this.username = username;
55 }
56
57 protected void makeActions(IWorkbenchWindow window) {
58 // preferences = ActionFactory.PREFERENCES.create(window);
59 // register(preferences);
60 // openPerspectiveDialogAction = ActionFactory.OPEN_PERSPECTIVE_DIALOG
61 // .create(window);
62 // register(openPerspectiveDialogAction);
63 // showViewMenuAction = ActionFactory.SHOW_VIEW_MENU.create(window);
64 // register(showViewMenuAction);
65 //
66 // // logout
67 // logoutAction = ActionFactory.QUIT.create(window);
68 // // logoutAction = createLogoutAction();
69 // register(logoutAction);
70 //
71 // Save semantics
72 saveAction = ActionFactory.SAVE.create(window);
73 register(saveAction);
74 saveAllAction = ActionFactory.SAVE_ALL.create(window);
75 register(saveAllAction);
76 // closeAllAction = ActionFactory.CLOSE_ALL.create(window);
77 // register(closeAllAction);
78
79 }
80
81 protected void fillMenuBar(IMenuManager menuBar) {
82 // MenuManager fileMenu = new MenuManager("&File",
83 // IWorkbenchActionConstants.M_FILE);
84 // MenuManager editMenu = new MenuManager("&Edit",
85 // IWorkbenchActionConstants.M_EDIT);
86 // MenuManager windowMenu = new MenuManager("&Window",
87 // IWorkbenchActionConstants.M_WINDOW);
88 //
89 // menuBar.add(fileMenu);
90 // menuBar.add(editMenu);
91 // menuBar.add(windowMenu);
92 // // Add a group marker indicating where action set menus will appear.
93 // menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
94 //
95 // // File
96 // fileMenu.add(saveAction);
97 // fileMenu.add(saveAllAction);
98 // fileMenu.add(closeAllAction);
99 // fileMenu.add(new
100 // GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
101 // fileMenu.add(new Separator());
102 // fileMenu.add(logoutAction);
103 //
104 // // Edit
105 // editMenu.add(preferences);
106 //
107 // // Window
108 // windowMenu.add(openPerspectiveDialogAction);
109 // windowMenu.add(showViewMenuAction);
110 }
111
112 @Override
113 protected void fillCoolBar(ICoolBarManager coolBar) {
114 // Add a command which label is the display name of the current
115 // logged-in user
116 if (username != null) {
117 ICommandService cmdService = (ICommandService) getActionBarConfigurer()
118 .getWindowConfigurer().getWorkbenchConfigurer()
119 .getWorkbench().getService(ICommandService.class);
120 Category userMenus = cmdService.getCategory(ID_BASE + ".userMenus");
121 if (!userMenus.isDefined())
122 userMenus.define("User Menus", "User related menus");
123 Command userMenu = cmdService.getCommand(ID_BASE
124 + ".userMenuCommand");
125 if (userMenu.isDefined())
126 userMenu.undefine();
127 userMenu.define(CurrentUser.getDisplayName(), "User menu actions",
128 userMenus);
129 // userMenu.define(username, "User menu actions", userMenus);
130
131 userMenu.setHandler(new OpenHomePerspective());
132
133 // userToolbar.add(new UserMenuAction());
134 // coolBar.add(userToolbar);
135 } else {// anonymous
136 IToolBarManager userToolbar = new ToolBarManager(SWT.FLAT
137 | SWT.RIGHT);
138 // userToolbar.add(logoutAction);
139 coolBar.add(userToolbar);
140 }
141 // IToolBarManager saveToolbar = new ToolBarManager(SWT.FLAT |
142 // SWT.RIGHT);
143 // saveToolbar.add(saveAction);
144 // saveToolbar.add(saveAllAction);
145 // coolBar.add(saveToolbar);
146 }
147
148 // class UserMenuAction extends Action implements IWorkbenchAction {
149 //
150 // public UserMenuAction() {
151 // super(username, IAction.AS_DROP_DOWN_MENU);
152 // // setMenuCreator(new UserMenu());
153 // }
154 //
155 // @Override
156 // public String getId() {
157 // return "org.argeo.security.ui.rap.userMenu";
158 // }
159 //
160 // @Override
161 // public void dispose() {
162 // }
163 //
164 // }
165
166 // class UserMenu implements IMenuCreator {
167 // private Menu menu;
168 //
169 // public Menu getMenu(Control parent) {
170 // Menu menu = new Menu(parent);
171 // addActionToMenu(menu, logoutAction);
172 // return menu;
173 // }
174 //
175 // private void addActionToMenu(Menu menu, IAction action) {
176 // ActionContributionItem item = new ActionContributionItem(action);
177 // item.fill(menu, -1);
178 // }
179 //
180 // public void dispose() {
181 // if (menu != null) {
182 // menu.dispose();
183 // }
184 // }
185 //
186 // public Menu getMenu(Menu parent) {
187 // // Not use
188 // return null;
189 // }
190 //
191 // }
192
193 // protected IAction createLogoutAction() {
194 // Subject subject = Subject.getSubject(AccessController.getContext());
195 // final String username = subject.getPrincipals().iterator().next()
196 // .getName();
197 //
198 // IAction logoutAction = new Action() {
199 // public String getId() {
200 // return SecureRapActivator.ID + ".logoutAction";
201 // }
202 //
203 // public String getText() {
204 // return "Logout " + username;
205 // }
206 //
207 // public void run() {
208 // // try {
209 // // Subject subject = SecureRapActivator.getLoginContext()
210 // // .getSubject();
211 // // String subjectStr = subject.toString();
212 // // subject.getPrincipals().clear();
213 // // SecureRapActivator.getLoginContext().logout();
214 // // log.info(subjectStr + " logged out");
215 // // } catch (LoginException e) {
216 // // log.error("Error when logging out", e);
217 // // }
218 // // SecureEntryPoint.logout(username);
219 // // PlatformUI.getWorkbench().close();
220 // // try {
221 // // RWT.getRequest().getSession().setMaxInactiveInterval(1);
222 // // } catch (Exception e) {
223 // // if (log.isTraceEnabled())
224 // // log.trace("Error when invalidating session", e);
225 // // }
226 // }
227 //
228 // };
229 // return logoutAction;
230 // }
231
232 }