X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Foutput%2FMenu.java;h=6c37617584a3f5012d413fdef2511a71c7354772;hb=4d9b0e8bdf122324cec9f3dd387c02d14c30877e;hp=09f4a21cfca394d64c0c36728c4e568acd1b2e9a;hpb=42495354baad719d52d1e126f7e3d778e42a3e51;p=gigi.git diff --git a/src/org/cacert/gigi/output/Menu.java b/src/org/cacert/gigi/output/Menu.java index 09f4a21c..6c376175 100644 --- a/src/org/cacert/gigi/output/Menu.java +++ b/src/org/cacert/gigi/output/Menu.java @@ -1,34 +1,77 @@ package org.cacert.gigi.output; import java.io.PrintWriter; +import java.util.LinkedList; import java.util.Map; -import org.cacert.gigi.Language; - -public class Menu implements Outputable { - String menuName; - String id; - private MenuItem[] content; - - public Menu(String menuName, String id, MenuItem... content) { - this.menuName = menuName; - this.id = id; - this.content = content; - } - - @Override - public void output(PrintWriter out, Language l, Map vars) { - out.println("
"); - out.print("

+ "); - out.print(l.getTranslation(menuName)); - out.print("

"); - out.print("
"); - } +import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.util.AuthorizationContext; + +public class Menu implements IMenuItem { + + public static final String AUTH_VALUE = "ac"; + + private String menuName; + + private IMenuItem[] content; + + private LinkedList prepare = new LinkedList(); + + public Menu(String menuName) { + this.menuName = menuName; + } + + @Override + public void output(PrintWriter out, Language l, Map vars) { + boolean visible = false; + AuthorizationContext u = (AuthorizationContext) vars.get(AUTH_VALUE); + for (IMenuItem mi : content) { + if (mi.isPermitted(u)) { + if ( !visible) { + visible = true; + out.println("
"); + out.print("

+ "); + out.print(l.getTranslation(menuName)); + out.println("

"); + out.print("
    "); + } + mi.output(out, l, vars); + } + } + if (visible) { + out.println("
"); + } + } + + public void addItem(IMenuItem item) { + prepare.add(item); + } + + public void prepare() { + content = new IMenuItem[prepare.size()]; + content = prepare.toArray(content); + prepare = null; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof Menu) { + return menuName.equals(((Menu) obj).getMenuName()); + } + return false; + } + + @Override + public int hashCode() { + return menuName.hashCode(); + } + + public String getMenuName() { + return menuName; + } + + @Override + public boolean isPermitted(AuthorizationContext ac) { + return true; + } }