Fix of RAP resizing (SLC only)
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 15 Mar 2013 17:10:40 +0000 (17:10 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 15 Mar 2013 17:10:40 +0000 (17:10 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@6148 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

plugins/org.argeo.slc.client.rap/src/main/java/org/argeo/slc/client/rap/SlcSecureRap.java

index 33048c1694adb71154b4a9626f43f8065d385bdd..998271be686851b174d1d97e0d0ce142ffa0c5f0 100644 (file)
  */
 package org.argeo.slc.client.rap;
 
+import org.argeo.security.ui.rap.RapWindowAdvisor;
+import org.argeo.security.ui.rap.RapWorkbenchAdvisor;
 import org.argeo.security.ui.rap.SecureEntryPoint;
+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 SecureEntryPoint {
+
+       @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();
+                       }
+               }
+
+       }
 }