1 package org.simantics.document.linking.report.templates;
\r
3 import java.util.ArrayList;
\r
4 import java.util.List;
\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
13 public abstract class TableReportWriter<T> implements ReportWriter<T> {
\r
15 private List<RowContentProvider<T>> lineContentProviders = new ArrayList<RowContentProvider<T>>();
\r
16 private List<RowContentProvider<T>> cellContentProviders = new ArrayList<RowContentProvider<T>>();
\r
18 public void addLineProvider(RowContentProvider<T> provider) {
\r
19 lineContentProviders.add(provider);
\r
22 public void addCellProvider(RowContentProvider<T> provider) {
\r
23 cellContentProviders.add(provider);
\r
26 public void clearProviders() {
\r
27 lineContentProviders.clear();
\r
28 cellContentProviders.clear();
\r
31 TextItem line[] = new TextItem[1];
\r
32 public void write(T previous, T current, T next, Document writer) throws Exception {
\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
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
53 for (int i = 0; i < text.length; i++) {
\r
54 if (text[i] != null) {
\r
55 writer.getCurrentElement(Table.class).writeRowItem(text);
\r