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