Source for javax.sound.sampled.BooleanControl

   1: /* 
   2:    Copyright (C) 2005 Free Software Foundation, Inc.
   3: 
   4: This file is part of GNU Classpath.
   5: 
   6: GNU Classpath is free software; you can redistribute it and/or modify
   7: it under the terms of the GNU General Public License as published by
   8: the Free Software Foundation; either version 2, or (at your option)
   9: any later version.
  10: 
  11: GNU Classpath is distributed in the hope that it will be useful, but
  12: WITHOUT ANY WARRANTY; without even the implied warranty of
  13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14: General Public License for more details.
  15: 
  16: You should have received a copy of the GNU General Public License
  17: along with GNU Classpath; see the file COPYING.  If not, write to the
  18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  19: 02110-1301 USA.
  20: 
  21: Linking this library statically or dynamically with other modules is
  22: making a combined work based on this library.  Thus, the terms and
  23: conditions of the GNU General Public License cover the whole
  24: combination.
  25: 
  26: As a special exception, the copyright holders of this library give you
  27: permission to link this library with independent modules to produce an
  28: executable, regardless of the license terms of these independent
  29: modules, and to copy and distribute the resulting executable under
  30: terms of your choice, provided that you also meet, for each linked
  31: independent module, the terms and conditions of the license of that
  32: module.  An independent module is a module which is not derived from
  33: or based on this library.  If you modify this library, you may extend
  34: this exception to your version of the library, but you are not
  35: obligated to do so.  If you do not wish to do so, delete this
  36: exception statement from your version. */
  37: 
  38: 
  39: package javax.sound.sampled;
  40: 
  41: /**
  42:  * A BooleanControl is a Control which has two states.
  43:  * @since 1.3
  44:  */
  45: public abstract class BooleanControl extends Control
  46: {
  47:   /**
  48:    * A Type specialized to represent a boolean control.
  49:    * @since 1.3
  50:    */
  51:   public static class Type extends Control.Type
  52:   {
  53:     // FIXME: correct constructions?
  54: 
  55:     /**
  56:      * A control for applying reverb.
  57:      */
  58:     public final static Type APPLY_REVERB = new Type("Apply reverb");
  59: 
  60:     /**
  61:      * A control for muting.
  62:      */
  63:     public final static Type MUTE = new Type("Mute");
  64: 
  65:     /**
  66:      * Create a new Type given its name.
  67:      * @param name the name of the type
  68:      */
  69:     protected Type(String name)
  70:     {
  71:       super(name);
  72:     }
  73:   }
  74: 
  75:   private boolean value;
  76:   private String trueLabel;
  77:   private String falseLabel;
  78: 
  79:   /**
  80:    * Create a new boolean control, with the indicated Type and initial
  81:    * value.  The description strings will default to "true" and "false".
  82:    * @param type the type
  83:    * @param init the initial value
  84:    */
  85:   protected BooleanControl(Type type, boolean init)
  86:   {
  87:     super(type);
  88:     this.value = init;
  89:     this.trueLabel = "true";
  90:     this.falseLabel = "false";
  91:   }
  92: 
  93:   /**
  94:    * Create a new boolean control, with the indicated Type, initial
  95:    * value, and labels.
  96:    * @param type the type
  97:    * @param init the initial value
  98:    * @param trueLabel the label for the true state
  99:    * @param falseLabel the label for the false state
 100:    */
 101:   protected BooleanControl(Type type, boolean init, String trueLabel,
 102:                String falseLabel)
 103:   {
 104:     super(type);
 105:     this.value = init;
 106:     this.trueLabel = trueLabel;
 107:     this.falseLabel = falseLabel;
 108:   }
 109: 
 110:   /**
 111:    * Return the label corresponding to the indicated state.
 112:    * @param state the state
 113:    * @return the true label or the false label, as appropriate
 114:    */
 115:   public String getStateLabel(boolean state)
 116:   {
 117:     return state ? trueLabel : falseLabel;
 118:   }
 119: 
 120:   /**
 121:    * Return the current value of thhe control.
 122:    */
 123:   public boolean getValue()
 124:   {
 125:     return value;
 126:   }
 127: 
 128:   /**
 129:    * Set the value of the control as indicated.
 130:    * @param value the new value
 131:    */
 132:   public void setValue(boolean value)
 133:   {
 134:     this.value = value;
 135:   }
 136: 
 137:   /**
 138:    * Return a string describing this control.
 139:    */
 140:   public String toString()
 141:   {
 142:     return super.toString() + ": " + getStateLabel(value);
 143:   }
 144: }