148 else {
149 InputMap map = SwingUtilities.getUIInputMap(b, JComponent.
150 WHEN_IN_FOCUSED_WINDOW);
151 if (map != null) {
152 map.clear();
153 }
154 }
155 }
156
157 public void stateChanged(ChangeEvent e) {
158 AbstractButton b = (AbstractButton) e.getSource();
159 b.repaint();
160 }
161
162 public void focusGained(FocusEvent e) {
163 AbstractButton b = (AbstractButton) e.getSource();
164 if (b instanceof JButton && ((JButton)b).isDefaultCapable()) {
165 JRootPane root = b.getRootPane();
166 if (root != null) {
167 BasicButtonUI ui = (BasicButtonUI)BasicLookAndFeel.getUIOfType(
168 ((AbstractButton)b).getUI(), BasicButtonUI.class);
169 if (ui != null && DefaultLookup.getBoolean(b, ui,
170 ui.getPropertyPrefix() +
171 "defaultButtonFollowsFocus", true)) {
172 root.putClientProperty("temporaryDefaultButton", b);
173 root.setDefaultButton((JButton)b);
174 root.putClientProperty("temporaryDefaultButton", null);
175 }
176 }
177 }
178 b.repaint();
179 }
180
181 public void focusLost(FocusEvent e) {
182 AbstractButton b = (AbstractButton) e.getSource();
183 JRootPane root = b.getRootPane();
184 if (root != null) {
185 JButton initialDefault = (JButton)root.getClientProperty("initialDefaultButton");
186 if (b != initialDefault) {
187 BasicButtonUI ui = (BasicButtonUI)BasicLookAndFeel.getUIOfType(
188 ((AbstractButton)b).getUI(), BasicButtonUI.class);
189 if (ui != null && DefaultLookup.getBoolean(b, ui,
190 ui.getPropertyPrefix() +
191 "defaultButtonFollowsFocus", true)) {
192 root.setDefaultButton(initialDefault);
193 }
194 }
195 }
196
197 ButtonModel model = b.getModel();
198 model.setArmed(false);
199 model.setPressed(false);
200
201 b.repaint();
202 }
203
204 public void mouseMoved(MouseEvent e) {
205 }
206
207
208 public void mouseDragged(MouseEvent e) {
222 if (lastTime != -1 && currentTime - lastTime < multiClickThreshhold) {
223 shouldDiscardRelease = true;
224 return;
225 }
226
227 ButtonModel model = b.getModel();
228 if (!model.isEnabled()) {
229 // Disabled buttons ignore all input...
230 return;
231 }
232 if (!model.isArmed()) {
233 // button not armed, should be
234 model.setArmed(true);
235 }
236 model.setPressed(true);
237 if(!b.hasFocus() && b.isRequestFocusEnabled()) {
238 b.requestFocus();
239 }
240 }
241 }
242 };
243
244 public void mouseReleased(MouseEvent e) {
245 if (SwingUtilities.isLeftMouseButton(e)) {
246 // Support for multiClickThreshhold
247 if (shouldDiscardRelease) {
248 shouldDiscardRelease = false;
249 return;
250 }
251 AbstractButton b = (AbstractButton) e.getSource();
252 ButtonModel model = b.getModel();
253 model.setPressed(false);
254 model.setArmed(false);
255 }
256 };
257
258 public void mouseEntered(MouseEvent e) {
259 AbstractButton b = (AbstractButton) e.getSource();
260 ButtonModel model = b.getModel();
261 if (b.isRolloverEnabled() && !SwingUtilities.isLeftMouseButton(e)) {
262 model.setRollover(true);
263 }
264 if (model.isPressed())
265 model.setArmed(true);
266 };
267
268 public void mouseExited(MouseEvent e) {
269 AbstractButton b = (AbstractButton) e.getSource();
270 ButtonModel model = b.getModel();
271 if(b.isRolloverEnabled()) {
272 model.setRollover(false);
273 }
274 model.setArmed(false);
275 };
276
277
278 /**
279 * Actions for Buttons. Two types of action are supported:
280 * pressed: Moves the button to a pressed state
281 * released: Disarms the button.
282 */
283 private static class Actions extends UIAction {
284 private static final String PRESS = "pressed";
285 private static final String RELEASE = "released";
286
287 Actions(String name) {
288 super(name);
289 }
290
291 public void actionPerformed(ActionEvent e) {
292 AbstractButton b = (AbstractButton)e.getSource();
293 String key = getName();
294 if (key == PRESS) {
295 ButtonModel model = b.getModel();
|
148 else {
149 InputMap map = SwingUtilities.getUIInputMap(b, JComponent.
150 WHEN_IN_FOCUSED_WINDOW);
151 if (map != null) {
152 map.clear();
153 }
154 }
155 }
156
157 public void stateChanged(ChangeEvent e) {
158 AbstractButton b = (AbstractButton) e.getSource();
159 b.repaint();
160 }
161
162 public void focusGained(FocusEvent e) {
163 AbstractButton b = (AbstractButton) e.getSource();
164 if (b instanceof JButton && ((JButton)b).isDefaultCapable()) {
165 JRootPane root = b.getRootPane();
166 if (root != null) {
167 BasicButtonUI ui = (BasicButtonUI)BasicLookAndFeel.getUIOfType(
168 b.getUI(), BasicButtonUI.class);
169 if (ui != null && DefaultLookup.getBoolean(b, ui,
170 ui.getPropertyPrefix() +
171 "defaultButtonFollowsFocus", true)) {
172 root.putClientProperty("temporaryDefaultButton", b);
173 root.setDefaultButton((JButton)b);
174 root.putClientProperty("temporaryDefaultButton", null);
175 }
176 }
177 }
178 b.repaint();
179 }
180
181 public void focusLost(FocusEvent e) {
182 AbstractButton b = (AbstractButton) e.getSource();
183 JRootPane root = b.getRootPane();
184 if (root != null) {
185 JButton initialDefault = (JButton)root.getClientProperty("initialDefaultButton");
186 if (b != initialDefault) {
187 BasicButtonUI ui = (BasicButtonUI)BasicLookAndFeel.getUIOfType(
188 b.getUI(), BasicButtonUI.class);
189 if (ui != null && DefaultLookup.getBoolean(b, ui,
190 ui.getPropertyPrefix() +
191 "defaultButtonFollowsFocus", true)) {
192 root.setDefaultButton(initialDefault);
193 }
194 }
195 }
196
197 ButtonModel model = b.getModel();
198 model.setArmed(false);
199 model.setPressed(false);
200
201 b.repaint();
202 }
203
204 public void mouseMoved(MouseEvent e) {
205 }
206
207
208 public void mouseDragged(MouseEvent e) {
222 if (lastTime != -1 && currentTime - lastTime < multiClickThreshhold) {
223 shouldDiscardRelease = true;
224 return;
225 }
226
227 ButtonModel model = b.getModel();
228 if (!model.isEnabled()) {
229 // Disabled buttons ignore all input...
230 return;
231 }
232 if (!model.isArmed()) {
233 // button not armed, should be
234 model.setArmed(true);
235 }
236 model.setPressed(true);
237 if(!b.hasFocus() && b.isRequestFocusEnabled()) {
238 b.requestFocus();
239 }
240 }
241 }
242 }
243
244 public void mouseReleased(MouseEvent e) {
245 if (SwingUtilities.isLeftMouseButton(e)) {
246 // Support for multiClickThreshhold
247 if (shouldDiscardRelease) {
248 shouldDiscardRelease = false;
249 return;
250 }
251 AbstractButton b = (AbstractButton) e.getSource();
252 ButtonModel model = b.getModel();
253 model.setPressed(false);
254 model.setArmed(false);
255 }
256 }
257
258 public void mouseEntered(MouseEvent e) {
259 AbstractButton b = (AbstractButton) e.getSource();
260 ButtonModel model = b.getModel();
261 if (b.isRolloverEnabled() && !SwingUtilities.isLeftMouseButton(e)) {
262 model.setRollover(true);
263 }
264 if (model.isPressed())
265 model.setArmed(true);
266 }
267
268 public void mouseExited(MouseEvent e) {
269 AbstractButton b = (AbstractButton) e.getSource();
270 ButtonModel model = b.getModel();
271 if(b.isRolloverEnabled()) {
272 model.setRollover(false);
273 }
274 model.setArmed(false);
275 }
276
277
278 /**
279 * Actions for Buttons. Two types of action are supported:
280 * pressed: Moves the button to a pressed state
281 * released: Disarms the button.
282 */
283 private static class Actions extends UIAction {
284 private static final String PRESS = "pressed";
285 private static final String RELEASE = "released";
286
287 Actions(String name) {
288 super(name);
289 }
290
291 public void actionPerformed(ActionEvent e) {
292 AbstractButton b = (AbstractButton)e.getSource();
293 String key = getName();
294 if (key == PRESS) {
295 ButtonModel model = b.getModel();
|