src/share/classes/javax/sound/sampled/EnumControl.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 24,107 **** */ package javax.sound.sampled; /** ! * A <code>EnumControl</code> provides control over a set of ! * discrete possible values, each represented by an object. In a ! * graphical user interface, such a control might be represented ! * by a set of buttons, each of which chooses one value or setting. For ! * example, a reverb control might provide several preset reverberation ! * settings, instead of providing continuously adjustable parameters ! * of the sort that would be represented by <code>{@link FloatControl}</code> * objects. * <p> ! * Controls that provide a choice between only two settings can often be implemented ! * instead as a <code>{@link BooleanControl}</code>, and controls that provide ! * a set of values along some quantifiable dimension might be implemented ! * instead as a <code>FloatControl</code> with a coarse resolution. ! * However, a key feature of <code>EnumControl</code> is that the returned values ! * are arbitrary objects, rather than numerical or boolean values. This means that each ! * returned object can provide further information. As an example, the settings ! * of a <code>{@link EnumControl.Type#REVERB REVERB}</code> control are instances of ! * <code>{@link ReverbType}</code> that can be queried for the parameter values ! * used for each setting. * * @author Kara Kytle * @since 1.3 */ public abstract class EnumControl extends Control { - - // TYPE DEFINES - - - // INSTANCE VARIABLES - - /** * The set of possible values. */ private Object[] values; - /** * The current value. */ private Object value; - - - // CONSTRUCTORS - - /** * Constructs a new enumerated control object with the given parameters. * ! * @param type the type of control represented this enumerated control object * @param values the set of possible values for the control * @param value the initial control value */ protected EnumControl(Type type, Object[] values, Object value) { - super(type); - this.values = values; this.value = value; } - - - // METHODS - - /** ! * Sets the current value for the control. The default implementation ! * simply sets the value as indicated. If the value indicated is not ! * supported, an IllegalArgumentException is thrown. ! * Some controls require that their line be open before they can be affected ! * by setting a value. * @param value the desired new value * @throws IllegalArgumentException if the value indicated does not fall * within the allowable range */ public void setValue(Object value) { --- 24,87 ---- */ package javax.sound.sampled; /** ! * A {@code EnumControl} provides control over a set of discrete possible values ! * , each represented by an object. In a graphical user interface, such a ! * control might be represented by a set of buttons, each of which chooses one ! * value or setting. For example, a reverb control might provide several preset ! * reverberation settings, instead of providing continuously adjustable ! * parameters of the sort that would be represented by {@link FloatControl} * objects. * <p> ! * Controls that provide a choice between only two settings can often be ! * implemented instead as a {@link BooleanControl}, and controls that provide a ! * set of values along some quantifiable dimension might be implemented instead ! * as a {@code FloatControl} with a coarse resolution. However, a key feature of ! * {@code EnumControl} is that the returned values are arbitrary objects, rather ! * than numerical or boolean values. This means that each returned object can ! * provide further information. As an example, the settings of a ! * {@link EnumControl.Type#REVERB REVERB} control are instances of ! * {@link ReverbType} that can be queried for the parameter values used for each ! * setting. * * @author Kara Kytle * @since 1.3 */ public abstract class EnumControl extends Control { /** * The set of possible values. */ private Object[] values; /** * The current value. */ private Object value; /** * Constructs a new enumerated control object with the given parameters. * ! * @param type the type of control represented this enumerated control ! * object * @param values the set of possible values for the control * @param value the initial control value */ protected EnumControl(Type type, Object[] values, Object value) { super(type); this.values = values; this.value = value; } /** ! * Sets the current value for the control. The default implementation simply ! * sets the value as indicated. If the value indicated is not supported, an ! * {@code IllegalArgumentException} is thrown. Some controls require that ! * their line be open before they can be affected by setting a value. ! * * @param value the desired new value * @throws IllegalArgumentException if the value indicated does not fall * within the allowable range */ public void setValue(Object value) {
*** 110,131 **** } this.value = value; } - /** * Obtains this control's current value. * @return the current value */ public Object getValue() { return value; } - /** * Returns the set of possible values for this control. * @return the set of possible values */ public Object[] getValues() { Object[] localArray = new Object[values.length]; --- 90,111 ---- } this.value = value; } /** * Obtains this control's current value. + * * @return the current value */ public Object getValue() { return value; } /** * Returns the set of possible values for this control. + * * @return the set of possible values */ public Object[] getValues() { Object[] localArray = new Object[values.length];
*** 135,150 **** } return localArray; } - /** * Indicates whether the value specified is supported. * @param value the value for which support is queried ! * @return <code>true</code> if the value is supported, ! * otherwise <code>false</code> */ private boolean isValueSupported(Object value) { for (int i = 0; i < values.length; i++) { //$$fb 2001-07-20: Fix for bug 4400392: setValue() in ReverbControl always throws Exception --- 115,129 ---- } return localArray; } /** * Indicates whether the value specified is supported. + * * @param value the value for which support is queried ! * @return {@code true} if the value is supported, otherwise {@code false} */ private boolean isValueSupported(Object value) { for (int i = 0; i < values.length; i++) { //$$fb 2001-07-20: Fix for bug 4400392: setValue() in ReverbControl always throws Exception
*** 155,214 **** } return false; } - - - // ABSTRACT METHOD IMPLEMENTATIONS: CONTROL - - /** * Provides a string representation of the control. * @return a string description */ public String toString() { return new String(getType() + " with current value: " + getValue()); } - - // INNER CLASSES - - /** ! * An instance of the <code>EnumControl.Type</code> inner class identifies one kind of ! * enumerated control. Static instances are provided for the ! * common types. ! * ! * @see EnumControl * * @author Kara Kytle * @since 1.3 */ public static class Type extends Control.Type { - - // TYPE DEFINES - /** * Represents a control over a set of possible reverberation settings. * Each reverberation setting is described by an instance of the ! * {@link ReverbType} class. (To access these settings, ! * invoke <code>{@link EnumControl#getValues}</code> on an ! * enumerated control of type <code>REVERB</code>.) */ public static final Type REVERB = new Type("Reverb"); - - // CONSTRUCTOR - - /** * Constructs a new enumerated control type. * @param name the name of the new enumerated control type */ ! protected Type(String name) { super(name); } ! } // class Type ! ! } // class EnumControl --- 134,178 ---- } return false; } /** * Provides a string representation of the control. + * * @return a string description */ + @Override public String toString() { return new String(getType() + " with current value: " + getValue()); } /** ! * An instance of the {@code EnumControl.Type} inner class identifies one ! * kind of enumerated control. Static instances are provided for the common ! * types. * * @author Kara Kytle + * @see EnumControl * @since 1.3 */ public static class Type extends Control.Type { /** * Represents a control over a set of possible reverberation settings. * Each reverberation setting is described by an instance of the ! * {@link ReverbType} class. (To access these settings, invoke ! * {@link EnumControl#getValues} on an enumerated control of type ! * {@code REVERB}.) */ public static final Type REVERB = new Type("Reverb"); /** * Constructs a new enumerated control type. + * * @param name the name of the new enumerated control type */ ! protected Type(final String name) { super(name); } ! } ! }