]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.document.linking.report.templates;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.List;\r
5 \r
6 import org.simantics.document.linking.report.Document;\r
7 import org.simantics.document.linking.report.Document.TextSize;\r
8 import org.simantics.document.linking.report.RowContentProvider;\r
9 import org.simantics.document.linking.report.Table;\r
10 import org.simantics.document.linking.report.TextItem;\r
11 \r
12 \r
13 public abstract class TableReportWriter<T> implements ReportWriter<T> {\r
14 \r
15         private List<RowContentProvider<T>> lineContentProviders = new ArrayList<RowContentProvider<T>>(); \r
16         private List<RowContentProvider<T>> cellContentProviders = new ArrayList<RowContentProvider<T>>(); \r
17 \r
18         public void addLineProvider(RowContentProvider<T> provider) {\r
19                 lineContentProviders.add(provider);\r
20         }\r
21 \r
22         public void addCellProvider(RowContentProvider<T> provider) {\r
23                 cellContentProviders.add(provider);\r
24         }\r
25         \r
26         public void clearProviders() {\r
27                 lineContentProviders.clear();\r
28                 cellContentProviders.clear();\r
29         }\r
30         \r
31         TextItem line[] = new TextItem[1];\r
32         public void write(T previous, T current, T next, Document writer) throws Exception {\r
33                 \r
34                 \r
35                 for (RowContentProvider<T> cp : lineContentProviders) {\r
36                         line[0] = writer.newItem(TextItem.class);\r
37                         cp.setText(writer, previous, current, next,line);\r
38                         if (line[0].getText() != null && line[0].getText().length() > 0) {\r
39                                 Table table = writer.getCurrentElement(Table.class);\r
40                                 TextSize size = table.getTextSize();\r
41                                 table.setTextSize(TextSize.MEDIUM);\r
42                                 table.writeRowItem(line[0]);\r
43                                 table.setTextSize(size);\r
44                         }\r
45                 }\r
46                 \r
47                 \r
48                 TextItem text[] = new TextItem[writer.getCurrentElement(Table.class).getColumns().size()];\r
49                 for (RowContentProvider<T> cp : cellContentProviders) {\r
50                         cp.setText(writer, previous, current, next,text);\r
51                 }\r
52                 \r
53                 for (int i = 0; i < text.length; i++) {\r
54                         if (text[i] != null) {\r
55                                 writer.getCurrentElement(Table.class).writeRowItem(text);\r
56                                 break;\r
57                         }\r
58                 }\r
59                 \r
60         };\r
61         \r
62         \r
63         \r
64         \r
65         \r
66 }\r