]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - legacy/org.argeo.slc.client.rap/src/org/argeo/slc/client/rap/SlcSecureRap.java
Clarify overall project structure.
[gpl/argeo-slc.git] / legacy / org.argeo.slc.client.rap / src / org / argeo / slc / client / rap / SlcSecureRap.java
diff --git a/legacy/org.argeo.slc.client.rap/src/org/argeo/slc/client/rap/SlcSecureRap.java b/legacy/org.argeo.slc.client.rap/src/org/argeo/slc/client/rap/SlcSecureRap.java
new file mode 100644 (file)
index 0000000..ddd7753
--- /dev/null
@@ -0,0 +1,81 @@
+package org.argeo.slc.client.rap;
+
+import org.argeo.cms.ui.workbench.rap.RapWindowAdvisor;
+import org.argeo.cms.ui.workbench.rap.RapWorkbenchAdvisor;
+import org.argeo.cms.ui.workbench.rap.RapWorkbenchLogin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+
+/**
+ * This class controls all aspects of the application's execution and is
+ * contributed through the plugin.xml.
+ */
+public class SlcSecureRap extends RapWorkbenchLogin {
+
+       @Override
+       protected RapWorkbenchAdvisor createRapWorkbenchAdvisor(
+                       final String username) {
+               return new RapWorkbenchAdvisor(username) {
+                       @Override
+                       public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(
+                                       IWorkbenchWindowConfigurer configurer) {
+                               return new SlcRapWorkbenchWindowAdvisor(configurer, username);
+                       }
+
+               };
+       }
+
+       /** Workaround for resize issue */
+       class SlcRapWorkbenchWindowAdvisor extends RapWindowAdvisor {
+
+               public SlcRapWorkbenchWindowAdvisor(
+                               IWorkbenchWindowConfigurer configurer, String username) {
+                       super(configurer, username);
+               }
+
+               public void preWindowOpen() {
+                       IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
+                       configurer.setShowCoolBar(true);
+                       configurer.setShowMenuBar(false);
+                       configurer.setShowStatusLine(false);
+                       configurer.setShowPerspectiveBar(true);
+                       configurer.setTitle("Argeo Secure UI"); //$NON-NLS-1$
+                       // Full screen, see
+                       // http://dev.eclipse.org/newslists/news.eclipse.technology.rap/msg02697.html
+                       configurer.setShellStyle(SWT.NO_TRIM);
+                       Rectangle bounds = Display.getCurrent().getBounds();
+                       configurer.setInitialSize(new Point(bounds.width, bounds.height));
+               }
+
+               @Override
+               public void postWindowCreate() {
+                       Shell shell = getWindowConfigurer().getWindow().getShell();
+                       shell.setMaximized(true);
+               }
+
+               @Override
+               public void postWindowOpen() {
+                       String defaultPerspective = getWindowConfigurer()
+                                       .getWorkbenchConfigurer().getWorkbench()
+                                       .getPerspectiveRegistry().getDefaultPerspective();
+                       if (defaultPerspective == null) {
+                               IWorkbenchWindow window = getWindowConfigurer().getWindow();
+                               if (window == null)
+                                       return;
+
+                               IWorkbenchAction openPerspectiveDialogAction = ActionFactory.OPEN_PERSPECTIVE_DIALOG
+                                               .create(window);
+                               openPerspectiveDialogAction.run();
+                       }
+               }
+
+       }
+}