From: Mathieu Baudier Date: Sun, 25 Mar 2018 14:12:19 +0000 (+0200) Subject: Generalise Eclipse 4 components X-Git-Tag: argeo-commons-2.1.73~27 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=e708f74fa92edea51d72e21eb19f357fd70c818c Generalise Eclipse 4 components --- 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 new file mode 100644 index 000000000..c70e381c3 --- /dev/null +++ b/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/AbstractRapE4App.java @@ -0,0 +1,78 @@ +package org.argeo.cms.e4.rap; + +import java.security.PrivilegedAction; +import java.util.HashMap; +import java.util.Map; + +import javax.security.auth.Subject; + +import org.eclipse.rap.e4.E4ApplicationConfig; +import org.eclipse.rap.e4.E4EntryPointFactory; +import org.eclipse.rap.rwt.application.Application; +import org.eclipse.rap.rwt.application.Application.OperationMode; +import org.eclipse.rap.rwt.application.ApplicationConfiguration; +import org.eclipse.rap.rwt.application.EntryPoint; +import org.eclipse.rap.rwt.client.WebClient; +import org.osgi.framework.BundleContext; +import org.osgi.framework.FrameworkUtil; + +public abstract class AbstractRapE4App implements ApplicationConfiguration { + private final BundleContext bc = FrameworkUtil.getBundle(AbstractRapE4App.class).getBundleContext(); + + private String pageTitle; + private String e4Xmi; + private String path; + + public void configure(Application application) { + String lifeCycleUri = "bundleclass://" + bc.getBundle().getSymbolicName() + "/" + + CmsLoginLifecycle.class.getName(); + + Map properties = new HashMap(); + properties.put(WebClient.PAGE_TITLE, pageTitle); + E4ApplicationConfig config = new E4ApplicationConfig(e4Xmi, lifeCycleUri, null, false, true, true); + config.isClearPersistedState(); + E4EntryPointFactory entryPointFactory = new E4EntryPointFactory(config) { + + @Override + public EntryPoint create() { + Subject subject = new Subject(); + EntryPoint ep = createEntryPoint(); + EntryPoint authEp = new EntryPoint() { + + @Override + public int createUI() { + return Subject.doAs(subject, new PrivilegedAction() { + + @Override + public Integer run() { + return ep.createUI(); + } + + }); + } + }; + return authEp; + } + + protected EntryPoint createEntryPoint() { + return super.create(); + } + + }; + application.addEntryPoint(path, entryPointFactory, properties); + application.setOperationMode(OperationMode.SWT_COMPATIBILITY); + } + + public void setPageTitle(String pageTitle) { + this.pageTitle = pageTitle; + } + + public void setE4Xmi(String e4Xmi) { + this.e4Xmi = e4Xmi; + } + + public void setPath(String path) { + this.path = path; + } + +} diff --git a/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/CmsE4AdminApp.java b/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/CmsE4AdminApp.java index a8edd707b..4f1b20a3d 100644 --- a/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/CmsE4AdminApp.java +++ b/org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/CmsE4AdminApp.java @@ -1,77 +1,10 @@ package org.argeo.cms.e4.rap; -import java.security.PrivilegedAction; -import java.util.HashMap; -import java.util.Map; - -import javax.security.auth.Subject; - -import org.eclipse.rap.e4.E4ApplicationConfig; -import org.eclipse.rap.e4.E4EntryPointFactory; -import org.eclipse.rap.rwt.application.Application; -import org.eclipse.rap.rwt.application.Application.OperationMode; -import org.eclipse.rap.rwt.application.ApplicationConfiguration; -import org.eclipse.rap.rwt.application.EntryPoint; -import org.eclipse.rap.rwt.client.WebClient; -import org.osgi.framework.BundleContext; -import org.osgi.framework.FrameworkUtil; - -public class CmsE4AdminApp implements ApplicationConfiguration { - private final BundleContext bc = FrameworkUtil.getBundle(CmsE4AdminApp.class).getBundleContext(); - - String pageTitle = "CMS Admin"; - String e4Xmi = "org.argeo.cms.e4/cms-admin.e4xmi"; - String path = "/admin"; - String lifeCycleUri = "bundleclass://" + bc.getBundle().getSymbolicName() + "/" + CmsLoginLifecycle.class.getName(); - - public void configure(Application application) { - - Map properties = new HashMap(); - properties.put(WebClient.PAGE_TITLE, pageTitle); - E4ApplicationConfig config = new E4ApplicationConfig(e4Xmi, lifeCycleUri, null, false, true, true); - config.isClearPersistedState(); - E4EntryPointFactory entryPointFactory = new E4EntryPointFactory(config) { - - @Override - public EntryPoint create() { - Subject subject = new Subject(); - EntryPoint ep = createEntryPoint(); - EntryPoint authEp = new EntryPoint() { - - @Override - public int createUI() { - return Subject.doAs(subject, new PrivilegedAction() { - - @Override - public Integer run() { - return ep.createUI(); - } - - }); - } - }; - return authEp; - } - - protected EntryPoint createEntryPoint() { - return super.create(); - } - - }; - application.addEntryPoint(path, entryPointFactory, properties); - application.setOperationMode(OperationMode.SWT_COMPATIBILITY); - } - - public void setPageTitle(String pageTitle) { - this.pageTitle = pageTitle; - } - - public void setE4Xmi(String e4Xmi) { - this.e4Xmi = e4Xmi; - } - - public void setPath(String path) { - this.path = path; +public class CmsE4AdminApp extends AbstractRapE4App { + public CmsE4AdminApp() { + setPageTitle("CMS Admin"); + setE4Xmi("org.argeo.cms.e4/cms-admin.e4xmi"); + setPath("/admin"); } }