1 package org.cacert.gigi.output;
3 import java.io.PrintWriter;
4 import java.util.LinkedList;
7 import org.cacert.gigi.localisation.Language;
8 import org.cacert.gigi.util.AuthorizationContext;
10 public class Menu implements IMenuItem {
12 public static final String AUTH_VALUE = "ac";
14 private String menuName;
16 private IMenuItem[] content;
18 private LinkedList<IMenuItem> prepare = new LinkedList<IMenuItem>();
20 public Menu(String menuName) {
21 this.menuName = menuName;
25 public void output(PrintWriter out, Language l, Map<String, Object> vars) {
26 boolean visible = false;
27 AuthorizationContext u = (AuthorizationContext) vars.get(AUTH_VALUE);
28 for (IMenuItem mi : getContent()) {
29 if (mi.isPermitted(u)) {
32 out.print("<li class=\"dropdown\"><a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\">");
33 out.print(l.getTranslation(menuName));
34 out.print("<span class=\"caret\"></span></a><ul class=\"dropdown-menu\">");
36 mi.output(out, l, vars);
40 out.println("</ul></li>");
44 public void addItem(IMenuItem item) {
48 public void prepare() {
49 content = new IMenuItem[prepare.size()];
50 content = prepare.toArray(content);
55 public boolean equals(Object obj) {
56 if (obj instanceof Menu) {
57 return menuName.equals(((Menu) obj).getMenuName());
63 public int hashCode() {
64 return menuName.hashCode();
67 public String getMenuName() {
72 public boolean isPermitted(AuthorizationContext ac) {
76 public IMenuItem[] getContent() {