X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fui%2FUIUtils.java;h=ce7bcc1e866ff1ca7ec31ae35a11a0be94924a37;hb=2e465ed3dc72efcdf96e419b39d6119c0cc41c6c;hp=6c4038977d9ed001934944128c8632dbb6dfe301;hpb=d00a4a038876ff303af993d5c1c059938d6feac1;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/ui/UIUtils.java b/src/be/nikiroo/utils/ui/UIUtils.java index 6c40389..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; @@ -22,7 +23,6 @@ import javax.swing.UnsupportedLookAndFeelException; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; -import be.nikiroo.fanfix.Instance; import be.nikiroo.utils.Version; import be.nikiroo.utils.VersionCheck; @@ -32,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). @@ -306,9 +309,9 @@ public class UIUtils { try { Desktop.getDesktop().browse(e.getURL().toURI()); } catch (IOException ee) { - Instance.getInstance().getTraceHandler().error(ee); + ee.printStackTrace(); } catch (URISyntaxException ee) { - Instance.getInstance().getTraceHandler().error(ee); + ee.printStackTrace(); } } }); @@ -332,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); + } }