1:
37:
38:
39: package ;
40:
41: import ;
42:
43: import ;
44: import ;
45: import ;
46: import ;
47: import ;
48: import ;
49: import ;
50: import ;
51: import ;
52: import ;
53: import ;
54:
55: import ;
56: import ;
57: import ;
58: import ;
59: import ;
60: import ;
61: import ;
62:
63: public class BasicButtonListener implements MouseListener, MouseMotionListener,
64: FocusListener, ChangeListener, PropertyChangeListener
65: {
66: public BasicButtonListener(AbstractButton b)
67: {
68:
69: }
70:
71: public void propertyChange(PropertyChangeEvent e)
72: {
73:
74:
75: String property = e.getPropertyName();
76: if ((property.equals(AbstractButton.TEXT_CHANGED_PROPERTY)
77: || property.equals("font"))
78: && SystemProperties.getProperty("gnu.javax.swing.noGraphics2D")
79: == null)
80: {
81: AbstractButton b = (AbstractButton) e.getSource();
82: String text = b.getText();
83: if (text == null)
84: text = "";
85: FontRenderContext frc = new FontRenderContext(new AffineTransform(),
86: false, false);
87: TextLayout layout = new TextLayout(text, b.getFont(), frc);
88: b.putClientProperty(BasicGraphicsUtils.CACHED_TEXT_LAYOUT, layout);
89: }
90: }
91:
92: protected void checkOpacity(AbstractButton b)
93: {
94:
95: }
96:
97: public void focusGained(FocusEvent e)
98: {
99: if (e.getSource() instanceof AbstractButton)
100: {
101: AbstractButton button = (AbstractButton) e.getSource();
102: if (button.isFocusPainted())
103: button.repaint();
104: }
105: }
106:
107: public void focusLost(FocusEvent e)
108: {
109: if (e.getSource() instanceof AbstractButton)
110: {
111: AbstractButton button = (AbstractButton) e.getSource();
112: if (button.isFocusPainted())
113: button.repaint();
114: }
115: }
116:
117: public void installKeyboardActions(JComponent c)
118: {
119: c.getActionMap().put("pressed",
120: new AbstractAction()
121: {
122: public void actionPerformed(ActionEvent e)
123: {
124: AbstractButton button = (AbstractButton) e.getSource();
125: ButtonModel model = button.getModel();
126:
127: model.setArmed(true);
128: model.setPressed(true);
129: }
130: });
131:
132: c.getActionMap().put("released",
133: new AbstractAction()
134: {
135: public void actionPerformed(ActionEvent e)
136: {
137: AbstractButton button = (AbstractButton) e.getSource();
138: ButtonModel model = button.getModel();
139:
140: model.setPressed(false);
141: model.setArmed(false);
142: }
143: });
144: }
145:
146: public void uninstallKeyboardActions(JComponent c)
147: {
148: c.getActionMap().put("pressed", null);
149: c.getActionMap().put("released", null);
150: }
151:
152: public void stateChanged(ChangeEvent e)
153: {
154:
155: }
156:
157: public void mouseMoved(MouseEvent e)
158: {
159:
160: }
161:
162: public void mouseDragged(MouseEvent e)
163: {
164:
165: }
166:
167: public void mouseClicked(MouseEvent e)
168: {
169:
170: }
171:
172:
177: public void mousePressed(MouseEvent e)
178: {
179: if (e.getSource() instanceof AbstractButton)
180: {
181: AbstractButton button = (AbstractButton) e.getSource();
182: ButtonModel model = button.getModel();
183: if (SwingUtilities.isLeftMouseButton(e))
184: {
185:
186: model.setArmed(true);
187: model.setPressed(true);
188:
189: if (! button.isFocusOwner() && button.isRequestFocusEnabled())
190: button.requestFocus();
191: }
192: }
193: }
194:
195:
202: public void mouseReleased(MouseEvent e)
203: {
204: if (e.getSource() instanceof AbstractButton)
205: {
206: AbstractButton button = (AbstractButton) e.getSource();
207: ButtonModel model = button.getModel();
208: if (e.getButton() == MouseEvent.BUTTON1)
209: {
210:
211: model.setPressed(false);
212: model.setArmed(false);
213: }
214: }
215: }
216:
217:
225: public void mouseEntered(MouseEvent e)
226: {
227: if (e.getSource() instanceof AbstractButton)
228: {
229: AbstractButton button = (AbstractButton) e.getSource();
230: ButtonModel model = button.getModel();
231: if (button.isRolloverEnabled()
232: && ! SwingUtilities.isLeftMouseButton(e))
233: model.setRollover(true);
234:
235: if (model.isPressed())
236: model.setArmed(true);
237: }
238: }
239:
240:
247: public void mouseExited(MouseEvent e)
248: {
249: if (e.getSource() instanceof AbstractButton)
250: {
251: AbstractButton button = (AbstractButton) e.getSource();
252: ButtonModel model = button.getModel();
253: if (button.isRolloverEnabled())
254: model.setRollover(false);
255: model.setArmed(false);
256: }
257: }
258: }