From 2fd1756750023e3e611818d9e14fcf41bed95d42 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Fri, 22 Jan 2016 17:00:51 +0000 Subject: [PATCH] Fix CMS Login feedback when login failed git-svn-id: https://svn.argeo.org/commons/trunk@8792 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../org/argeo/cms/widgets/auth/CmsLogin.java | 2 +- .../argeo/cms/widgets/auth/CmsLoginShell.java | 23 +++++++++++++++---- .../eclipse/ui/dialogs/ErrorFeedback.java | 18 ++++++++------- 3 files changed, 30 insertions(+), 13 deletions(-) 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(); -- 2.30.2