Move Eclipse E4 components from Argeo Commons to Argeo SLC
[gpl/argeo-slc.git] / swt / org.argeo.cms.e4 / src / org / argeo / cms / e4 / handlers / CloseWorkbench.java
diff --git a/swt/org.argeo.cms.e4/src/org/argeo/cms/e4/handlers/CloseWorkbench.java b/swt/org.argeo.cms.e4/src/org/argeo/cms/e4/handlers/CloseWorkbench.java
new file mode 100644 (file)
index 0000000..cce1802
--- /dev/null
@@ -0,0 +1,26 @@
+package org.argeo.cms.e4.handlers;
+
+import javax.security.auth.Subject;
+
+import org.argeo.cms.CurrentUser;
+import org.argeo.cms.util.CurrentSubject;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.workbench.IWorkbench;
+
+public class CloseWorkbench {
+       @Execute
+       public void execute(IWorkbench workbench) {
+               logout();
+               workbench.close();
+       }
+
+       protected void logout() {
+               Subject subject = CurrentSubject.current();
+               try {
+                       CurrentUser.logoutCmsSession(subject);
+               } catch (Exception e) {
+                       throw new IllegalStateException("Cannot log out", e);
+               }
+       }
+
+}