X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fmenu%2FTMenuItem.java;h=ec2afb232718ca8d4c565e114a20b37a3d4d95c3;hb=e16dda65585466c8987bd1efd718431450a96605;hp=607341b2734eaa4e35d5e941d3d34c3c94917802;hpb=8e688b9211599d240be67e5cf62dfe48520378f2;p=nikiroo-utils.git diff --git a/src/jexer/menu/TMenuItem.java b/src/jexer/menu/TMenuItem.java index 607341b..ec2afb2 100644 --- a/src/jexer/menu/TMenuItem.java +++ b/src/jexer/menu/TMenuItem.java @@ -1,29 +1,27 @@ -/** +/* * Jexer - Java Text User Interface * - * License: LGPLv3 or later - * - * This module is licensed under the GNU Lesser General Public License - * Version 3. Please see the file "COPYING" in this directory for more - * information about the GNU Lesser General Public License Version 3. + * The MIT License (MIT) * - * Copyright (C) 2015 Kevin Lamonte + * Copyright (C) 2016 Kevin Lamonte * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 3 of - * the License, or (at your option) any later version. + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, see - * http://www.gnu.org/licenses/, or write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. * * @author Kevin Lamonte [kevin.lamonte@gmail.com] * @version 1 @@ -56,6 +54,15 @@ 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. */ @@ -69,7 +76,7 @@ public class TMenuItem extends TWidget { public final void setCheckable(final boolean checkable) { this.checkable = checkable; } - + /** * When true, this item is checked. */ @@ -80,11 +87,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. @@ -100,18 +102,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); + } } } @@ -181,6 +194,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) @@ -200,11 +214,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 { @@ -218,10 +232,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) { @@ -239,7 +253,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) { @@ -247,21 +261,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. * @@ -269,7 +268,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; }