1 package org.apache.log4j.chainsaw;
2
3 import java.awt.Insets;
4 import java.awt.event.MouseEvent;
5 import java.awt.event.MouseListener;
6
7 import javax.swing.Action;
8 import javax.swing.JButton;
9 import javax.swing.border.BevelBorder;
10 import javax.swing.border.Border;
11 import javax.swing.border.EmptyBorder;
12 import javax.swing.border.SoftBevelBorder;
13
14
15 /***
16 * A better button class that has nice roll over effects.
17 *
18 * This class is borrowed (quite heavily, but with modifications)
19 * from the "Swing: Second Edition"
20 * book by Matthew Robinson and Pavel Vorobeiv. An excellent book on Swing.
21 *
22 * @author Matthew Robinson
23 * @author Pavel Vorobeiv
24 * @author Paul Smith <psmith@apache.org>
25 *
26 */
27 public class SmallButton extends JButton implements MouseListener {
28 protected Border m_inactive = new EmptyBorder(3, 3, 3, 3);
29 protected Border m_border = m_inactive;
30 protected Border m_lowered = new SoftBevelBorder(BevelBorder.LOWERED);
31 protected Border m_raised = new SoftBevelBorder(BevelBorder.RAISED);
32 protected Insets m_ins = new Insets(4, 4, 4, 4);
33
34 public SmallButton() {
35 super();
36 setBorder(m_inactive);
37 setMargin(m_ins);
38 setRequestFocusEnabled(false);
39 addMouseListener(this);
40 }
41
42 public SmallButton(Action act) {
43 this();
44 setAction(act);
45 setRequestFocusEnabled(false);
46
47
48 addMouseListener(this);
49 }
50
51 /***
52 * DOCUMENT ME!
53 *
54 * @return DOCUMENT ME!
55 */
56 public float getAlignmentY() {
57 return 0.5f;
58 }
59
60 /***
61 * DOCUMENT ME!
62 *
63 * @return DOCUMENT ME!
64 */
65 public Border getBorder() {
66 return m_border;
67 }
68
69 /***
70 * DOCUMENT ME!
71 *
72 * @return DOCUMENT ME!
73 */
74 public Insets getInsets() {
75 return m_ins;
76 }
77
78 /***
79 * DOCUMENT ME!
80 *
81 * @param e DOCUMENT ME!
82 */
83 public void mouseClicked(MouseEvent e) {
84 }
85
86 /***
87 * DOCUMENT ME!
88 *
89 * @param e DOCUMENT ME!
90 */
91 public void mouseEntered(MouseEvent e) {
92 if (isEnabled()) {
93 m_border = m_raised;
94 setBorder(m_raised);
95 }
96 }
97
98 /***
99 * DOCUMENT ME!
100 *
101 * @param e DOCUMENT ME!
102 */
103 public void mouseExited(MouseEvent e) {
104 m_border = m_inactive;
105 setBorder(m_inactive);
106 }
107
108 /***
109 * DOCUMENT ME!
110 *
111 * @param e DOCUMENT ME!
112 */
113 public void mousePressed(MouseEvent e) {
114
115 if (isEnabled()) {
116 m_border = m_lowered;
117 setBorder(m_lowered);
118 }
119 }
120
121 /***
122 * DOCUMENT ME!
123 *
124 * @param e DOCUMENT ME!
125 */
126 public void mouseReleased(MouseEvent e) {
127 m_border = m_inactive;
128 setBorder(m_inactive);
129 }
130 }