X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fmenu%2FTSubMenu.java;h=a109710b78174d7ce5b7cd87797bfd5b52ff4451;hb=91c9a8376f979d2b3df43f14519a30a183d332c5;hp=c37bf3a1fcca4975185d083740189ad2708b9d9d;hpb=8e688b9211599d240be67e5cf62dfe48520378f2;p=fanfix.git diff --git a/src/jexer/menu/TSubMenu.java b/src/jexer/menu/TSubMenu.java index c37bf3a..a109710 100644 --- a/src/jexer/menu/TSubMenu.java +++ b/src/jexer/menu/TSubMenu.java @@ -40,7 +40,7 @@ import static jexer.TKeypress.*; /** * TSubMenu is a special case menu item that wraps another TMenu. */ -public class TSubMenu extends TMenuItem { +public final class TSubMenu extends TMenuItem { /** * The menu window. Note package private access. @@ -76,19 +76,14 @@ public class TSubMenu extends TMenuItem { public void draw() { super.draw(); - CellAttributes background = getTheme().getColor("tmenu"); CellAttributes menuColor; - CellAttributes menuMnemonicColor; - if (getAbsoluteActive()) { + if (isAbsoluteActive()) { menuColor = getTheme().getColor("tmenu.highlighted"); - menuMnemonicColor = getTheme().getColor("tmenu.mnemonic.highlighted"); } else { - if (getEnabled()) { + if (isEnabled()) { menuColor = getTheme().getColor("tmenu"); - menuMnemonicColor = getTheme().getColor("tmenu.mnemonic"); } else { menuColor = getTheme().getColor("tmenu.disabled"); - menuMnemonicColor = getTheme().getColor("tmenu.disabled"); } } @@ -105,7 +100,19 @@ public class TSubMenu extends TMenuItem { @Override public void onKeypress(final TKeypressEvent keypress) { - if (menu.getActive()) { + // Open me if they hit my mnemonic. + if (!keypress.getKey().isFnKey() + && !keypress.getKey().isAlt() + && !keypress.getKey().isCtrl() + && (getMnemonic() != null) + && (Character.toLowerCase(getMnemonic().getShortcut()) + == Character.toLowerCase(keypress.getKey().getChar())) + ) { + dispatch(); + return; + } + + if (menu.isActive()) { menu.onKeypress(keypress); return; } @@ -151,9 +158,9 @@ public class TSubMenu extends TMenuItem { */ @Override public void dispatch() { - assert (getEnabled()); - if (getAbsoluteActive()) { - if (!menu.getActive()) { + assert (isEnabled()); + if (isAbsoluteActive()) { + if (!menu.isActive()) { getApplication().addSubMenu(menu); menu.setActive(true); } @@ -167,7 +174,7 @@ public class TSubMenu extends TMenuItem { */ @Override public TWidget getActiveChild() { - if (menu.getActive()) { + if (menu.isActive()) { return menu; } // Menu not active, return me @@ -182,7 +189,7 @@ public class TSubMenu extends TMenuItem { * @param key global keyboard accelerator * @return the new menu item */ - public final TMenuItem addItem(final int id, final String label, + public TMenuItem addItem(final int id, final String label, final TKeypress key) { return menu.addItem(id, label, key); @@ -195,7 +202,7 @@ public class TSubMenu extends TMenuItem { * @param label menu item label * @return the new menu item */ - public final TMenuItem addItem(final int id, final String label) { + public TMenuItem addItem(final int id, final String label) { return menu.addItem(id, label); } @@ -206,14 +213,14 @@ public class TSubMenu extends TMenuItem { * (inclusive). * @return the new menu item */ - public final TMenuItem addDefaultItem(final int id) { + public TMenuItem addDefaultItem(final int id) { return menu.addDefaultItem(id); } /** * Convenience function to add a menu separator. */ - public final void addSeparator() { + public void addSeparator() { menu.addSeparator(); } @@ -224,7 +231,7 @@ public class TSubMenu extends TMenuItem { * denoted by prefixing a letter with "&", e.g. "&File" * @return the new sub-menu */ - public final TSubMenu addSubMenu(final String title) { + public TSubMenu addSubMenu(final String title) { return menu.addSubMenu(title); }