From 21171ced2bce875e64db47d95bf4a00a0e141a9a Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sun, 22 Sep 2019 11:29:39 +0200 Subject: [PATCH] Make RAP Apps more extensible by entroducing multiple entry points. --- .../argeo/cms/e4/rap/AbstractRapE4App.java | 44 ++++++++++++++++--- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/AbstractRapE4App.java b/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/AbstractRapE4App.java index 66c796b83..1d70044b3 100644 --- a/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/AbstractRapE4App.java +++ b/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/AbstractRapE4App.java @@ -11,12 +11,14 @@ import org.eclipse.rap.rwt.application.ApplicationConfiguration; import org.eclipse.rap.rwt.application.ExceptionHandler; import org.eclipse.rap.rwt.client.WebClient; +/** Base class for CMS RAP applications. */ public abstract class AbstractRapE4App implements ApplicationConfiguration { - private String pageTitle; private String e4Xmi; private String path; private String lifeCycleUri = "bundleclass://org.argeo.cms.e4.rap/org.argeo.cms.e4.rap.CmsLoginLifecycle"; + Map baseProperties = new HashMap(); + public void configure(Application application) { application.setExceptionHandler(new ExceptionHandler() { @@ -26,20 +28,41 @@ public abstract class AbstractRapE4App implements ApplicationConfiguration { } }); - Map properties = new HashMap(); - properties.put(WebClient.PAGE_TITLE, pageTitle); - E4ApplicationConfig config = new E4ApplicationConfig(e4Xmi, lifeCycleUri, null, null, false, true, true); - addEntryPoint(application, config, properties); + if (e4Xmi != null) {// backward compatibility + addE4EntryPoint(application, path, e4Xmi, getBaseProperties()); + } else { + addEntryPoints(application); + } + } + + /** + * To be overridden in order to add multiple entry points, directly or using + * {@link #addE4EntryPoint(Application, String, String, Map)}. + */ + protected void addEntryPoints(Application application) { + } - protected void addEntryPoint(Application application, E4ApplicationConfig config, Map properties) { + protected Map getBaseProperties() { + return baseProperties; + } + +// protected void addEntryPoint(Application application, E4ApplicationConfig config, Map properties) { +// CmsE4EntryPointFactory entryPointFactory = new CmsE4EntryPointFactory(config); +// application.addEntryPoint(path, entryPointFactory, properties); +// application.setOperationMode(OperationMode.SWT_COMPATIBILITY); +// } + + protected void addE4EntryPoint(Application application, String path, String e4Xmi, Map properties) { + E4ApplicationConfig config = new E4ApplicationConfig(e4Xmi, lifeCycleUri, null, null, false, true, true); CmsE4EntryPointFactory entryPointFactory = new CmsE4EntryPointFactory(config); application.addEntryPoint(path, entryPointFactory, properties); application.setOperationMode(OperationMode.SWT_COMPATIBILITY); } public void setPageTitle(String pageTitle) { - this.pageTitle = pageTitle; + if (pageTitle != null) + baseProperties.put(WebClient.PAGE_TITLE, pageTitle); } public void setE4Xmi(String e4Xmi) { @@ -54,4 +77,11 @@ public abstract class AbstractRapE4App implements ApplicationConfiguration { this.lifeCycleUri = lifeCycleUri; } + public void init(Map properties) { + for (String key : properties.keySet()) { + Object value = properties.get(key); + if (value != null) + baseProperties.put(key, value.toString()); + } + } } -- 2.30.2