]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/DocumentWriter.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.document.linking.ui / src / org / simantics / document / linking / report / templates / DocumentWriter.java
diff --git a/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/DocumentWriter.java b/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/DocumentWriter.java
new file mode 100644 (file)
index 0000000..ebf623e
--- /dev/null
@@ -0,0 +1,111 @@
+package org.simantics.document.linking.report.templates;\r
+\r
+import java.net.URL;\r
+import java.util.Collection;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.document.DocumentResource;\r
+import org.simantics.document.linking.report.Document.TextSize;\r
+import org.simantics.document.linking.report.TableColumn.Alignment;\r
+import org.simantics.document.linking.report.Document;\r
+import org.simantics.document.linking.report.TextItem;\r
+import org.simantics.document.linking.report.URLItem;\r
+import org.simantics.document.linking.report.evaluator.AlignmentHint;\r
+import org.simantics.document.linking.report.evaluator.Date;\r
+import org.simantics.document.linking.report.evaluator.EvaluatorNode;\r
+import org.simantics.document.linking.report.evaluator.Lines;\r
+import org.simantics.document.linking.report.evaluator.Or;\r
+import org.simantics.document.linking.report.evaluator.TextSizeHint;\r
+import org.simantics.document.linking.report.evaluator.Variable;\r
+import org.simantics.document.linking.report.templates.custom.CustomizableContent;\r
+import org.simantics.document.linking.report.templates.custom.EvaluatorCustomizableContent;\r
+\r
+\r
+public abstract  class DocumentWriter<T> extends TableReportWriter<T> implements CustomizableContentProvider{\r
+       \r
+       Map<String, CustomizableContent> content = new HashMap<String, CustomizableContent>();\r
+       ReadGraph graph;\r
+       DocumentResource doc;\r
+       Document document;\r
+       Map<Object, Object> context;\r
+       \r
+       public DocumentWriter() {\r
+               setDefaultContent(null);\r
+       }\r
+       \r
+       @Override\r
+       public void start(ReadGraph graph, Resource model, Document writer,\r
+                       Map<Object, Object> context) throws Exception {\r
+               this.graph = graph;\r
+               this.doc = DocumentResource.getInstance(graph);\r
+               this.context = context;\r
+               this.document = writer;\r
+       }\r
+       \r
+       \r
+       @Override\r
+       public CustomizableContent getContent(String id) {\r
+               return content.get(id);\r
+       }\r
+       \r
+       @Override\r
+       public void setContent(String id, CustomizableContent content) {\r
+               this.content.put(id, content);\r
+       }\r
+       \r
+       @Override\r
+       public void setDefaultContent(String id) {\r
+               if ("Document".equals(id) || id == null) {\r
+                       EvaluatorCustomizableContent c = new EvaluatorCustomizableContent("Document format");\r
+                       Or item = new Or();\r
+                       item.addChild(new Variable("#HasLabel"));\r
+                       item.addChild(new Variable("#HasName"));\r
+                       c.setItem(item);\r
+                       c.setSupportStyles(false);\r
+                       c.setSupportMultiline(true);\r
+                       content.put("Document", c);\r
+               } \r
+               if ("Title".equals(id) || id == null) {\r
+                       EvaluatorCustomizableContent e = new EvaluatorCustomizableContent("Document Title");\r
+                       EvaluatorNode lines = new Lines();\r
+                       Or nameOr = new Or();\r
+                       nameOr.createChild(Variable.class).setVariableRef("#HasLabel");\r
+                       nameOr.createChild(Variable.class).setVariableRef("#HasName");\r
+                       lines.createChild(TextSizeHint.class).setTextSize(TextSize.HUGE).createChild(AlignmentHint.class).setAlignment(Alignment.CENTER).addChild(nameOr.copy());\r
+                       lines.createChild(TextSizeHint.class).setTextSize(TextSize.HUGE).createChild(AlignmentHint.class).setAlignment(Alignment.CENTER).createChild(Variable.class).setVariableRef("DocumentName");\r
+                       lines.createChild(TextSizeHint.class).setTextSize(TextSize.LARGE).createChild(AlignmentHint.class).setAlignment(Alignment.CENTER).createChild(Date.class);\r
+                       e.setItem(lines);\r
+                       e.setSupportStyles(true);\r
+                       e.setSupportMultiline(true);\r
+                       content.put("Title", e);\r
+               }\r
+       }\r
+       \r
+       @Override\r
+       public Collection<String> getContentIds() {\r
+               return content.keySet();\r
+       }\r
+       \r
+       protected TextItem getDocumentItem(Resource document) throws Exception{\r
+               TextItem item;\r
+               if (graph.isInstanceOf(document, doc.UrlDocument)) {\r
+                       item = this.document.newItem(URLItem.class);\r
+                       ((URLItem)item).setURL(new URL((String)graph.getRelatedValue(document, doc.HasUrl)));\r
+               } else {\r
+                       item = this.document.newItem(TextItem.class);\r
+               }\r
+               item.setText(getContent("Document").getContent(graph, document,context));\r
+               return item;\r
+       }\r
+       \r
+       protected TextItem getNonExistingDocumentItem() throws Exception{\r
+               TextItem item = this.document.newItem(TextItem.class);\r
+               item.setText("[DOCUMENT DOES NOT EXIST]");\r
+               return item;\r
+       }\r
+\r
+\r
+}\r