reformat
[nikiroo-utils.git] / src / be / nikiroo / fanfix_swing / gui / utils / UiHelper.java
1 package be.nikiroo.fanfix_swing.gui.utils;
2
3 import java.awt.Color;
4 import java.awt.Component;
5
6 import javax.swing.JButton;
7 import javax.swing.JComponent;
8 import javax.swing.JOptionPane;
9 import javax.swing.JScrollPane;
10 import javax.swing.JTree;
11 import javax.swing.SwingUtilities;
12
13 import be.nikiroo.fanfix.Instance;
14
15 public class UiHelper {
16 static private Color buttonNormal;
17 static private Color buttonPressed;
18
19 static public void setButtonPressed(JButton button, boolean pressed) {
20 if (buttonNormal == null) {
21 JButton defButton = new JButton(" ");
22 buttonNormal = defButton.getBackground();
23 if (buttonNormal.getBlue() >= 128) {
24 buttonPressed = new Color( //
25 Math.max(buttonNormal.getRed() - 100, 0), //
26 Math.max(buttonNormal.getGreen() - 100, 0), //
27 Math.max(buttonNormal.getBlue() - 100, 0));
28 } else {
29 buttonPressed = new Color( //
30 Math.min(buttonNormal.getRed() + 100, 255), //
31 Math.min(buttonNormal.getGreen() + 100, 255), //
32 Math.min(buttonNormal.getBlue() + 100, 255));
33 }
34 }
35
36 button.setSelected(pressed);
37 button.setBackground(pressed ? buttonPressed : buttonNormal);
38 }
39
40 static public JComponent scroll(JComponent pane) {
41 JScrollPane scroll = new JScrollPane(pane);
42 scroll.getVerticalScrollBar().setUnitIncrement(16);
43 scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
44 return scroll;
45 }
46
47 /**
48 * Display an error message and log the linked {@link Exception}.
49 *
50 * @param owner the owner of the error (to link the messagebox to it)
51 * @param message the message
52 * @param title the title of the error message
53 * @param e the exception to log if any
54 */
55 static public void error(final Component owner, final String message, final String title, Exception e) {
56 Instance.getInstance().getTraceHandler().error(title + ": " + message);
57 if (e != null) {
58 Instance.getInstance().getTraceHandler().error(e);
59 }
60
61 SwingUtilities.invokeLater(new Runnable() {
62 @Override
63 public void run() {
64 JOptionPane.showMessageDialog(owner, message, title, JOptionPane.ERROR_MESSAGE);
65 }
66 });
67 }
68 }