]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui.rap/src/org/argeo/security/ui/rap/WorkbenchLogin.java
Code cleaning and refactoring.
[lgpl/argeo-commons.git] / org.argeo.security.ui.rap / src / org / argeo / security / ui / rap / WorkbenchLogin.java
index e7a5c0c35d31fc4227112ebfb1686cb969d86883..a074ed956dc1f0ad033356a9a87bb4b7a8cc42ca 100644 (file)
@@ -1,6 +1,7 @@
 package org.argeo.security.ui.rap;
 
 import java.security.PrivilegedAction;
+import java.util.Locale;
 
 import javax.security.auth.Subject;
 import javax.security.auth.login.CredentialNotFoundException;
@@ -17,9 +18,11 @@ import org.argeo.cms.auth.CurrentUser;
 import org.argeo.cms.auth.HttpRequestCallbackHandler;
 import org.argeo.cms.widgets.auth.CmsLogin;
 import org.argeo.cms.widgets.auth.CmsLoginShell;
+import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
 import org.argeo.eclipse.ui.specific.UiContext;
 import org.eclipse.rap.rwt.RWT;
 import org.eclipse.rap.rwt.application.EntryPoint;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.PlatformUI;
@@ -42,8 +45,17 @@ abstract class WorkbenchLogin implements EntryPoint, CmsView {
                        CmsLoginShell loginShell = createCmsLoginShell();
                        loginShell.open();
                        while (!loginShell.getShell().isDisposed()) {
-                               if (!display.readAndDispatch()) {
-                                       display.sleep();
+                               try {
+                                       if (!display.readAndDispatch())
+                                               display.sleep();
+                               } catch (Exception e1) {
+                                       try {
+                                               Thread.sleep(3000);
+                                       } catch (InterruptedException e2) {
+                                               // silent
+                                       }
+                                       ErrorFeedback.show("Login failed", e1);
+                                       return -1;
                                }
                        }
                } catch (LoginException e) {
@@ -81,8 +93,17 @@ abstract class WorkbenchLogin implements EntryPoint, CmsView {
 
                        @Override
                        public void createContents(Composite parent) {
-                               createLoginPage(parent, this);
+                               WorkbenchLogin.this.createLoginPage(parent, this);
                        }
+
+                       @Override
+                       protected void extendsCredentialsBlock(Composite credentialsBlock,
+                                       Locale selectedLocale,
+                                       SelectionListener loginSelectionListener) {
+                               WorkbenchLogin.this.extendsCredentialsBlock(credentialsBlock,
+                                               selectedLocale, loginSelectionListener);
+                       }
+
                };
        }
 
@@ -96,6 +117,11 @@ abstract class WorkbenchLogin implements EntryPoint, CmsView {
                login.defaultCreateContents(parent);
        }
 
+       protected void extendsCredentialsBlock(Composite credentialsBlock,
+                       Locale selectedLocale, SelectionListener loginSelectionListener) {
+
+       }
+
        @Override
        public void navigateTo(String state) {
                // TODO Auto-generated method stub