1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.log4j.chainsaw;
18
19 import java.awt.Insets;
20 import java.awt.event.ItemEvent;
21 import java.awt.event.ItemListener;
22 import java.awt.event.MouseEvent;
23 import java.awt.event.MouseListener;
24
25 import javax.swing.Action;
26 import javax.swing.BorderFactory;
27 import javax.swing.JToggleButton;
28 import javax.swing.SwingConstants;
29 import javax.swing.border.BevelBorder;
30 import javax.swing.border.Border;
31 import javax.swing.border.SoftBevelBorder;
32
33
34
35
36
37
38
39
40
41
42
43
44
45 class SmallToggleButton extends JToggleButton implements ItemListener,
46 MouseListener {
47 protected Border m_highlighted = new SoftBevelBorder(BevelBorder.RAISED);
48 protected Border m_raised = BorderFactory.createEmptyBorder(3, 3, 3, 3);
49 protected Border m_inactive = m_raised;
50 protected Border m_border = m_inactive;
51 protected Border m_lowered = new SoftBevelBorder(BevelBorder.LOWERED);
52 protected Insets m_ins = new Insets(4, 4, 4, 4);
53
54 public SmallToggleButton() {
55 super();
56 setHorizontalAlignment(SwingConstants.CENTER);
57 setBorder(isSelected() ? m_lowered : m_raised);
58 setMargin(m_ins);
59 setRequestFocusEnabled(false);
60 addItemListener(this);
61 addMouseListener(this);
62 setText("");
63 }
64
65 public SmallToggleButton(Action action) {
66 this();
67 setAction(action);
68 }
69
70
71
72
73
74
75 public float getAlignmentY() {
76 return 0.5f;
77 }
78
79
80
81
82
83
84 public Border getBorder() {
85 return m_border;
86 }
87
88
89
90
91
92
93 public Insets getInsets() {
94 return m_ins;
95 }
96
97
98
99
100
101
102 public void itemStateChanged(ItemEvent e) {
103 setBorder(isSelected() ? m_lowered : m_raised);
104 }
105
106
107
108
109
110
111 public void mouseClicked(MouseEvent e) {
112 }
113
114
115
116
117
118
119 public void mouseEntered(MouseEvent e) {
120 if (isEnabled()) {
121 m_border = m_highlighted;
122 setBorder(m_highlighted);
123 }
124 }
125
126
127
128
129
130
131 public void mouseExited(MouseEvent e) {
132 m_border = m_inactive;
133 setBorder(m_inactive);
134 }
135
136
137
138
139
140
141 public void mousePressed(MouseEvent e) {
142 m_border = m_lowered;
143 setBorder(m_lowered);
144 }
145
146
147
148
149
150
151 public void mouseReleased(MouseEvent e) {
152 m_border = m_inactive;
153 setBorder(m_inactive);
154 }
155 }