From: Mathieu Baudier Date: Fri, 22 Jan 2016 17:00:51 +0000 (+0000) Subject: Fix CMS Login feedback when login failed X-Git-Tag: argeo-commons-2.1.33~7 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=2fd1756750023e3e611818d9e14fcf41bed95d42;p=lgpl%2Fargeo-commons.git Fix CMS Login feedback when login failed git-svn-id: https://svn.argeo.org/commons/trunk@8792 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLogin.java b/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLogin.java index 578386321..d0bf14286 100644 --- a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLogin.java +++ b/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLogin.java @@ -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); diff --git a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLoginShell.java b/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLoginShell.java index a1ca97090..29a3f54e6 100644 --- a/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLoginShell.java +++ b/org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLoginShell.java @@ -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() { diff --git a/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/dialogs/ErrorFeedback.java b/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/dialogs/ErrorFeedback.java index 183468402..c311f019c 100644 --- a/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/dialogs/ErrorFeedback.java +++ b/org.argeo.eclipse.ui/src/org/argeo/eclipse/ui/dialogs/ErrorFeedback.java @@ -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();