X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTRadioButton.java;h=e3d98a985329a52dfbd18769212045e8561b68d8;hb=0c28ec38449a59cf34cf5b3c13ea02add1ee57c5;hp=cdb56aa35860d3734235ce0ff35a3e942b81352b;hpb=d6ee0801333ff93dffd851f4c1a44519c96c371d;p=fanfix.git diff --git a/src/jexer/TRadioButton.java b/src/jexer/TRadioButton.java index cdb56aa..e3d98a9 100644 --- a/src/jexer/TRadioButton.java +++ b/src/jexer/TRadioButton.java @@ -3,7 +3,7 @@ * * The MIT License (MIT) * - * Copyright (C) 2017 Kevin Lamonte + * Copyright (C) 2019 Kevin Lamonte * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -30,14 +30,19 @@ package jexer; import jexer.bits.CellAttributes; import jexer.bits.GraphicsChars; +import jexer.bits.MnemonicString; import jexer.event.TKeypressEvent; import jexer.event.TMouseEvent; import static jexer.TKeypress.*; /** * TRadioButton implements a selectable radio button. + * + * If the user clicks or presses space on this button, it is selected. + * + * If the user presses escape on this button, it is unselected. */ -public final class TRadioButton extends TWidget { +public class TRadioButton extends TWidget { // ------------------------------------------------------------------------ // Variables -------------------------------------------------------------- @@ -49,9 +54,9 @@ public final class TRadioButton extends TWidget { private boolean selected = false; /** - * Label for this radio button. + * The shortcut and radio button label. */ - private String label; + private MnemonicString mnemonic; /** * ID for this radio button. Buttons start counting at 1 in the @@ -78,7 +83,7 @@ public final class TRadioButton extends TWidget { // Set parent and window super(parent, x, y, label.length() + 4, 1); - this.label = label; + mnemonic = new MnemonicString(label); this.id = id; setCursorVisible(true); @@ -114,10 +119,8 @@ public final class TRadioButton extends TWidget { public void onMouseDown(final TMouseEvent mouse) { if ((mouseOnRadioButton(mouse)) && (mouse.isMouse1())) { // Switch state - selected = !selected; - if (selected) { - ((TRadioGroup) getParent()).setSelected(this); - } + selected = true; + ((TRadioGroup) getParent()).setSelected(this); } } @@ -130,9 +133,16 @@ public final class TRadioButton extends TWidget { public void onKeypress(final TKeypressEvent keypress) { if (keypress.equals(kbSpace)) { - selected = !selected; - if (selected) { - ((TRadioGroup) getParent()).setSelected(this); + selected = true; + ((TRadioGroup) getParent()).setSelected(this); + return; + } + + if (keypress.equals(kbEsc)) { + TRadioGroup parent = (TRadioGroup) getParent(); + if (parent.requiresSelection == false) { + selected = false; + parent.setSelected(0); } return; } @@ -151,22 +161,28 @@ public final class TRadioButton extends TWidget { @Override public void draw() { CellAttributes radioButtonColor; + CellAttributes mnemonicColor; if (isAbsoluteActive()) { radioButtonColor = getTheme().getColor("tradiobutton.active"); + mnemonicColor = getTheme().getColor("tradiobutton.mnemonic.highlighted"); } else { radioButtonColor = getTheme().getColor("tradiobutton.inactive"); + mnemonicColor = getTheme().getColor("tradiobutton.mnemonic"); } - getScreen().putCharXY(0, 0, '(', radioButtonColor); + putCharXY(0, 0, '(', radioButtonColor); if (selected) { - getScreen().putCharXY(1, 0, GraphicsChars.CP437[0x07], - radioButtonColor); + putCharXY(1, 0, GraphicsChars.CP437[0x07], radioButtonColor); } else { - getScreen().putCharXY(1, 0, ' ', radioButtonColor); + putCharXY(1, 0, ' ', radioButtonColor); + } + putCharXY(2, 0, ')', radioButtonColor); + putStringXY(4, 0, mnemonic.getRawLabel(), radioButtonColor); + if (mnemonic.getShortcutIdx() >= 0) { + putCharXY(4 + mnemonic.getShortcutIdx(), 0, + mnemonic.getShortcut(), mnemonicColor); } - getScreen().putCharXY(2, 0, ')', radioButtonColor); - getScreen().putStringXY(4, 0, label, radioButtonColor); } // ------------------------------------------------------------------------ @@ -204,4 +220,13 @@ public final class TRadioButton extends TWidget { return id; } + /** + * Get the mnemonic string for this button. + * + * @return mnemonic string + */ + public MnemonicString getMnemonic() { + return mnemonic; + } + }