X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTButton.java;h=fc93c782b5fda5c66ff01a9297fc23ee53588837;hb=a325f111c91ec64c0bb0319dedd18d36f4b720c9;hp=064e927566effd281321502a7ad02031012fff84;hpb=329fd62e4acdaa8e9f4cccd518d47c0b07e79f51;p=fanfix.git diff --git a/src/jexer/TButton.java b/src/jexer/TButton.java index 064e927..fc93c78 100644 --- a/src/jexer/TButton.java +++ b/src/jexer/TButton.java @@ -1,29 +1,27 @@ /* * Jexer - Java Text User Interface * - * License: LGPLv3 or later + * The MIT License (MIT) * - * 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. + * Copyright (C) 2017 Kevin Lamonte * - * Copyright (C) 2015 Kevin Lamonte + * 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 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. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * 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. - * - * 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 @@ -75,13 +73,27 @@ public final class TButton extends TWidget { */ private TAction action; + /** + * The time at which dispatch() was called. + */ + private long dispatchTime; + + /** + * How long to animate dispatch of the event in millis. + */ + private static final long DISPATCH_TIME = 75; + /** * Act as though the button was pressed. This is useful for other UI * elements to get the same action as if the user clicked the button. */ public void dispatch() { if (action != null) { - action.DO(); + long now = System.currentTimeMillis(); + if (now - dispatchTime > DISPATCH_TIME) { + action.DO(); + dispatchTime = now; + } } } @@ -155,6 +167,12 @@ public final class TButton extends TWidget { shadowColor.setForeColor(Color.BLACK); shadowColor.setBold(false); + long now = System.currentTimeMillis(); + boolean inDispatch = false; + if (now - dispatchTime < DISPATCH_TIME) { + inDispatch = true; + } + if (!isEnabled()) { buttonColor = getTheme().getColor("tbutton.disabled"); menuMnemonicColor = getTheme().getColor("tbutton.disabled"); @@ -166,7 +184,7 @@ public final class TButton extends TWidget { menuMnemonicColor = getTheme().getColor("tbutton.mnemonic"); } - if (inButtonPress) { + if (inButtonPress || inDispatch) { getScreen().putCharXY(1, 0, ' ', buttonColor); getScreen().putStringXY(2, 0, mnemonic.getRawLabel(), buttonColor); getScreen().putCharXY(getWidth() - 1, 0, ' ', buttonColor); @@ -181,7 +199,7 @@ public final class TButton extends TWidget { GraphicsChars.CP437[0xDF], shadowColor); } if (mnemonic.getShortcutIdx() >= 0) { - if (inButtonPress) { + if (inButtonPress || inDispatch) { getScreen().putCharXY(2 + mnemonic.getShortcutIdx(), 0, mnemonic.getShortcut(), menuMnemonicColor); } else { @@ -219,9 +237,7 @@ public final class TButton extends TWidget { if (inButtonPress && mouse.isMouse1()) { inButtonPress = false; // Dispatch the event - if (action != null) { - action.DO(); - } + dispatch(); } } @@ -251,9 +267,7 @@ public final class TButton extends TWidget { || keypress.equals(kbSpace) ) { // Dispatch - if (action != null) { - action.DO(); - } + dispatch(); return; }