package ilarkesto.core.menu; import ilarkesto.core.changeindicator.ChangeIndicator; import ilarkesto.core.changeindicator.HasChangeIndicator; import java.util.ArrayList; import java.util.List; public class StaticMenu implements Menu<StaticMenuItem>, HasChangeIndicator { List<StaticMenuItem> items = new ArrayList<StaticMenuItem>(); ChangeIndicator changeIndicator = new ChangeIndicator(); @Override public List<StaticMenuItem> getItems() { return items; } @Override public StaticMenuItem getSelectedItem() { for (StaticMenuItem item : items) { if (item.isSelected()) return item; } return null; } public StaticMenuItem getItemByPayload(Object payload) { for (StaticMenuItem item : items) { if (item.isPayload(payload)) return item; if (item instanceof StaticSubmenu) { StaticSubmenu subMenu = (StaticSubmenu) item; StaticMenuItem foundItem = subMenu.getMenu().getItemByPayload(payload); if (foundItem != null) return foundItem; } } return null; } public <I extends StaticMenuItem> I addItem(I item) { item.setMenu(this); items.add(item); changeIndicator.markChanged(); return item; } public void deselectAll() { for (StaticMenuItem item : items) item.deselect(); } public void selectFirstItem() { if (items.isEmpty()) return; items.get(0).select(); } @Override public ChangeIndicator getChangeIndicator() { return changeIndicator; } }