1 package org.simantics.document.linking.report.templates;
3 import java.util.ArrayList;
6 import org.simantics.document.linking.report.Document;
7 import org.simantics.document.linking.report.Document.TextSize;
8 import org.simantics.document.linking.report.RowContentProvider;
9 import org.simantics.document.linking.report.Table;
10 import org.simantics.document.linking.report.TextItem;
13 public abstract class TableReportWriter<T> implements ReportWriter<T> {
15 private List<RowContentProvider<T>> lineContentProviders = new ArrayList<RowContentProvider<T>>();
16 private List<RowContentProvider<T>> cellContentProviders = new ArrayList<RowContentProvider<T>>();
18 public void addLineProvider(RowContentProvider<T> provider) {
19 lineContentProviders.add(provider);
22 public void addCellProvider(RowContentProvider<T> provider) {
23 cellContentProviders.add(provider);
26 public void clearProviders() {
27 lineContentProviders.clear();
28 cellContentProviders.clear();
31 TextItem line[] = new TextItem[1];
32 public void write(T previous, T current, T next, Document writer) throws Exception {
35 for (RowContentProvider<T> cp : lineContentProviders) {
36 line[0] = writer.newItem(TextItem.class);
37 cp.setText(writer, previous, current, next,line);
38 if (line[0].getText() != null && line[0].getText().length() > 0) {
39 Table table = writer.getCurrentElement(Table.class);
40 TextSize size = table.getTextSize();
41 table.setTextSize(TextSize.MEDIUM);
42 table.writeRowItem(line[0]);
43 table.setTextSize(size);
48 TextItem text[] = new TextItem[writer.getCurrentElement(Table.class).getColumns().size()];
49 for (RowContentProvider<T> cp : cellContentProviders) {
50 cp.setText(writer, previous, current, next,text);
53 for (int i = 0; i < text.length; i++) {
54 if (text[i] != null) {
55 writer.getCurrentElement(Table.class).writeRowItem(text);