From 94c0a695c972463b613d919f615f3d92642c75d5 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 14 Oct 2015 09:30:28 +0000 Subject: [PATCH] Make CMS login UI more extensible git-svn-id: https://svn.argeo.org/commons/trunk@8480 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../org/argeo/cms/widgets/auth/CmsLogin.java | 8 ++++-- org.argeo.eclipse.ui.workbench/pom.xml | 6 ----- org.argeo.security.ui.rap/plugin.xml | 2 +- ...EntryPoint.java => RapWorkbenchLogin.java} | 9 +------ .../security/ui/rap}/WorkbenchLogin.java | 27 ++++++++++++++++--- 5 files changed, 31 insertions(+), 21 deletions(-) rename org.argeo.security.ui.rap/src/org/argeo/security/ui/rap/{RapLoginEntryPoint.java => RapWorkbenchLogin.java} (79%) rename {org.argeo.security.ui/src/org/argeo/security/ui/login => org.argeo.security.ui.rap/src/org/argeo/security/ui/rap}/WorkbenchLogin.java (78%) 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 366e80c2b..3f784407a 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 @@ -49,7 +49,11 @@ public class CmsLogin implements CmsStyles, CallbackHandler { return CurrentUser.isAnonymous(cmsView.getSubject()); } - protected void createContents(Composite parent) { + public void createContents(Composite parent) { + defaultCreateContents(parent); + } + + public final void defaultCreateContents(Composite parent) { parent.setLayout(CmsUtils.noSpaceGridLayout()); Composite credentialsBlock = createCredentialsBlock(parent); if (parent instanceof Shell) { @@ -58,7 +62,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { } } - protected final Composite createCredentialsBlock(Composite parent) { + public final Composite createCredentialsBlock(Composite parent) { if (isAnonymous()) { return anonymousUi(parent); } else { diff --git a/org.argeo.eclipse.ui.workbench/pom.xml b/org.argeo.eclipse.ui.workbench/pom.xml index a16c5f9df..0b49fe37d 100644 --- a/org.argeo.eclipse.ui.workbench/pom.xml +++ b/org.argeo.eclipse.ui.workbench/pom.xml @@ -19,11 +19,5 @@ org.argeo.eclipse.ui 2.1.29-SNAPSHOT - - org.argeo.commons - org.argeo.eclipse.ui.rap - 2.1.29-SNAPSHOT - provided - \ No newline at end of file diff --git a/org.argeo.security.ui.rap/plugin.xml b/org.argeo.security.ui.rap/plugin.xml index d383dbf39..f2fae3c50 100644 --- a/org.argeo.security.ui.rap/plugin.xml +++ b/org.argeo.security.ui.rap/plugin.xml @@ -17,7 +17,7 @@ diff --git a/org.argeo.security.ui.rap/src/org/argeo/security/ui/rap/RapLoginEntryPoint.java b/org.argeo.security.ui.rap/src/org/argeo/security/ui/rap/RapWorkbenchLogin.java similarity index 79% rename from org.argeo.security.ui.rap/src/org/argeo/security/ui/rap/RapLoginEntryPoint.java rename to org.argeo.security.ui.rap/src/org/argeo/security/ui/rap/RapWorkbenchLogin.java index bc66b164f..1f4914ace 100644 --- a/org.argeo.security.ui.rap/src/org/argeo/security/ui/rap/RapLoginEntryPoint.java +++ b/org.argeo.security.ui.rap/src/org/argeo/security/ui/rap/RapWorkbenchLogin.java @@ -1,14 +1,11 @@ package org.argeo.security.ui.rap; -import javax.servlet.http.HttpServletRequest; - -import org.argeo.security.ui.login.WorkbenchLogin; import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.client.service.JavaScriptExecutor; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; -public class RapLoginEntryPoint extends WorkbenchLogin { +public class RapWorkbenchLogin extends WorkbenchLogin { @Override protected int createAndRunWorkbench(Display display, String username) { @@ -21,10 +18,6 @@ public class RapLoginEntryPoint extends WorkbenchLogin { return new RapWorkbenchAdvisor(username); } - protected HttpServletRequest getRequest() { - return RWT.getRequest(); - } - @Override public int createUI() { JavaScriptExecutor jsExecutor = RWT.getClient().getService( diff --git a/org.argeo.security.ui/src/org/argeo/security/ui/login/WorkbenchLogin.java b/org.argeo.security.ui.rap/src/org/argeo/security/ui/rap/WorkbenchLogin.java similarity index 78% rename from org.argeo.security.ui/src/org/argeo/security/ui/login/WorkbenchLogin.java rename to org.argeo.security.ui.rap/src/org/argeo/security/ui/rap/WorkbenchLogin.java index 2baedaf77..e7a5c0c35 100644 --- a/org.argeo.security.ui/src/org/argeo/security/ui/login/WorkbenchLogin.java +++ b/org.argeo.security.ui.rap/src/org/argeo/security/ui/rap/WorkbenchLogin.java @@ -1,4 +1,4 @@ -package org.argeo.security.ui.login; +package org.argeo.security.ui.rap; import java.security.PrivilegedAction; @@ -15,13 +15,16 @@ import org.argeo.cms.CmsView; import org.argeo.cms.auth.AuthConstants; 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.specific.UiContext; +import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.application.EntryPoint; +import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; -public abstract class WorkbenchLogin implements EntryPoint, CmsView { +abstract class WorkbenchLogin implements EntryPoint, CmsView { // private final static Log log = LogFactory.getLog(WorkbenchLogin.class); private final Subject subject = new Subject(); private LoginContext loginContext; @@ -70,11 +73,27 @@ public abstract class WorkbenchLogin implements EntryPoint, CmsView { String username); protected HttpServletRequest getRequest() { - return UiContext.getHttpRequest(); + return RWT.getRequest(); } protected CmsLoginShell createCmsLoginShell() { - return new CmsLoginShell(this); + return new CmsLoginShell(this) { + + @Override + public void createContents(Composite parent) { + createLoginPage(parent, this); + } + }; + } + + /** + * To be overridden. CmsLogin#createCredentialsBlock() should be called at + * some point in order to create the credentials composite. In order to use + * the default layout, call CmsLogin#defaultCreateContents() but not + * CmsLogin#createContent(), since it would lead to a stack overflow. + */ + protected void createLoginPage(Composite parent, CmsLogin login) { + login.defaultCreateContents(parent); } @Override -- 2.30.2