]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/ui/fm/FmUiProvider.java
Improve DocBook
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / fm / FmUiProvider.java
1 package org.argeo.cms.ui.fm;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.io.StringWriter;
6 import java.util.HashMap;
7 import java.util.Map;
8
9 import javax.jcr.Node;
10 import javax.jcr.RepositoryException;
11
12 import org.argeo.cms.ui.CmsUiProvider;
13 import org.argeo.fm.jcr.JcrModel;
14 import org.eclipse.swt.SWT;
15 import org.eclipse.swt.browser.Browser;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.swt.widgets.Control;
18
19 import freemarker.template.Configuration;
20 import freemarker.template.Template;
21 import freemarker.template.TemplateExceptionHandler;
22
23 public class FmUiProvider implements CmsUiProvider {
24 static Configuration cfg;
25 static {
26 try {
27 cfg = new Configuration(Configuration.VERSION_2_3_28);
28 cfg.setDirectoryForTemplateLoading(new File(System.getProperty("user.home") + File.separator + "dev"
29 + File.separator + "work" + File.separator + "ftl"));
30 cfg.setDefaultEncoding("UTF-8");
31 cfg.setTemplateExceptionHandler(TemplateExceptionHandler.HTML_DEBUG_HANDLER);
32 cfg.setLogTemplateExceptions(false);
33 cfg.setWrapUncheckedExceptions(true);
34 } catch (IOException e) {
35 // TODO Auto-generated catch block
36 e.printStackTrace();
37 }
38 }
39
40 private String template;
41
42 public FmUiProvider(String template) {
43 this.template = template;
44 }
45
46 @Override
47 public Control createUi(Composite parent, Node context) throws RepositoryException {
48 Browser browser = new Browser(parent, SWT.NONE);
49 try {
50 Map<String, Object> root = new HashMap<>();
51 if (context != null)
52 root.put("node", new JcrModel(context));
53 root.put("basePath", "./");
54
55 Template temp = cfg.getTemplate(template);
56 StringWriter out = new StringWriter();
57 temp.process(root, out);
58 browser.setText(out.toString());
59 } catch (Exception e) {
60 // TODO Auto-generated catch block
61 e.printStackTrace();
62 }
63
64 return browser;
65 }
66
67 }