diff options
author | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2005-08-02 20:12:05 +0000 |
---|---|---|
committer | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2005-08-02 20:12:05 +0000 |
commit | 33bace404a240c1335ab1f6e95bd6616e22c0ecd (patch) | |
tree | 004ab1587e14d3df272c6944ce325d3584b95aa5 /javax/swing/DefaultButtonModel.java | |
parent | d30622846e00f908cb5d4beac7de4e5e78dcd630 (diff) | |
download | classpath-33bace404a240c1335ab1f6e95bd6616e22c0ecd.tar.gz |
2005-08-02 Andrew John Hughes <gnu_andrew@member.fsf.org>
* Merge of HEAD --> generics-branch for 2005/06/05 - 2005/07/31.
See patch on classpath-patches@gnu.org for a full ChangeLog.
Diffstat (limited to 'javax/swing/DefaultButtonModel.java')
-rw-r--r-- | javax/swing/DefaultButtonModel.java | 175 |
1 files changed, 108 insertions, 67 deletions
diff --git a/javax/swing/DefaultButtonModel.java b/javax/swing/DefaultButtonModel.java index 021f02ced..f7d09d578 100644 --- a/javax/swing/DefaultButtonModel.java +++ b/javax/swing/DefaultButtonModel.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.ItemSelectable; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; @@ -51,6 +52,7 @@ import javax.swing.event.ChangeListener; import javax.swing.event.EventListenerList; /** + * The default implementation of {@link ButtonModel}. * The purpose of this class is to model the dynamic state of an abstract * button. The concrete button type holding this state may be a a "toggle" * button (checkbox, radio button) or a "push" button (menu button, button). @@ -265,9 +267,9 @@ public class DefaultButtonModel implements ButtonModel, Serializable } /** - * Inform each ItemListener in the {@link listenerList} that an ItemEvent + * Inform each ItemListener in the {@link #listenerList} that an ItemEvent * has occurred. This happens in response to any change to the {@link - * stateMask} field. + * #stateMask} field. * * @param e The ItemEvent to fire */ @@ -280,9 +282,9 @@ public class DefaultButtonModel implements ButtonModel, Serializable } /** - * Inform each ActionListener in the {@link listenerList} that an + * Inform each ActionListener in the {@link #listenerList} that an * ActionEvent has occurred. This happens in response to the any change to - * the {@link stateMask} field which makes the enabled, armed and pressed + * the {@link #stateMask} field which makes the enabled, armed and pressed * properties all simultaneously <code>true</code>. * * @param e The ActionEvent to fire @@ -296,7 +298,7 @@ public class DefaultButtonModel implements ButtonModel, Serializable } /** - * Inform each ChangeListener in the {@link listenerList} that a ChangeEvent + * Inform each ChangeListener in the {@link #listenerList} that a ChangeEvent * has occurred. This happens in response to the any change to a property * of the model. */ @@ -309,55 +311,6 @@ public class DefaultButtonModel implements ButtonModel, Serializable } /** - * 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; - - 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 (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 (group != null) - group.setSelected(this, false); - } - - else if (((oldstate & ARMED) == ARMED && (oldstate & PRESSED) == PRESSED) - && ((newstate & ARMED) == ARMED && (newstate & PRESSED) == 0)) - fireActionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, - actionCommand)); - } - - /** * Get the value of the model's "armed" property. * * @return The current "armed" property @@ -374,7 +327,22 @@ public class DefaultButtonModel implements ButtonModel, Serializable */ public void setArmed(boolean a) { - changeState(ARMED, a); + // if this call does not represent a CHANGE in state, then return + if ((a && isArmed()) || (!a && !isArmed())) + return; + + // cannot change ARMED state unless button is enabled + if (!isEnabled()) + return; + + // make the change + if (a) + stateMask = stateMask | ARMED; + else + stateMask = stateMask & (~ARMED); + + // notify interested ChangeListeners + fireStateChanged(); } /** @@ -394,7 +362,18 @@ public class DefaultButtonModel implements ButtonModel, Serializable */ public void setEnabled(boolean e) { - changeState(ENABLED, e); + // if this call does not represent a CHANGE in state, then return + if ((e && isEnabled()) || (!e && !isEnabled())) + return; + + // make the change + if (e) + stateMask = stateMask | ENABLED; + else + stateMask = stateMask & (~ENABLED); + + // notify interested ChangeListeners + fireStateChanged(); } /** @@ -404,7 +383,27 @@ public class DefaultButtonModel implements ButtonModel, Serializable */ public void setPressed(boolean p) { - changeState(PRESSED, p); + // if this call does not represent a CHANGE in state, then return + if ((p && isPressed()) || (!p && !isPressed())) + return; + + // cannot changed PRESSED state unless button is enabled + if (!isEnabled()) + return; + + // make the change + if (p) + stateMask = stateMask | PRESSED; + else + stateMask = stateMask & (~PRESSED); + + // if button is armed and was released, fire action event + if (!p && isArmed()) + fireActionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, + actionCommand)); + + // notify interested ChangeListeners + fireStateChanged(); } /** @@ -424,7 +423,22 @@ public class DefaultButtonModel implements ButtonModel, Serializable */ public void setRollover(boolean r) { - changeState(ROLLOVER, r); + // if this call does not represent a CHANGE in state, then return + if ((r && isRollover()) || (!r && !isRollover())) + return; + + // cannot set ROLLOVER property unless button is enabled + if (!isEnabled()) + return; + + // make the change + if (r) + stateMask = stateMask | ROLLOVER; + else + stateMask = stateMask & (~ROLLOVER); + + // notify interested ChangeListeners + fireStateChanged(); } /** @@ -434,7 +448,34 @@ public class DefaultButtonModel implements ButtonModel, Serializable */ public void setSelected(boolean s) { - changeState(SELECTED, s); + // if this call does not represent a CHANGE in state, then return + if ((s && isSelected()) || (!s && !isSelected())) + return; + + // make the change + if (s) + stateMask = stateMask | SELECTED; + else + stateMask = stateMask & (~SELECTED); + + // notify interested ChangeListeners + fireStateChanged(); + + // fire ItemStateChanged events + if (s) + { + fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED, + null, ItemEvent.SELECTED)); + if (group != null) + group.setSelected(this, true); + } + else + { + fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED, + null, ItemEvent.DESELECTED)); + if (group != null) + group.setSelected(this, false); + } } /** @@ -476,8 +517,8 @@ public class DefaultButtonModel implements ButtonModel, Serializable { if (mnemonic != key) { - mnemonic = key; - fireStateChanged(); + mnemonic = key; + fireStateChanged(); } } @@ -492,8 +533,8 @@ public class DefaultButtonModel implements ButtonModel, Serializable { if (actionCommand != s) { - actionCommand = s; - fireStateChanged(); + actionCommand = s; + fireStateChanged(); } } @@ -519,8 +560,8 @@ public class DefaultButtonModel implements ButtonModel, Serializable { if (group != g) { - group = g; - fireStateChanged(); + group = g; + fireStateChanged(); } } |