import java.io.IOException;
import java.net.URISyntaxException;
+import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
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;
* @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).
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();
}
}
});
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).
+ * <p>
+ * 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);
+ }
}