309 |
} |
} |
310 |
|
|
311 |
/** |
/** |
|
* Helper method to fire a ChangeEvent with the model as the event's source. |
|
|
* |
|
|
* @param stateflag DOCUMENT ME! |
|
|
* @param b DOCUMENT ME! |
|
|
*/ |
|
|
private void changeState(int stateflag, boolean b) |
|
|
{ |
|
|
int oldstate = stateMask; |
|
|
int newstate; |
|
|
boolean toggle = (this instanceof JToggleButton.ToggleButtonModel); |
|
|
|
|
|
if (b) |
|
|
newstate = oldstate | stateflag; |
|
|
else |
|
|
newstate = oldstate & ~ stateflag; |
|
|
|
|
|
if (oldstate == newstate) |
|
|
return; |
|
|
|
|
|
if ((stateflag != SELECTED) && (stateflag != ENABLED) |
|
|
&& (stateMask & ENABLED) == 0) |
|
|
return; |
|
|
|
|
|
stateMask = newstate; |
|
|
|
|
|
fireStateChanged(); |
|
|
|
|
|
if ((oldstate & SELECTED) == 0 && (newstate & SELECTED) == SELECTED) |
|
|
{ |
|
|
fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED, |
|
|
null, ItemEvent.SELECTED)); |
|
|
// If the button is a toggle button then we fire action performed when |
|
|
// the button changes state (selected/deselected), not when it changes |
|
|
// from pressed to unpressed |
|
|
if (toggle) |
|
|
fireActionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, |
|
|
actionCommand)); |
|
|
if (group != null) |
|
|
group.setSelected(this, true); |
|
|
} |
|
|
|
|
|
else if ((oldstate & SELECTED) == SELECTED && (newstate & SELECTED) == 0) |
|
|
{ |
|
|
fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED, |
|
|
null, ItemEvent.DESELECTED)); |
|
|
// If the button is a toggle button then we fire action performed when |
|
|
// the button changes state (selected/deselected), not when it changes |
|
|
// from pressed to unpressed |
|
|
if (toggle) |
|
|
fireActionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, |
|
|
actionCommand)); |
|
|
if (group != null) |
|
|
group.setSelected(this, false); |
|
|
} |
|
|
|
|
|
else if (((oldstate & ARMED) == ARMED && (oldstate & PRESSED) == PRESSED) |
|
|
&& ((newstate & ARMED) == ARMED && (newstate & PRESSED) == 0) && (!toggle)) |
|
|
fireActionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, |
|
|
actionCommand)); |
|
|
} |
|
|
|
|
|
/** |
|
312 |
* Get the value of the model's "armed" property. |
* Get the value of the model's "armed" property. |
313 |
* |
* |
314 |
* @return The current "armed" property |
* @return The current "armed" property |
325 |
*/ |
*/ |
326 |
public void setArmed(boolean a) |
public void setArmed(boolean a) |
327 |
{ |
{ |
328 |
changeState(ARMED, a); |
// if this call does not represent a CHANGE in state, then return |
329 |
|
if ((a && isArmed()) || (!a && !isArmed())) |
330 |
|
return; |
331 |
|
|
332 |
|
// cannot change ARMED state unless button is enabled |
333 |
|
if (!isEnabled()) |
334 |
|
return; |
335 |
|
|
336 |
|
// make the change |
337 |
|
if (a) |
338 |
|
stateMask = stateMask | ARMED; |
339 |
|
else |
340 |
|
stateMask = stateMask & (~ARMED); |
341 |
|
|
342 |
|
// notify interested ChangeListeners |
343 |
|
fireStateChanged(); |
344 |
} |
} |
345 |
|
|
346 |
/** |
/** |
360 |
*/ |
*/ |
361 |
public void setEnabled(boolean e) |
public void setEnabled(boolean e) |
362 |
{ |
{ |
363 |
changeState(ENABLED, e); |
// if this call does not represent a CHANGE in state, then return |
364 |
|
if ((e && isEnabled()) || (!e && !isEnabled())) |
365 |
|
return; |
366 |
|
|
367 |
|
// make the change |
368 |
|
if (e) |
369 |
|
stateMask = stateMask | ENABLED; |
370 |
|
else |
371 |
|
stateMask = stateMask & (~ENABLED); |
372 |
|
|
373 |
|
// notify interested ChangeListeners |
374 |
|
fireStateChanged(); |
375 |
} |
} |
376 |
|
|
377 |
/** |
/** |
381 |
*/ |
*/ |
382 |
public void setPressed(boolean p) |
public void setPressed(boolean p) |
383 |
{ |
{ |
384 |
changeState(PRESSED, p); |
// if this call does not represent a CHANGE in state, then return |
385 |
|
if ((p && isPressed()) || (!p && !isPressed())) |
386 |
|
return; |
387 |
|
|
388 |
|
// cannot changed PRESSED state unless button is enabled |
389 |
|
if (!isEnabled()) |
390 |
|
return; |
391 |
|
|
392 |
|
// make the change |
393 |
|
if (p) |
394 |
|
stateMask = stateMask | PRESSED; |
395 |
|
else |
396 |
|
stateMask = stateMask & (~PRESSED); |
397 |
|
|
398 |
|
// notify interested ChangeListeners |
399 |
|
fireStateChanged(); |
400 |
|
|
401 |
|
// if button is armed and was released, fire action event |
402 |
|
if (!p && isArmed()) |
403 |
|
fireActionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, |
404 |
|
actionCommand)); |
405 |
} |
} |
406 |
|
|
407 |
/** |
/** |
421 |
*/ |
*/ |
422 |
public void setRollover(boolean r) |
public void setRollover(boolean r) |
423 |
{ |
{ |
424 |
changeState(ROLLOVER, r); |
// if this call does not represent a CHANGE in state, then return |
425 |
|
if ((r && isRollover()) || (!r && !isRollover())) |
426 |
|
return; |
427 |
|
|
428 |
|
// cannot set ROLLOVER property unless button is enabled |
429 |
|
if (!isEnabled()) |
430 |
|
return; |
431 |
|
|
432 |
|
// make the change |
433 |
|
if (r) |
434 |
|
stateMask = stateMask | ROLLOVER; |
435 |
|
else |
436 |
|
stateMask = stateMask & (~ROLLOVER); |
437 |
|
|
438 |
|
// notify interested ChangeListeners |
439 |
|
fireStateChanged(); |
440 |
} |
} |
441 |
|
|
442 |
/** |
/** |
446 |
*/ |
*/ |
447 |
public void setSelected(boolean s) |
public void setSelected(boolean s) |
448 |
{ |
{ |
449 |
changeState(SELECTED, s); |
// if this call does not represent a CHANGE in state, then return |
450 |
|
if ((s && isSelected()) || (!s && !isSelected())) |
451 |
|
return; |
452 |
|
|
453 |
|
// make the change |
454 |
|
if (s) |
455 |
|
stateMask = stateMask | SELECTED; |
456 |
|
else |
457 |
|
stateMask = stateMask & (~SELECTED); |
458 |
|
|
459 |
|
// notify interested ChangeListeners |
460 |
|
fireStateChanged(); |
461 |
|
|
462 |
|
// fire ItemStateChanged events |
463 |
|
if (s) |
464 |
|
{ |
465 |
|
fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED, |
466 |
|
null, ItemEvent.SELECTED)); |
467 |
|
if (group != null) |
468 |
|
group.setSelected(this, true); |
469 |
|
} |
470 |
|
else |
471 |
|
{ |
472 |
|
fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED, |
473 |
|
null, ItemEvent.DESELECTED)); |
474 |
|
if (group != null) |
475 |
|
group.setSelected(this, false); |
476 |
|
} |
477 |
} |
} |
478 |
|
|
479 |
/** |
/** |