package ilarkesto.core.menu; import ilarkesto.core.changeindicator.ChangeListener; public class StaticSubmenu extends StaticMenuItem implements Submenu<StaticMenuItem> { private StaticMenu submenu = new StaticMenu(); public StaticSubmenu(String label) { super(label); setOnSelect(new OnSelect()); setOnDeselect(new OnDeselect()); submenu.getChangeIndicator().addChangeListener(new SubmenuChangeListener()); } @Override public StaticMenu getMenu() { return submenu; } class OnSelect implements Runnable { @Override public void run() { if (submenu.getSelectedItem() == null) submenu.selectFirstItem(); } } class OnDeselect implements Runnable { @Override public void run() { submenu.deselectAll(); } } class SubmenuChangeListener implements ChangeListener { @Override public void onChange() { menu.getChangeIndicator().markChanged(); } } }