]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTWikiBrowser.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.views.swt.client / src / org / simantics / views / swt / client / impl / SWTWikiBrowser.java
1 package org.simantics.views.swt.client.impl;\r
2 \r
3 import java.io.IOException;\r
4 \r
5 import org.eclipse.jface.layout.GridDataFactory;\r
6 import org.eclipse.jface.layout.GridLayoutFactory;\r
7 import org.eclipse.mylyn.wikitext.core.parser.MarkupParser;\r
8 import org.eclipse.swt.browser.Browser;\r
9 import org.eclipse.swt.widgets.Composite;\r
10 import org.simantics.Simantics;\r
11 import org.simantics.browsing.ui.common.ErrorLogger;\r
12 import org.simantics.db.ReadGraph;\r
13 import org.simantics.db.exception.DatabaseException;\r
14 import org.simantics.db.layer0.variable.Variable;\r
15 import org.simantics.db.request.Read;\r
16 import org.simantics.scl.runtime.function.Function1;\r
17 import org.simantics.utils.FileUtils;\r
18 import org.simantics.utils.datastructures.map.Tuple;\r
19 import org.simantics.utils.ui.BundleUtils;\r
20 import org.simantics.views.swt.client.base.SingleSWTViewNode;\r
21 import org.simantics.wiki.ui.SimanticsDialect;\r
22 import org.simantics.wiki.ui.language.MediaWikiLanguage;\r
23 \r
24 public class SWTWikiBrowser extends SingleSWTViewNode<Browser> {\r
25 \r
26         private static final long serialVersionUID = 5826022972081217837L;\r
27         \r
28         public String                   document;\r
29         public Variable                 variable;\r
30         public Function1<String, Boolean> navigate;\r
31         public Variable                                 edited;\r
32 \r
33         private Tuple                    lastAppliedParametrization;\r
34 \r
35         @Override\r
36         public void reset() {\r
37                 super.reset();\r
38                 lastAppliedParametrization = null;\r
39         }\r
40         \r
41         @Override\r
42         public void createControls(Composite parent) {\r
43 \r
44                 GridDataFactory.fillDefaults().grab(true, true).applyTo(parent);\r
45                 GridLayoutFactory.fillDefaults().applyTo(parent);\r
46 \r
47                 control = new Browser(parent, style);\r
48                 GridDataFactory.fillDefaults().grab(true, true).applyTo(control);\r
49 \r
50                 setProperties();\r
51 \r
52         }\r
53 \r
54         public void synchronizeVariable(Variable variable) {\r
55                 \r
56         }\r
57         \r
58         public void synchronizeEdited(Variable edited) {\r
59                 propertyCallback.apply("edited", edited);\r
60         }\r
61 \r
62         public void synchronizeDocument(final String document) {\r
63                 \r
64                 if(document != null) {\r
65                         \r
66                         final Variable variable = SWTWikiBrowser.this.variable;\r
67                         if (variable == null) {\r
68                                 return;\r
69                         }\r
70 \r
71                         Tuple checkParam = new Tuple(document, variable);\r
72                         if (checkParam.equals(lastAppliedParametrization))\r
73                                 return;\r
74                         \r
75                         lastAppliedParametrization = checkParam;\r
76 \r
77                         try {\r
78                                 \r
79                                 String markup = Simantics.getSession().syncRequest(new Read<String>() {\r
80                                         @Override\r
81                                         public String perform(ReadGraph graph) throws DatabaseException {\r
82                                                 return SimanticsDialect.INSTANCE.apply(graph, variable, document);\r
83                                         }\r
84                                 });\r
85 \r
86                                 MarkupParser markupParser = new MarkupParser();\r
87                                 MediaWikiLanguage language = new MediaWikiLanguage();\r
88                                 markupParser.setMarkupLanguage(language);\r
89                                 String htmlContent = markupParser.parseToHtml(markup);\r
90                                 if (htmlContent == null)\r
91                                         return;\r
92                         \r
93                                 final Browser control = this.control;\r
94                                 if (control == null)\r
95                                         return;\r
96                                 control.setText(htmlContent);\r
97                                 \r
98                         } catch (DatabaseException e) {\r
99                                 ErrorLogger.defaultLogError(e);\r
100                         }                       \r
101                         \r
102                 }\r
103         }\r
104 \r
105 }\r