X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTButton.java;h=964035fc5a0ee47241aed898cb59c63c5354746d;hb=3fbcb969ef4b02208194d1c02d738afed0a17792;hp=d4e7c8952a208682febdf59457476807cc8910d5;hpb=d6ee0801333ff93dffd851f4c1a44519c96c371d;p=fanfix.git diff --git a/src/jexer/TButton.java b/src/jexer/TButton.java index d4e7c89..964035f 100644 --- a/src/jexer/TButton.java +++ b/src/jexer/TButton.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"), @@ -42,7 +42,7 @@ import static jexer.TKeypress.*; * * @see TAction#DO() */ -public final class TButton extends TWidget { +public class TButton extends TWidget { // ------------------------------------------------------------------------ // Variables -------------------------------------------------------------- @@ -68,6 +68,11 @@ public final class TButton extends TWidget { */ private TAction action; + /** + * The background color used for the button "shadow", or NULL for "no shadow". + */ + private CellAttributes shadowColor; + // ------------------------------------------------------------------------ // Constructors ----------------------------------------------------------- // ------------------------------------------------------------------------ @@ -92,6 +97,11 @@ public final class TButton extends TWidget { setY(y); setHeight(2); setWidth(mnemonic.getRawLabel().length() + 3); + + shadowColor = new CellAttributes(); + shadowColor.setTo(getWindow().getBackground()); + shadowColor.setForeColor(Color.BLACK); + shadowColor.setBold(false); } /** @@ -209,10 +219,6 @@ public final class TButton extends TWidget { public void draw() { CellAttributes buttonColor; CellAttributes menuMnemonicColor; - CellAttributes shadowColor = new CellAttributes(); - shadowColor.setTo(getWindow().getBackground()); - shadowColor.setForeColor(Color.BLACK); - shadowColor.setBold(false); if (!isEnabled()) { buttonColor = getTheme().getColor("tbutton.disabled"); @@ -226,28 +232,29 @@ public final class TButton extends TWidget { } if (inButtonPress) { - getScreen().putCharXY(1, 0, ' ', buttonColor); - getScreen().putStringXY(2, 0, mnemonic.getRawLabel(), buttonColor); - getScreen().putCharXY(getWidth() - 1, 0, ' ', buttonColor); + putCharXY(1, 0, ' ', buttonColor); + putStringXY(2, 0, mnemonic.getRawLabel(), buttonColor); + putCharXY(getWidth() - 1, 0, ' ', buttonColor); } else { - getScreen().putCharXY(0, 0, ' ', buttonColor); - getScreen().putStringXY(1, 0, mnemonic.getRawLabel(), buttonColor); - getScreen().putCharXY(getWidth() - 2, 0, ' ', buttonColor); - - getScreen().putCharXY(getWidth() - 1, 0, - GraphicsChars.CP437[0xDC], shadowColor); - getScreen().hLineXY(1, 1, getWidth() - 1, - GraphicsChars.CP437[0xDF], shadowColor); + putCharXY(0, 0, ' ', buttonColor); + putStringXY(1, 0, mnemonic.getRawLabel(), buttonColor); + putCharXY(getWidth() - 2, 0, ' ', buttonColor); + + if (shadowColor != null) { + putCharXY(getWidth() - 1, 0, + GraphicsChars.CP437[0xDC], shadowColor); + hLineXY(1, 1, getWidth() - 1, + GraphicsChars.CP437[0xDF], shadowColor); + } } if (mnemonic.getShortcutIdx() >= 0) { if (inButtonPress) { - getScreen().putCharXY(2 + mnemonic.getShortcutIdx(), 0, + putCharXY(2 + mnemonic.getShortcutIdx(), 0, mnemonic.getShortcut(), menuMnemonicColor); } else { - getScreen().putCharXY(1 + mnemonic.getShortcutIdx(), 0, + putCharXY(1 + mnemonic.getShortcutIdx(), 0, mnemonic.getShortcut(), menuMnemonicColor); } - } } @@ -275,4 +282,22 @@ public final class TButton extends TWidget { } } + /** + * Set the background color used for the button "shadow". + *

+ * Can be NULL for "no shadow". + * + * @param color the new background color, or NULL if none + */ + public void setShadowColor(final CellAttributes color) { + if (color != null) { + shadowColor = new CellAttributes(); + shadowColor.setTo(color); + shadowColor.setForeColor(Color.BLACK); + shadowColor.setBold(false); + } else { + shadowColor = null; + } + } + }