summaryrefslogtreecommitdiff
path: root/javax/swing/JToggleButton.java
diff options
context:
space:
mode:
Diffstat (limited to 'javax/swing/JToggleButton.java')
-rw-r--r--javax/swing/JToggleButton.java51
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();
}
/**