]> WPIA git - gigi.git/blob - src/org/cacert/gigi/output/Menu.java
ADD: Dynamic menu
[gigi.git] / src / org / cacert / gigi / output / Menu.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.localisation.Language;
8
9 public class Menu implements IMenuItem {
10
11     public static final String USER_VALUE = "user";
12
13     private String menuName;
14
15     private String id;
16
17     private IMenuItem[] content;
18
19     private LinkedList<IMenuItem> prepare = new LinkedList<IMenuItem>();
20
21     public Menu(String menuName, String id) {
22         this.menuName = menuName;
23         this.id = id;
24     }
25
26     @Override
27     public void output(PrintWriter out, Language l, Map<String, Object> vars) {
28         out.println("<div>");
29         out.print("<h3>+ ");
30         out.print(l.getTranslation(menuName));
31         out.print("</h3>");
32         out.print("<ul class=\"menu\" id=\"");
33         out.print(id);
34         out.print("\">");
35         for (Outputable mi : content) {
36             mi.output(out, l, vars);
37         }
38         out.println("</ul></div>");
39     }
40
41     public void addItem(IMenuItem item) {
42         prepare.add(item);
43     }
44
45     public void prepare() {
46         content = new IMenuItem[prepare.size()];
47         content = prepare.toArray(content);
48         prepare = null;
49     }
50
51     @Override
52     public boolean equals(Object obj) {
53         if (obj instanceof Menu) {
54             return menuName.equals(((Menu) obj).getMenuName());
55         }
56         return super.equals(obj);
57     }
58
59     public String getMenuName() {
60         return menuName;
61     }
62 }