]> git.argeo.org Git - lgpl/argeo-commons.git/blob - AbstractRapE4App.java
c70e381c392442e91661fc7aa7084e9b3a885892
[lgpl/argeo-commons.git] / AbstractRapE4App.java
1 package org.argeo.cms.e4.rap;
2
3 import java.security.PrivilegedAction;
4 import java.util.HashMap;
5 import java.util.Map;
6
7 import javax.security.auth.Subject;
8
9 import org.eclipse.rap.e4.E4ApplicationConfig;
10 import org.eclipse.rap.e4.E4EntryPointFactory;
11 import org.eclipse.rap.rwt.application.Application;
12 import org.eclipse.rap.rwt.application.Application.OperationMode;
13 import org.eclipse.rap.rwt.application.ApplicationConfiguration;
14 import org.eclipse.rap.rwt.application.EntryPoint;
15 import org.eclipse.rap.rwt.client.WebClient;
16 import org.osgi.framework.BundleContext;
17 import org.osgi.framework.FrameworkUtil;
18
19 public abstract class AbstractRapE4App implements ApplicationConfiguration {
20 private final BundleContext bc = FrameworkUtil.getBundle(AbstractRapE4App.class).getBundleContext();
21
22 private String pageTitle;
23 private String e4Xmi;
24 private String path;
25
26 public void configure(Application application) {
27 String lifeCycleUri = "bundleclass://" + bc.getBundle().getSymbolicName() + "/"
28 + CmsLoginLifecycle.class.getName();
29
30 Map<String, String> properties = new HashMap<String, String>();
31 properties.put(WebClient.PAGE_TITLE, pageTitle);
32 E4ApplicationConfig config = new E4ApplicationConfig(e4Xmi, lifeCycleUri, null, false, true, true);
33 config.isClearPersistedState();
34 E4EntryPointFactory entryPointFactory = new E4EntryPointFactory(config) {
35
36 @Override
37 public EntryPoint create() {
38 Subject subject = new Subject();
39 EntryPoint ep = createEntryPoint();
40 EntryPoint authEp = new EntryPoint() {
41
42 @Override
43 public int createUI() {
44 return Subject.doAs(subject, new PrivilegedAction<Integer>() {
45
46 @Override
47 public Integer run() {
48 return ep.createUI();
49 }
50
51 });
52 }
53 };
54 return authEp;
55 }
56
57 protected EntryPoint createEntryPoint() {
58 return super.create();
59 }
60
61 };
62 application.addEntryPoint(path, entryPointFactory, properties);
63 application.setOperationMode(OperationMode.SWT_COMPATIBILITY);
64 }
65
66 public void setPageTitle(String pageTitle) {
67 this.pageTitle = pageTitle;
68 }
69
70 public void setE4Xmi(String e4Xmi) {
71 this.e4Xmi = e4Xmi;
72 }
73
74 public void setPath(String path) {
75 this.path = path;
76 }
77
78 }