/* * @(#)AtomicControlAdapter.java 1.2 02/08/21 * * Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved. */ package com.sun.media.controls; import javax.media.*; import com.sun.media.*; import java.util.Vector; import com.sun.media.controls.*; import java.awt.*; /** * An AtomicControl is one that can be treated as an individual control * and can have its own behaviour. It is a base class for other controls. */ public class AtomicControlAdapter implements AtomicControl { /************************************************************************* * VARIABLES *************************************************************************/ protected Component component = null; private Vector listeners = null; protected boolean isdefault = false; protected Control parent = null; protected boolean enabled = true; /************************************************************************* * METHODS *************************************************************************/ public AtomicControlAdapter(Component c, boolean def, Control parent) { component = c; isdefault = def; this.parent = parent; } /************************************************************************* * IMPLEMENTATION FOR AtomicControl *************************************************************************/ /** * Returns true if this control is available on the default control * panel returned for the player in question. */ public boolean isDefault() { return isdefault; } /** * Specify whether this control should be available on the control panel. * ??? */ public void setVisible(boolean visible) { // dummy } /** * Returns true if this control is available on the control panel. ??? */ public boolean getVisible() { return true; } /** * Set the enabled/disabled state of the control. Can be useful to * temporarily gray out a control due to some constraints. */ public void setEnabled(boolean enabled) { this.enabled = enabled; if (component != null) component.setEnabled(enabled); informListeners(); } /** * Returns the enabled/disabled state of the control. */ public boolean getEnabled() { return enabled; } public void setParent(Control p) { parent = p; } /** * Returns the control group to which this control belongs, if any. Otherwise * it returns null. */ public Control getParent() { return parent; } /** * Add a listener that should be informed if any state of this control * changes. */ public void addControlChangeListener(ControlChangeListener ccl) { if (listeners == null) { listeners = new Vector(); } if (ccl != null) { listeners.addElement(ccl); } } /** * Remove an already added listener. Does nothing if the listener was not * previously added. */ public void removeControlChangeListener(ControlChangeListener ccl) { if (listeners != null && ccl != null) listeners.removeElement(ccl); } public void informListeners() { if (listeners != null) { for (int i = 0; i < listeners.size(); i++) { ControlChangeListener ccl = (ControlChangeListener) listeners.elementAt(i); ccl.controlChanged( new ControlChangeEvent(this) ); } } } /** * <B> Sun specific - </B> Returns the description string for this control. */ public String getTip() { return null; } /** * <B> Sun specific - </B> * Sets the description string for this control. Should be short since it * will be displayed as a tool tip when the mouse hovers over the control * for a few seconds. */ public void setTip(String tip) { //dummy } public Component getControlComponent() { return component; } public boolean isReadOnly() { return false; } }