diff options
Diffstat (limited to 'javax/swing/JToggleButton.java')
-rw-r--r-- | javax/swing/JToggleButton.java | 51 |
1 files changed, 40 insertions, 11 deletions
diff --git a/javax/swing/JToggleButton.java b/javax/swing/JToggleButton.java index d5fcdd76c..25d67f59e 100644 --- a/javax/swing/JToggleButton.java +++ b/javax/swing/JToggleButton.java @@ -15,8 +15,8 @@ General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the -Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -02111-1307 USA. +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and @@ -38,6 +38,7 @@ exception statement from your version. */ package javax.swing; +import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; @@ -133,19 +134,47 @@ public class JToggleButton extends AbstractButton implements Accessible * Sets the pressed state of the button. The selected state * of the button also changes follwing the button being pressed. * - * @param b true if the button is pressed down. + * @param p true if the button is pressed down. */ - public void setPressed(boolean b) + public void setPressed(boolean p) { + // cannot change PRESSED state unless button is enabled if (! isEnabled()) return; - super.setPressed(b); - + // if this call does not represent a CHANGE in state, then return + if ((p && isPressed()) || (!p && !isPressed())) + return; + + // The JDK first fires events in the following order: + // 1. ChangeEvent for selected + // 2. ChangeEvent for pressed + // 3. ActionEvent + // So do we. + // setPressed(false) == mouse release on us, // if we were armed, we flip the selected state. - if (!b && isArmed()) - setSelected(! isSelected()); + if (!p && isArmed()) + { + setSelected(! isSelected()); + } + + // make the change + if (p) + stateMask = stateMask | PRESSED; + else + stateMask = stateMask & (~PRESSED); + + // notify interested ChangeListeners + fireStateChanged(); + + if (!p && isArmed()) + { + fireActionPerformed(new ActionEvent(this, + ActionEvent.ACTION_PERFORMED, + actionCommand)); + } + } } @@ -242,11 +271,11 @@ public class JToggleButton extends AbstractButton implements Accessible */ public JToggleButton (String text, Icon icon, boolean selected) { - super(text, icon); + super(); + init(text, icon); setModel(new ToggleButtonModel()); model.setSelected(selected); - model.setActionCommand(""); } /** @@ -287,7 +316,7 @@ public class JToggleButton extends AbstractButton implements Accessible */ protected String paramString() { - return "JToggleButton"; + return super.paramString(); } /** |