package uk.org.smithfamily.utils.normaliser.menu; import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; public class MenuTracker { private TreeMap<String,List<MenuItem>> items = new TreeMap<String,List<MenuItem>>(); public void addItem(String dialog, MenuItem x) { // Already have a menu for that dialog name, will add it to the list if (items.containsKey(dialog)) { items.get(dialog).add(x); } // No menu for that dialog yet, creating a new list with the menu definition else { List<MenuItem> m = new ArrayList<MenuItem>(); m.add(x); items.put(dialog, m); } } /** * Get the last menu of the specific dialog * We cannot just take the last item because it might be a MenuPreProcessor * * @param dialog * @return */ public MenuItem getLast(String dialog) { int index = items.get(dialog).size() - 1; MenuItem menuItem = null; do { menuItem = items.get(dialog).get(index); } while (index-- > 0 && !(menuItem instanceof MenuDefinition)); return menuItem; } public Set<Entry<String, List<MenuItem>>> getItems() { return items.entrySet(); } @Override public String toString() { return "MenuTracker [items=" + items + "]"; } }