X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbe%2Fnikiroo%2Futils%2Fui%2FUIUtils.java;h=ce7bcc1e866ff1ca7ec31ae35a11a0be94924a37;hb=2e465ed3dc72efcdf96e419b39d6119c0cc41c6c;hp=e4eb000c6876f0a2b610da928fb16592cd1d3a4e;hpb=68232a49b2f63e195dfaf1d907bd20c48cf2b394;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/ui/UIUtils.java b/src/be/nikiroo/utils/ui/UIUtils.java index e4eb000..ce7bcc1 100644 --- a/src/be/nikiroo/utils/ui/UIUtils.java +++ b/src/be/nikiroo/utils/ui/UIUtils.java @@ -12,6 +12,7 @@ import java.awt.RenderingHints; import java.io.IOException; import java.net.URISyntaxException; +import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JEditorPane; import javax.swing.JLabel; @@ -31,6 +32,9 @@ import be.nikiroo.utils.VersionCheck; * @author niki */ public class UIUtils { + static private Color buttonNormal; + static private Color buttonPressed; + /** * Set a fake "native Look & Feel" for the application if possible * (check for the one currently in use, then try GTK). @@ -331,4 +335,37 @@ public class UIUtils { return JOptionPane.showConfirmDialog(parentComponent, updateMessage, title, JOptionPane.DEFAULT_OPTION) == JOptionPane.OK_OPTION; } + + /** + * Set the given {@link JButton} as "pressed" (selected, but with more UI + * visibility). + *
+ * The {@link JButton} will answer {@link JButton#isSelected()} if it is + * pressed. + * + * @param button + * the button to select/press + * @param pressed + * the new "pressed" state + */ + static public void setButtonPressed(JButton button, boolean pressed) { + if (buttonNormal == null) { + JButton defButton = new JButton(" "); + buttonNormal = defButton.getBackground(); + if (buttonNormal.getBlue() >= 128) { + buttonPressed = new Color( // + Math.max(buttonNormal.getRed() - 100, 0), // + Math.max(buttonNormal.getGreen() - 100, 0), // + Math.max(buttonNormal.getBlue() - 100, 0)); + } else { + buttonPressed = new Color( // + Math.min(buttonNormal.getRed() + 100, 255), // + Math.min(buttonNormal.getGreen() + 100, 255), // + Math.min(buttonNormal.getBlue() + 100, 255)); + } + } + + button.setSelected(pressed); + button.setBackground(pressed ? buttonPressed : buttonNormal); + } }