]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/output/Menu.java
ADD: Dynamic menu
[gigi.git] / src / org / cacert / gigi / output / Menu.java
index 6e75eb900e97661d4901bd36498f5e57237805aa..9ad9ba9919e2edd133f77e894c25b3d99cdff735 100644 (file)
@@ -1,22 +1,26 @@
 package org.cacert.gigi.output;
 
 import java.io.PrintWriter;
+import java.util.LinkedList;
 import java.util.Map;
 
-import org.cacert.gigi.Language;
+import org.cacert.gigi.localisation.Language;
 
-public class Menu implements Outputable {
+public class Menu implements IMenuItem {
 
-    String menuName;
+    public static final String USER_VALUE = "user";
 
-    String id;
+    private String menuName;
 
-    private MenuItem[] content;
+    private String id;
 
-    public Menu(String menuName, String id, MenuItem... content) {
+    private IMenuItem[] content;
+
+    private LinkedList<IMenuItem> prepare = new LinkedList<IMenuItem>();
+
+    public Menu(String menuName, String id) {
         this.menuName = menuName;
         this.id = id;
-        this.content = content;
     }
 
     @Override
@@ -28,10 +32,31 @@ public class Menu implements Outputable {
         out.print("<ul class=\"menu\" id=\"");
         out.print(id);
         out.print("\">");
-        for (MenuItem mi : content) {
+        for (Outputable mi : content) {
             mi.output(out, l, vars);
         }
-
         out.println("</ul></div>");
     }
+
+    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 super.equals(obj);
+    }
+
+    public String getMenuName() {
+        return menuName;
+    }
 }