Package net.sf.fmj.ejmf.toolkit.gui.controls

Source Code of net.sf.fmj.ejmf.toolkit.gui.controls.StandardGainMeterControl$SetLevelThread

package net.sf.fmj.ejmf.toolkit.gui.controls;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.EventListener;

import javax.media.Controller;
import javax.media.GainChangeEvent;
import javax.media.GainChangeListener;
import javax.media.GainControl;
import javax.swing.SwingUtilities;


/**
* Gain meter Control for StandardControlPanel.
*/
public class StandardGainMeterControl extends AbstractGainControl
    implements GainChangeListener {

  /** Create a StandardGainMeterControl and associate it
  * with a Controller.
  * @param controller A Controller with which control is associated.
  */
    public StandardGainMeterControl(Skin skin, Controller controller) {
  super(skin, controller);
    }

  /** Create a StandardGainMeterControl */
    public StandardGainMeterControl(Skin skin) {
      super(skin);
    }

  /**
  *  This method is called when <code>setController</code>
  * is called on an AbstractListenerControl.
  * @param newController A Controller with which this control
  * is associated.
  */
    @Override
  protected void setControllerHook(Controller newController) {
  super.setControllerHook(newController);
  if (isOperational()) {
      GainControl gc = getGainControl();
      setLevel(gc.getLevel());
      setMute(gc.getMute());
      gc.addGainChangeListener(this);
  }
    }

  /**
  * Create the GainMeter Component. 
  * @return The component that acts as gain meter control.
  * @see net.sf.fmj.ejmf.toolkit.gui.controls.skins.ejmf.GainMeterButton
  */
    @Override
    protected Component createControlComponent(Skin skin) {
  return skin.createGainMeterButton();
    }

  /**
  * Set the level value for this GainMeter.
  * The input argument is a level value from the
  * Player's GainControl. It is the GainMeter's
  * responsibility to convert it to a value that
  * can be meaningfully rendered.
  *
  * @param level This argument represents a level
  * value returned by a Player's GainControl.
  */
    public void setLevel(float level) {
  ((GainMeter) getControlComponent()).setLevel(level);
   

  /**
  * Set the mute value for this GainMeter.
  *
  * @param muted If muted is true, audio signal is
  * suppressed. Otherwise, audio signal is rendered.
  */
    public void setMute(boolean muted) {
  ((GainMeter) getControlComponent()).setMute(muted);
    }

  /**
  * Return the ActionListener used to toggle
  * mute button.
  * @return An ActionListener for toggling mute state.
  */
    @Override
  protected EventListener createControlListener() {
      return new ActionListener() {
          public void actionPerformed(ActionEvent e) {
                    GainControl gc = getGainControl();
        boolean muted = gc.getMute();
        gc.setMute(!muted);
        setMute(!muted);
            }
           };
    }
     /**
       * Implements GainChangeListener. Level and mute
       * are set appropriately and the view updated for every
       * change to the GainControl on which this GainMeter is a
       * listener.
  * @param gce An GainChangeEvent triggerd by a GainControl
  * @see javax.media.GainControl 
  * @see javax.media.GainChangeEvent
  */
   public void gainChange(GainChangeEvent gce) {
       float level = gce.getSourceGainControl().getLevel();
       SwingUtilities.invokeLater(new SetLevelThread(level));
   }

  /* A convenience runnable for manipulating
  * level as displayed in GUI.
  */
   class SetLevelThread implements Runnable {
  private float level;
        public SetLevelThread(float level) {
      this.level = level;
        }
        public void run() {
      setLevel(level);
        }
   }
}
TOP

Related Classes of net.sf.fmj.ejmf.toolkit.gui.controls.StandardGainMeterControl$SetLevelThread

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.