/*
* @(#)ButtonModel.java 1.29 06/02/14
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package javax.swing;
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;
/**
* State model for buttons.
* <p>
* This model is used for regular buttons, as well as check boxes
* and radio buttons, which are special kinds of buttons. In practice,
* a button's UI takes the responsibility of calling methods on its
* model to manage the state, as detailed below:
* <p>
* In simple terms, pressing and releasing the mouse over a regular
* button triggers the button and causes and <code>ActionEvent</code>
* to be fired. The same behavior can be produced via a keyboard key
* defined by the look and feel of the button (typically the SPACE BAR).
* Pressing and releasing this key while the button has
* focus will give the same results. For check boxes and radio buttons, the
* mouse or keyboard equivalent sequence just described causes the button
* to become selected.
* <p>
* In details, the state model for buttons works as follows
* when used with the mouse:
* <br>
* Pressing the mouse on top of a button makes the model both
* armed and pressed. As long as the mouse remains down,
* the model remains pressed, even if the mouse moves
* outside the button. On the contrary, the model is only
* armed while the mouse remains pressed within the bounds of
* the button (it can move in or out of the button, but the model
* is only armed during the portion of time spent within the button).
* A button is triggered, and an <code>ActionEvent</code> is fired,
* when the mouse is released while the model is armed
* - meaning when it is released over top of the button after the mouse
* has previously been pressed on that button (and not already released).
* Upon mouse release, the model becomes unarmed and unpressed.
* <p>
* In details, the state model for buttons works as follows
* when used with the keyboard:
* <br>
* Pressing the look and feel defined keyboard key while the button
* has focus makes the model both armed and pressed. As long as this key
* remains down, the model remains in this state. Releasing the key sets
* the model to unarmed and unpressed, triggers the button, and causes an
* <code>ActionEvent</code> to be fired.
*
* @version 1.29 02/14/06
* @author Jeff Dinkins
*/
public interface ButtonModel extends ItemSelectable {
/**
* Indicates partial commitment towards triggering the
* button.
*
* @return <code>true</code> if the button is armed,
* and ready to be triggered
* @see #setArmed
*/
boolean isArmed();
/**
* Indicates if the button has been selected. Only needed for
* certain types of buttons - such as radio buttons and check boxes.
*
* @return <code>true</code> if the button is selected
*/
boolean isSelected();
/**
* Indicates if the button can be selected or triggered by
* an input device, such as a mouse pointer.
*
* @return <code>true</code> if the button is enabled
*/
boolean isEnabled();
/**
* Indicates if the button is pressed.
*
* @return <code>true</code> if the button is pressed
*/
boolean isPressed();
/**
* Indicates that the mouse is over the button.
*
* @return <code>true</code> if the mouse is over the button
*/
boolean isRollover();
=1= |