]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.e4.rap/src/org/argeo/cms/e4/rap/AbstractRapE4App.java
Prepare release.
[lgpl/argeo-commons.git] / org.argeo.cms.e4.rap / src / org / argeo / cms / e4 / rap / AbstractRapE4App.java
1 package org.argeo.cms.e4.rap;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import org.argeo.cms.ui.dialogs.CmsFeedback;
7 import org.eclipse.rap.e4.E4ApplicationConfig;
8 import org.eclipse.rap.rwt.application.Application;
9 import org.eclipse.rap.rwt.application.Application.OperationMode;
10 import org.eclipse.rap.rwt.application.ApplicationConfiguration;
11 import org.eclipse.rap.rwt.application.ExceptionHandler;
12 import org.eclipse.rap.rwt.client.WebClient;
13
14 /** Base class for CMS RAP applications. */
15 public abstract class AbstractRapE4App implements ApplicationConfiguration {
16 private String e4Xmi;
17 private String path;
18 private String lifeCycleUri = "bundleclass://org.argeo.cms.e4.rap/org.argeo.cms.e4.rap.CmsLoginLifecycle";
19
20 Map<String, String> baseProperties = new HashMap<String, String>();
21
22 public void configure(Application application) {
23 application.setExceptionHandler(new ExceptionHandler() {
24
25 @Override
26 public void handleException(Throwable throwable) {
27 CmsFeedback.show("Unexpected RWT exception", throwable);
28 }
29 });
30
31 if (e4Xmi != null) {// backward compatibility
32 addE4EntryPoint(application, path, e4Xmi, getBaseProperties());
33 } else {
34 addEntryPoints(application);
35 }
36 }
37
38 /**
39 * To be overridden in order to add multiple entry points, directly or using
40 * {@link #addE4EntryPoint(Application, String, String, Map)}.
41 */
42 protected void addEntryPoints(Application application) {
43
44 }
45
46 protected Map<String, String> getBaseProperties() {
47 return baseProperties;
48 }
49
50 // protected void addEntryPoint(Application application, E4ApplicationConfig config, Map<String, String> properties) {
51 // CmsE4EntryPointFactory entryPointFactory = new CmsE4EntryPointFactory(config);
52 // application.addEntryPoint(path, entryPointFactory, properties);
53 // application.setOperationMode(OperationMode.SWT_COMPATIBILITY);
54 // }
55
56 protected void addE4EntryPoint(Application application, String path, String e4Xmi, Map<String, String> properties) {
57 E4ApplicationConfig config = new E4ApplicationConfig(e4Xmi, lifeCycleUri, null, null, false, true, true);
58 CmsE4EntryPointFactory entryPointFactory = new CmsE4EntryPointFactory(config);
59 application.addEntryPoint(path, entryPointFactory, properties);
60 application.setOperationMode(OperationMode.SWT_COMPATIBILITY);
61 }
62
63 public void setPageTitle(String pageTitle) {
64 if (pageTitle != null)
65 baseProperties.put(WebClient.PAGE_TITLE, pageTitle);
66 }
67
68 public void setE4Xmi(String e4Xmi) {
69 this.e4Xmi = e4Xmi;
70 }
71
72 public void setPath(String path) {
73 this.path = path;
74 }
75
76 public void setLifeCycleUri(String lifeCycleUri) {
77 this.lifeCycleUri = lifeCycleUri;
78 }
79
80 public void init(Map<String, Object> properties) {
81 for (String key : properties.keySet()) {
82 Object value = properties.get(key);
83 if (value != null)
84 baseProperties.put(key, value.toString());
85 }
86 }
87 }