X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTCheckBox.java;h=1f9a351c0c0c636c538272d372c5a3b4ef43f583;hb=HEAD;hp=84c2e41adf7a13d086e704b6490a13a0eccd5359;hpb=a69ed767c9c07cf35cf1c5f7821fc009cfe79cd2;p=fanfix.git diff --git a/src/jexer/TCheckBox.java b/src/jexer/TCheckBox.java index 84c2e41..1f9a351 100644 --- a/src/jexer/TCheckBox.java +++ b/src/jexer/TCheckBox.java @@ -28,9 +28,13 @@ */ package jexer; +import static jexer.TKeypress.kbEnter; +import static jexer.TKeypress.kbEsc; import static jexer.TKeypress.kbSpace; import jexer.bits.CellAttributes; import jexer.bits.GraphicsChars; +import jexer.bits.MnemonicString; +import jexer.bits.StringUtils; import jexer.event.TKeypressEvent; import jexer.event.TMouseEvent; @@ -49,9 +53,9 @@ public class TCheckBox extends TWidget { private boolean checked = false; /** - * Label for this checkbox. + * The shortcut and checkbox label. */ - private String label; + private MnemonicString mnemonic; /** * If true, use the window's background color. @@ -75,9 +79,9 @@ public class TCheckBox extends TWidget { final String label, final boolean checked) { // Set parent and window - super(parent, x, y, label.length() + 4, 1); + super(parent, x, y, StringUtils.width(label) + 4, 1); - this.label = label; + mnemonic = new MnemonicString(label); this.checked = checked; setCursorVisible(true); @@ -124,11 +128,18 @@ public class TCheckBox extends TWidget { */ @Override public void onKeypress(final TKeypressEvent keypress) { - if (keypress.equals(kbSpace)) { + if (keypress.equals(kbSpace) + || keypress.equals(kbEnter) + ) { checked = !checked; return; } + if (keypress.equals(kbEsc)) { + checked = false; + return; + } + // Pass to parent for the things we don't care about. super.onKeypress(keypress); } @@ -143,11 +154,14 @@ public class TCheckBox extends TWidget { @Override public void draw() { CellAttributes checkboxColor; + CellAttributes mnemonicColor; if (isAbsoluteActive()) { checkboxColor = getTheme().getColor("tcheckbox.active"); + mnemonicColor = getTheme().getColor("tcheckbox.mnemonic.highlighted"); } else { checkboxColor = getTheme().getColor("tcheckbox.inactive"); + mnemonicColor = getTheme().getColor("tcheckbox.mnemonic"); } if (useWindowBackground) { CellAttributes background = getWindow().getBackground(); @@ -161,7 +175,11 @@ public class TCheckBox extends TWidget { putCharXY(1, 0, ' ', checkboxColor); } putCharXY(2, 0, ']', checkboxColor); - putStringXY(4, 0, label, checkboxColor); + putStringXY(4, 0, mnemonic.getRawLabel(), checkboxColor); + if (mnemonic.getScreenShortcutIdx() >= 0) { + putCharXY(4 + mnemonic.getScreenShortcutIdx(), 0, + mnemonic.getShortcut(), mnemonicColor); + } } // ------------------------------------------------------------------------ @@ -186,4 +204,13 @@ public class TCheckBox extends TWidget { this.checked = checked; } + /** + * Get the mnemonic string for this checkbox. + * + * @return mnemonic string + */ + public MnemonicString getMnemonic() { + return mnemonic; + } + }