package org.argeo.security.ui.rap;
+import java.security.AccessController;
+
+import javax.security.auth.Subject;
+
+import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.ICoolBarManager;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.ui.application.IActionBarConfigurer;
public class SecureActionBarAdvisor extends ActionBarAdvisor {
- private IWorkbenchAction exitAction;
+// private final static Log log = LogFactory
+// .getLog(SecureActionBarAdvisor.class);
+
+ private IAction logoutAction;
private IWorkbenchAction openPerspectiveDialogAction;
private IWorkbenchAction showViewMenuAction;
private IWorkbenchAction preferences;
private IWorkbenchAction saveAllAction;
private IWorkbenchAction closeAllAction;
- // private final Boolean isRcp;
-
public SecureActionBarAdvisor(IActionBarConfigurer configurer, Boolean isRcp) {
super(configurer);
- // this.isRcp = isRcp;
}
protected void makeActions(IWorkbenchWindow window) {
showViewMenuAction = ActionFactory.SHOW_VIEW_MENU.create(window);
register(showViewMenuAction);
- exitAction = ActionFactory.QUIT.create(window);
- register(exitAction);
+ // logout
+ logoutAction = ActionFactory.QUIT.create(window);
+ //logoutAction = createLogoutAction();
+ register(logoutAction);
- // Save semantiocs
+ // Save semantics
saveAction = ActionFactory.SAVE.create(window);
register(saveAction);
saveAllAction = ActionFactory.SAVE_ALL.create(window);
}
+ protected IAction createLogoutAction() {
+ Subject subject = Subject.getSubject(AccessController.getContext());
+ final String username = subject.getPrincipals().iterator().next()
+ .getName();
+
+ IAction logoutAction = new Action() {
+ public String getId() {
+ return SecureRapActivator.ID + ".logoutAction";
+ }
+
+ public String getText() {
+ return "Logout " + username;
+ }
+
+ public void run() {
+ // try {
+ // Subject subject = SecureRapActivator.getLoginContext()
+ // .getSubject();
+ // String subjectStr = subject.toString();
+ // subject.getPrincipals().clear();
+ // SecureRapActivator.getLoginContext().logout();
+ // log.info(subjectStr + " logged out");
+ // } catch (LoginException e) {
+ // log.error("Error when logging out", e);
+ // }
+// SecureEntryPoint.logout(username);
+// PlatformUI.getWorkbench().close();
+ // try {
+ // RWT.getRequest().getSession().setMaxInactiveInterval(1);
+ // } catch (Exception e) {
+ // if (log.isTraceEnabled())
+ // log.trace("Error when invalidating session", e);
+ // }
+ }
+
+ };
+ return logoutAction;
+ }
+
protected void fillMenuBar(IMenuManager menuBar) {
MenuManager fileMenu = new MenuManager("&File",
IWorkbenchActionConstants.M_FILE);
fileMenu.add(closeAllAction);
fileMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
fileMenu.add(new Separator());
- fileMenu.add(exitAction);
+ fileMenu.add(logoutAction);
// Edit
editMenu.add(preferences);