Fix CMS Login feedback when login failed
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 22 Jan 2016 17:00:51 +0000 (17:00 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 22 Jan 2016 17:00:51 +0000 (17:00 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@8792 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLogin.java
org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLoginShell.java
org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/dialogs/ErrorFeedback.java

index 578386321dd197a8b76cecfdb7dd215b6608c235..d0bf142862d31c81ca77c156bb3bbcec053276a2 100644 (file)
@@ -272,7 +272,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler {
                        } catch (InterruptedException e2) {
                                // silent
                        }
-                       ErrorFeedback.show("Login failed", e);
+//                     ErrorFeedback.show("Login failed", e);
                        return false;
                } catch (LoginException e) {
                        log.error("Cannot login", e);
index a1ca970905361ffbb6926c37188286b89f79b84d..29a3f54e64990016889add8de4d15c0d440988f3 100644 (file)
@@ -1,10 +1,13 @@
 package org.argeo.cms.widgets.auth;
 
 import org.argeo.cms.CmsView;
+import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
 import org.eclipse.rap.rwt.RWT;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Widget;
 
 /** The site-related user menu */
 public class CmsLoginShell extends CmsLogin {
@@ -31,10 +34,20 @@ public class CmsLoginShell extends CmsLogin {
 
        @Override
        protected boolean login() {
+               boolean success = false;
                try {
-                       return super.login();
+                       success = super.login();
+                       return success;
                } finally {
-                       closeShell();
+                       if (success)
+                               closeShell();
+                       else {
+                               for (Control child : shell.getChildren())
+                                       child.dispose();
+                               createUi(shell);
+                               shell.layout();
+                               // TODO error message
+                       }
                }
        }
 
@@ -45,8 +58,10 @@ public class CmsLoginShell extends CmsLogin {
        }
 
        protected void closeShell() {
-               shell.close();
-               shell.dispose();
+               if (!shell.isDisposed()) {
+                       shell.close();
+                       shell.dispose();
+               }
        }
 
        public Shell getShell() {
index 183468402a7393e45c95746711472bdeffe6595e..c311f019cff2a40006521782bc426bede48e4144 100644 (file)
@@ -47,11 +47,15 @@ public class ErrorFeedback extends TitleAreaDialog {
                if (e instanceof ThreadDeath)
                        throw (ThreadDeath) e;
 
-               new ErrorFeedback(getDisplay().getActiveShell(), message, e).open();
+               new ErrorFeedback(newShell(), message, e).open();
        }
 
        public static void show(String message) {
-               new ErrorFeedback(getDisplay().getActiveShell(), message, null).open();
+               new ErrorFeedback(newShell(), message, null).open();
+       }
+
+       private static Shell newShell() {
+               return new Shell(getDisplay(), SWT.NO_TRIM);
        }
 
        /** Tries to find a display */
@@ -69,6 +73,7 @@ public class ErrorFeedback extends TitleAreaDialog {
 
        public ErrorFeedback(Shell parentShell, String message, Throwable e) {
                super(parentShell);
+               setShellStyle(SWT.NO_TRIM);
                this.message = message;
                this.exception = e;
                log.error(message, e);
@@ -89,14 +94,11 @@ public class ErrorFeedback extends TitleAreaDialog {
                composite.setLayout(new GridLayout(2, false));
                composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 
-               setMessage(message != null ? message
-                               + (exception != null ? ": " + exception.getMessage() : "")
-                               : exception != null ? exception.getMessage() : "Unkown Error",
-                               IMessageProvider.ERROR);
+               setMessage(message != null ? message + (exception != null ? ": " + exception.getMessage() : "")
+                               : exception != null ? exception.getMessage() : "Unkown Error", IMessageProvider.ERROR);
 
                if (exception != null) {
-                       Text stack = new Text(composite, SWT.MULTI | SWT.LEAD | SWT.BORDER
-                                       | SWT.V_SCROLL | SWT.H_SCROLL);
+                       Text stack = new Text(composite, SWT.MULTI | SWT.LEAD | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
                        stack.setEditable(false);
                        stack.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
                        StringWriter sw = new StringWriter();