X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fwidgets%2Fauth%2FCmsLoginShell.java;h=29a3f54e64990016889add8de4d15c0d440988f3;hb=752d1b9f82cec20b33c319d6ea1691eac2cf3c82;hp=9f89f128af0a2d9f26a2753a1d478e29174a6985;hpb=d3cb756645f72b4476e0e00247736a8a8405299f;p=lgpl%2Fargeo-commons.git 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 9f89f128a..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 { @@ -14,7 +17,7 @@ public class CmsLoginShell extends CmsLogin { super(cmsView); shell = createShell(); shell.setData(RWT.CUSTOM_VARIANT, CMS_USER_MENU); - createContents(shell); + createUi(shell); } /** To be overridden. */ @@ -30,9 +33,22 @@ public class CmsLoginShell extends CmsLogin { } @Override - protected void login() { - super.login(); - closeShell(); + protected boolean login() { + boolean success = false; + try { + success = super.login(); + return success; + } finally { + if (success) + closeShell(); + else { + for (Control child : shell.getChildren()) + child.dispose(); + createUi(shell); + shell.layout(); + // TODO error message + } + } } @Override @@ -42,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() {