1 package org
.argeo
.cms
.ui
.script
;
3 import java
.util
.HashMap
;
7 import javax
.jcr
.Repository
;
8 import javax
.jcr
.RepositoryException
;
9 import javax
.script
.Invocable
;
10 import javax
.script
.ScriptException
;
12 import org
.argeo
.api
.NodeConstants
;
13 import org
.argeo
.cms
.ui
.CmsUiProvider
;
14 import org
.argeo
.cms
.ui
.util
.CmsPane
;
15 import org
.argeo
.cms
.ui
.util
.CmsUiUtils
;
16 import org
.argeo
.cms
.web
.SimpleErgonomics
;
17 import org
.argeo
.eclipse
.ui
.Selected
;
18 import org
.eclipse
.rap
.rwt
.RWT
;
19 import org
.eclipse
.rap
.rwt
.application
.Application
;
20 import org
.eclipse
.rap
.rwt
.application
.EntryPoint
;
21 import org
.eclipse
.rap
.rwt
.application
.EntryPointFactory
;
22 import org
.eclipse
.rap
.rwt
.client
.WebClient
;
23 import org
.eclipse
.rap
.rwt
.client
.service
.JavaScriptExecutor
;
24 import org
.eclipse
.swt
.SWT
;
25 import org
.eclipse
.swt
.events
.SelectionEvent
;
26 import org
.eclipse
.swt
.widgets
.Button
;
27 import org
.eclipse
.swt
.widgets
.Composite
;
28 import org
.eclipse
.swt
.widgets
.Control
;
29 import org
.eclipse
.swt
.widgets
.Label
;
30 import org
.osgi
.framework
.BundleContext
;
32 public class AppUi
implements CmsUiProvider
, Branding
{
33 private final CmsScriptApp app
;
35 private CmsUiProvider ui
;
36 private String createUi
;
38 private String script
;
39 // private Branding branding = new Branding();
41 private EntryPointFactory factory
;
44 private String themeId
;
45 private String additionalHeaders
;
46 private String bodyHtml
;
47 private String pageTitle
;
48 private String pageOverflow
;
49 private String favicon
;
51 public AppUi(CmsScriptApp app
) {
55 public AppUi(CmsScriptApp app
, String scriptPath
) {
57 this.ui
= new ScriptUi((BundleContext
) app
.getScriptEngine().get(CmsScriptRwtApplication
.BC
),
58 app
.getScriptEngine(), scriptPath
);
61 public AppUi(CmsScriptApp app
, CmsUiProvider uiProvider
) {
66 public AppUi(CmsScriptApp app
, EntryPointFactory factory
) {
68 this.factory
= factory
;
71 public void apply(Repository repository
, Application application
, Branding appBranding
, String path
) {
72 Map
<String
, String
> factoryProperties
= new HashMap
<>();
73 if (appBranding
!= null)
74 appBranding
.applyBranding(factoryProperties
);
75 applyBranding(factoryProperties
);
76 if (factory
!= null) {
77 application
.addEntryPoint("/" + path
, factory
, factoryProperties
);
79 EntryPointFactory entryPointFactory
= new EntryPointFactory() {
81 public EntryPoint
create() {
82 SimpleErgonomics ergonomics
= new SimpleErgonomics(repository
, NodeConstants
.SYS_WORKSPACE
,
83 "/home/root/argeo:keyring", AppUi
.this, factoryProperties
);
84 // CmsUiProvider header = app.getHeader();
85 // if (header != null)
86 // ergonomics.setHeader(header);
87 app
.applySides(ergonomics
);
88 Integer headerHeight
= app
.getHeaderHeight();
89 if (headerHeight
!= null)
90 ergonomics
.setHeaderHeight(headerHeight
);
94 application
.addEntryPoint("/" + path
, entryPointFactory
, factoryProperties
);
98 public void setUi(CmsUiProvider uiProvider
) {
102 public void applyBranding(Map
<String
, String
> properties
) {
104 properties
.put(WebClient
.THEME_ID
, themeId
);
105 if (additionalHeaders
!= null)
106 properties
.put(WebClient
.HEAD_HTML
, additionalHeaders
);
107 if (bodyHtml
!= null)
108 properties
.put(WebClient
.BODY_HTML
, bodyHtml
);
109 if (pageTitle
!= null)
110 properties
.put(WebClient
.PAGE_TITLE
, pageTitle
);
111 if (pageOverflow
!= null)
112 properties
.put(WebClient
.PAGE_OVERFLOW
, pageOverflow
);
114 properties
.put(WebClient
.FAVICON
, favicon
);
117 // public Branding getBranding() {
122 public Control
createUi(Composite parent
, Node context
) throws RepositoryException
{
123 CmsPane cmsPane
= new CmsPane(parent
, SWT
.NONE
);
127 CmsUiUtils
.style(cmsPane
.getQaArea(), "qa");
128 Button reload
= new Button(cmsPane
.getQaArea(), SWT
.FLAT
);
129 CmsUiUtils
.style(reload
, "qa");
130 reload
.setText("Reload");
131 reload
.addSelectionListener(new Selected() {
132 private static final long serialVersionUID
= 1L;
135 public void widgetSelected(SelectionEvent e
) {
142 RWT
.getClient().getService(JavaScriptExecutor
.class)
143 .execute("setTimeout('location.reload()',1000)");
148 CmsUiUtils
.style(cmsPane
.getSupportArea(), "support");
149 Label msg
= new Label(cmsPane
.getSupportArea(), SWT
.NONE
);
150 CmsUiUtils
.style(msg
, "support");
151 msg
.setText("UNSUPPORTED DEVELOPMENT VERSION");
155 ui
.createUi(cmsPane
.getMainArea(), context
);
157 if (createUi
!= null) {
158 Invocable invocable
= (Invocable
) app
.getScriptEngine();
160 invocable
.invokeFunction(createUi
, cmsPane
.getMainArea(), context
);
162 } catch (NoSuchMethodException e
) {
163 // TODO Auto-generated catch block
165 } catch (ScriptException e
) {
166 // TODO Auto-generated catch block
171 Invocable invocable
= (Invocable
) app
.getScriptEngine();
173 invocable
.invokeMethod(impl
, "createUi", cmsPane
.getMainArea(), context
);
175 } catch (NoSuchMethodException e
) {
176 // TODO Auto-generated catch block
178 } catch (ScriptException e
) {
179 // TODO Auto-generated catch block
184 // Invocable invocable = (Invocable) app.getScriptEngine();
186 // invocable.invokeMethod(AppUi.this, "initUi", parent, context);
188 // } catch (NoSuchMethodException e) {
189 // // TODO Auto-generated catch block
190 // e.printStackTrace();
191 // } catch (ScriptException e) {
192 // // TODO Auto-generated catch block
193 // e.printStackTrace();
199 public void setCreateUi(String createUi
) {
200 this.createUi
= createUi
;
203 public void setImpl(Object impl
) {
207 public Object
getImpl() {
211 public String
getScript() {
215 public void setScript(String script
) {
216 this.script
= script
;
220 public String
getThemeId() {
224 public void setThemeId(String themeId
) {
225 this.themeId
= themeId
;
228 public String
getAdditionalHeaders() {
229 return additionalHeaders
;
232 public void setAdditionalHeaders(String additionalHeaders
) {
233 this.additionalHeaders
= additionalHeaders
;
236 public String
getBodyHtml() {
240 public void setBodyHtml(String bodyHtml
) {
241 this.bodyHtml
= bodyHtml
;
244 public String
getPageTitle() {
248 public void setPageTitle(String pageTitle
) {
249 this.pageTitle
= pageTitle
;
252 public String
getPageOverflow() {
256 public void setPageOverflow(String pageOverflow
) {
257 this.pageOverflow
= pageOverflow
;
260 public String
getFavicon() {
264 public void setFavicon(String favicon
) {
265 this.favicon
= favicon
;