/[classpath]/classpath/javax/swing/DefaultButtonModel.java
ViewVC logotype

Diff of /classpath/javax/swing/DefaultButtonModel.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.21 by abalkiss, Tue Jul 12 20:19:08 2005 UTC revision 1.22 by abalkiss, Wed Jul 13 15:30:54 2005 UTC
# Line 309  public class DefaultButtonModel implemen Line 309  public class DefaultButtonModel implemen
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
# Line 387  public class DefaultButtonModel implemen Line 325  public class DefaultButtonModel implemen
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    /**    /**
# Line 407  public class DefaultButtonModel implemen Line 360  public class DefaultButtonModel implemen
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    /**    /**
# Line 417  public class DefaultButtonModel implemen Line 381  public class DefaultButtonModel implemen
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    /**    /**
# Line 437  public class DefaultButtonModel implemen Line 421  public class DefaultButtonModel implemen
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    /**    /**
# Line 447  public class DefaultButtonModel implemen Line 446  public class DefaultButtonModel implemen
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    /**    /**

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26