]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/widgets/auth/CmsLoginShell.java
Merge security.ui bundle in the cms.ui.workbench bundle
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / widgets / auth / CmsLoginShell.java
index 9f89f128af0a2d9f26a2753a1d478e29174a6985..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 {
@@ -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() {