package org.cacert.gigi.output; import java.io.PrintWriter; import java.util.LinkedList; import java.util.Map; 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 : getContent()) { if (mi.isPermitted(u)) { if ( !visible) { visible = true; out.print("
  • "); out.print(l.getTranslation(menuName)); 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; } public IMenuItem[] getContent() { return content; } }