--- /dev/null
+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