X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fmenu%2FTMenuItem.java;h=089887006d1f15bc8400c4b0b73319ecd75f5123;hb=329fd62e4acdaa8e9f4cccd518d47c0b07e79f51;hp=d7e56e28c9e65abc20b99f9f1f0e6ec48cc66e5b;hpb=928811d8e292801029b7b6605453524f65e9ebd9;p=fanfix.git diff --git a/src/jexer/menu/TMenuItem.java b/src/jexer/menu/TMenuItem.java index d7e56e2..0898870 100644 --- a/src/jexer/menu/TMenuItem.java +++ b/src/jexer/menu/TMenuItem.java @@ -1,4 +1,4 @@ -/** +/* * Jexer - Java Text User Interface * * License: LGPLv3 or later @@ -56,11 +56,29 @@ public class TMenuItem extends TWidget { */ private int id = TMenu.MID_UNUSED; + /** + * Get the menu item ID. + * + * @return the id + */ + public final int getId() { + return id; + } + /** * When true, this item can be checked or unchecked. */ private boolean checkable = false; + /** + * Set checkable flag. + * + * @param checkable if true, this menu item can be checked/unchecked + */ + public final void setCheckable(final boolean checkable) { + this.checkable = checkable; + } + /** * When true, this item is checked. */ @@ -71,11 +89,6 @@ public class TMenuItem extends TWidget { */ private TKeypress key; - /** - * When true, a global accelerator can be used to select this item. - */ - private boolean hasKey = false; - /** * The title string. Use '&' to specify a mnemonic, i.e. "&File" will * highlight the 'F' and allow 'f' or 'F' to select it. @@ -91,18 +104,29 @@ public class TMenuItem extends TWidget { return mnemonic; } + /** + * Get a global accelerator key for this menu item. + * + * @return global keyboard accelerator, or null if no key is associated + * with this item + */ + public final TKeypress getKey() { + return key; + } + /** * Set a global accelerator key for this menu item. * * @param key global keyboard accelerator */ public final void setKey(final TKeypress key) { - hasKey = true; this.key = key; - int newWidth = (label.length() + 4 + key.toString().length() + 2); - if (newWidth > getWidth()) { - setWidth(newWidth); + if (key != null) { + int newWidth = (label.length() + 4 + key.toString().length() + 2); + if (newWidth > getWidth()) { + setWidth(newWidth); + } } } @@ -172,6 +196,7 @@ public class TMenuItem extends TWidget { * Returns true if the mouse is currently on the menu item. * * @param mouse mouse event + * @return if true then the mouse is currently on this item */ private boolean mouseOnMenuItem(final TMouseEvent mouse) { if ((mouse.getY() == 0) @@ -191,11 +216,11 @@ public class TMenuItem extends TWidget { 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 { @@ -209,10 +234,10 @@ public class TMenuItem extends TWidget { getScreen().vLineXY(getWidth() - 1, 0, 1, cVSide, background); getScreen().hLineXY(1, 0, getWidth() - 2, ' ', menuColor); - getScreen().putStrXY(2, 0, mnemonic.getRawLabel(), menuColor); - if (hasKey) { + getScreen().putStringXY(2, 0, mnemonic.getRawLabel(), menuColor); + if (key != null) { String keyLabel = key.toString(); - getScreen().putStrXY((getWidth() - keyLabel.length() - 2), 0, + getScreen().putStringXY((getWidth() - keyLabel.length() - 2), 0, keyLabel, menuColor); } if (mnemonic.getShortcutIdx() >= 0) { @@ -230,7 +255,7 @@ public class TMenuItem extends TWidget { * Dispatch event(s) due to selection or click. */ public void dispatch() { - assert (getEnabled()); + assert (isEnabled()); getApplication().addMenuEvent(new TMenuEvent(id)); if (checkable) { @@ -238,21 +263,6 @@ public class TMenuItem extends TWidget { } } - /** - * Handle mouse button presses. - * - * @param event mouse button press event - */ - /* TODO: this was commented out in d-tui, why? - @Override - public void onMouseDown(final TMouseEvent event) { - if ((mouseOnMenuItem(event)) && (event.mouse1)) { - dispatch(); - return; - } - } - */ - /** * Handle mouse button releases. * @@ -260,7 +270,7 @@ public class TMenuItem extends TWidget { */ @Override public void onMouseUp(final TMouseEvent mouse) { - if ((mouseOnMenuItem(mouse)) && (mouse.getMouse1())) { + if ((mouseOnMenuItem(mouse)) && (mouse.isMouse1())) { dispatch(); return; }