]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/TableReportWriter.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.document.linking.ui / src / org / simantics / document / linking / report / templates / TableReportWriter.java
diff --git a/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/TableReportWriter.java b/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/TableReportWriter.java
new file mode 100644 (file)
index 0000000..ff9c108
--- /dev/null
@@ -0,0 +1,66 @@
+package org.simantics.document.linking.report.templates;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.simantics.document.linking.report.Document;\r
+import org.simantics.document.linking.report.Document.TextSize;\r
+import org.simantics.document.linking.report.RowContentProvider;\r
+import org.simantics.document.linking.report.Table;\r
+import org.simantics.document.linking.report.TextItem;\r
+\r
+\r
+public abstract class TableReportWriter<T> implements ReportWriter<T> {\r
+\r
+       private List<RowContentProvider<T>> lineContentProviders = new ArrayList<RowContentProvider<T>>(); \r
+       private List<RowContentProvider<T>> cellContentProviders = new ArrayList<RowContentProvider<T>>(); \r
+\r
+       public void addLineProvider(RowContentProvider<T> provider) {\r
+               lineContentProviders.add(provider);\r
+       }\r
+\r
+       public void addCellProvider(RowContentProvider<T> provider) {\r
+               cellContentProviders.add(provider);\r
+       }\r
+       \r
+       public void clearProviders() {\r
+               lineContentProviders.clear();\r
+               cellContentProviders.clear();\r
+       }\r
+       \r
+       TextItem line[] = new TextItem[1];\r
+       public void write(T previous, T current, T next, Document writer) throws Exception {\r
+               \r
+               \r
+               for (RowContentProvider<T> cp : lineContentProviders) {\r
+                       line[0] = writer.newItem(TextItem.class);\r
+                       cp.setText(writer, previous, current, next,line);\r
+                       if (line[0].getText() != null && line[0].getText().length() > 0) {\r
+                               Table table = writer.getCurrentElement(Table.class);\r
+                               TextSize size = table.getTextSize();\r
+                               table.setTextSize(TextSize.MEDIUM);\r
+                               table.writeRowItem(line[0]);\r
+                               table.setTextSize(size);\r
+                       }\r
+               }\r
+               \r
+               \r
+               TextItem text[] = new TextItem[writer.getCurrentElement(Table.class).getColumns().size()];\r
+               for (RowContentProvider<T> cp : cellContentProviders) {\r
+                       cp.setText(writer, previous, current, next,text);\r
+               }\r
+               \r
+               for (int i = 0; i < text.length; i++) {\r
+                       if (text[i] != null) {\r
+                               writer.getCurrentElement(Table.class).writeRowItem(text);\r
+                               break;\r
+                       }\r
+               }\r
+               \r
+       };\r
+       \r
+       \r
+       \r
+       \r
+       \r
+}\r