home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 November / Chip_1998-11_cd.bin / tema / Cafe / jfc.bin / ButtonGroup.java < prev    next >
Text File  |  1998-02-26  |  3KB  |  122 lines

  1. /*
  2.  * @(#)ButtonGroup.java    1.17 98/02/06
  3.  * 
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  * 
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not
  8.  * disclose such Confidential Information and shall use it only in
  9.  * accordance with the terms of the license agreement you entered into
  10.  * with Sun.
  11.  * 
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  13.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  14.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  15.  * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
  16.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
  17.  * THIS SOFTWARE OR ITS DERIVATIVES.
  18.  * 
  19.  */
  20. package com.sun.java.swing;
  21.  
  22. import java.awt.event.*;
  23. import java.util.Vector;
  24. import java.util.Enumeration;
  25. import java.io.Serializable;
  26.  
  27. /**
  28.  * This class is used to create a multiple-exclusion scope for
  29.  * a set of buttons. i.e. creating a set of buttons with the
  30.  * same ButtonGroup object means that only one of those buttons 
  31.  * will be allowed to be "on" at a time.
  32.  * <p>
  33.  * Warning: serialized objects of this class will not be compatible with
  34.  * future swing releases.  The current serialization support is appropriate 
  35.  * for short term storage or RMI between Swing1.0 applications.  It will
  36.  * not be possible to load serialized Swing1.0 objects with future releases
  37.  * of Swing.  The JDK1.2 release of Swing will be the compatibility
  38.  * baseline for the serialized form of Swing objects.
  39.  *
  40.  * @version 1.17 02/06/98
  41.  * @author Jeff Dinkins
  42.  */
  43. public class ButtonGroup implements Serializable {
  44.  
  45.     // the list of buttons participating in this group
  46.     protected Vector buttons = new Vector();
  47.  
  48.     /**
  49.      * The current choice.
  50.      */
  51.     ButtonModel selection = null;
  52.  
  53.     /**
  54.      * Creates a new ButtonGroup.
  55.      */
  56.     public ButtonGroup() {}
  57.  
  58.     /**
  59.      * Adds the button to the group.
  60.      */ 
  61.     public void add(AbstractButton b) {
  62.     if(b == null) {
  63.         return;
  64.     }
  65.     buttons.addElement(b);
  66.     if(selection == null && b.isSelected()) {
  67.         selection = b.getModel();
  68.     }
  69.     b.getModel().setGroup(this);
  70.     }
  71.  
  72.     /**
  73.      * Removes the button from the group.
  74.      */ 
  75.     public void remove(AbstractButton b) {
  76.     if(b == null) {
  77.         return;
  78.     }
  79.     buttons.removeElement(b);
  80.     if(b.getModel() == selection) {
  81.         selection = null;
  82.     }
  83.     b.getModel().setGroup(null);
  84.     }
  85.  
  86.     /**
  87.      * Return all the buttons that are participating in
  88.      * this group.
  89.      */
  90.     public Enumeration getElements() {
  91.         return buttons.elements();
  92.     }
  93.  
  94.     /**
  95.      * Return the selected button model.
  96.      */
  97.     public ButtonModel getSelection() {
  98.         return selection;
  99.     }
  100.  
  101.     /**
  102.      * Sets the selected value for the button.
  103.      */
  104.     public void setSelected(ButtonModel m, boolean b) {
  105.     if(b && m != selection) {
  106.         ButtonModel oldSelection = selection;
  107.         selection = m;
  108.         if(oldSelection != null) {
  109.         oldSelection.setSelected(false);
  110.         }
  111.     } 
  112.     }
  113.  
  114.     /**
  115.      * Returns the selected value for the button.
  116.      */
  117.     public boolean isSelected(ButtonModel m) {
  118.     return (m == selection);
  119.     }
  120.  
  121. }
  122.