]> WPIA git - gigi.git/blob - src/org/cacert/gigi/output/DataTable.java
Add: Abstracted table markup.
[gigi.git] / src / org / cacert / gigi / output / DataTable.java
1 package org.cacert.gigi.output;
2
3 import java.io.PrintWriter;
4 import java.util.LinkedList;
5 import java.util.Map;
6
7 import org.cacert.gigi.Language;
8
9 public abstract class DataTable implements Outputable {
10         protected abstract String[] getColumns();
11
12         protected abstract LinkedList<Cell> getTableContent();
13
14         @Override
15         public void output(PrintWriter out, Language l, Map<String, Object> vars) {
16                 out.println("<table align=\"center\" valign=\"middle\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"wrapper\">");
17                 out.println("<tr>");
18                 for (String column : getColumns()) {
19                         out.print("<td class=\"DataTD\">");
20                         out.print(l.getTranslation(column));
21                         out.println("</td>");
22                 }
23                 out.println("</tr>");
24                 LinkedList<Cell> tableContnet = getTableContent();
25                 for (int i = 0; i < tableContnet.size() / getColumns().length; i++) {
26                         out.println("<tr>");
27                         for (int j = 0; j < getColumns().length; j++) {
28                                 out.println("<td class=\"DataTD\">");
29                                 Cell current = tableContnet.get((i * getColumns().length) + j);
30                                 out.print(current.shouldTranslate() ? l.getTranslation(current
31                                                 .getText()) : current.getText());
32                                 out.print("</td>");
33                         }
34                         out.println("</tr>");
35                 }
36                 out.println("</table>");
37         }
38
39         public static class Cell {
40                 private String text;
41                 private boolean translate;
42
43                 public Cell(String text, boolean translate) {
44                         this.text = text;
45                         this.translate = translate;
46                 }
47
48                 public boolean shouldTranslate() {
49                         return translate;
50                 }
51
52                 public String getText() {
53                         return text;
54                 }
55
56         }
57
58         public static class EmptyCell extends Cell {
59
60                 public EmptyCell() {
61                         super("&nbsp;", false);
62                 }
63
64         }
65
66 }