Package ejmf.toolkit.gui.controlpanel

Source Code of ejmf.toolkit.gui.controlpanel.AbstractControlPanel

package ejmf.toolkit.gui.controlpanel;


import java.awt.Component;
import java.awt.FlowLayout;

import javax.media.Player;
import javax.swing.BorderFactory;
import javax.swing.JPanel;

import ejmf.toolkit.controls.AbstractListenerControl;

/**
* Root class form which custom Control Panels should
* extends. AbstractControlPanel provides layout
* a collection Controls provided by AbstractControls
* reference.
* <p>
* Subclasses must supply definitions of the following methods:
* <ul>
* <li>void addComponents(int flags);
* <li>AbstractControls createControls(Player player);
* </ul>
*/

public abstract class AbstractControlPanel extends JPanel {

    /**
     *  Value for start button control.
     */
    public final static int USE_START_CONTROL =   1;
    /**
     *  Value for stop button control.
     */
    public final static int USE_STOP_CONTROL =   2;
    /**
     * Value for reverse button control.
     */
    public final static int USE_REVERSE_CONTROL =   4;
    /**
     * Value for pause button control.
     */
    public final static int USE_PAUSE_CONTROL =   8;
    /**
     * Value for volume control.
     */
    public final static int USE_GAIN_CONTROL =   16;
    /**
     * Value for fast forward control
     */
    public final static int USE_FF_CONTROL =    32;
    /**
     * Value for progress bar control.
     */
    public final static int USE_PROGRESS_CONTROL =   64;

    /**
      * Value for volume meter/mute control
      */
    public final static int USE_GAINMETER_CONTROL = 128;

    private AbstractControls    controls; 
    private Player                player;

  /**
  * Create a Control panel with those Controls identified
        * by <code>flags</code> argument associated with
        * <code>player</code>.
  * @param player Playera with which control panel is associated.
  * @param flags OR'd value of USE values that determine which
  * control buttons are displayed.
    */
    protected AbstractControlPanel(Player player, int flags) {
  setControlPanelLayout();
      setControlPanelBorder();
  this.player = player;
  controls = createControls(player);
  addComponents(flags);
    }

  /** 
  * Create a Control Panel with complete suite of Controls 
  * @param player Playera with which control panel is associated.
  */
    protected AbstractControlPanel(Player player) {
  this(player, 0xffffffff);
    }

  /**
  * Set border of control panel. Subclasses should override
  * this method if they prefer a border different than
  * EtchedBorder.
  */

    protected void setControlPanelBorder() {
  setBorder(BorderFactory.createEtchedBorder());
    }


  /**
  * Set layout for control panel.
        * Subclasses override this method to
    * change layout.
        * <p>
  * Default layout is FlowLayout.
   */
    protected void setControlPanelLayout() {
  FlowLayout flow = new FlowLayout();
  flow.setHgap(5);
  setLayout(flow);
    }

  /**
  * Add appropriate Components to Control Panel.
  * @param flags Is the bit-wise OR of some number 
  * of Control identifiers, e.g. USE_START_CONTROL.
  * @param flags OR'd value of USE values that determine which
  * control buttons are displayed.
  */
    protected abstract void addComponents(int flags);
  /**
  * Create the Controls to be displayed in the Control Panel. 
  * @param player Playera with which control panel is associated.
  */
    protected abstract AbstractControls createControls(Player player);

  /**
  * Remove all control components from the Control panel
  * container.
  */
    protected void removeControlComponents() {
  int count = getComponentCount();
  for (int i = 0; i <  count; i++) {
      remove(i);
  }
    }

  /**
  * Remove the control component identified by <code>c</code> and
  * replace it with <code>withComponent</code>.
  * <p>
  * If default layout is changed by a subclass, this method may need to
  * be overridden.
  * @param c  Existing component
  * @param withComponent New component to be installed in control panel.
  */
 
    protected void replaceControlComponent(Component c, Component withComponent)
    {
  int count = getComponentCount();
  for (int i = 0; i <  count; i++) {
      if (c == getComponent(i)) {
    replaceControlComponent(withComponent, i);
    break;
            }
   }
    }

  /**
  * Remove the control component at location <code>atIndex</code>
  * with the component named by <code>withComponent</code>.
  * <p>
  * If default layout is changed by a subclass, this method may need to
  * be overridden.
  * @param withComponent New component to be installed in control panel.
  * @param atIndex Position of component to replace.
  */
    protected void replaceControlComponent(
        Component withComponent,
        int atIndex) {
  remove(atIndex);
  add(withComponent, atIndex);
    }

  /**
  * Return Control with given name.
  */
    public AbstractListenerControl getControl(String name) {
  return controls.getControl(name);
    }

  /**
  *  Return AbstractControls managed by this AbstractControlPanel.    */ 
    protected AbstractControls getControls() {
  return controls;
    }
}
TOP

Related Classes of ejmf.toolkit.gui.controlpanel.AbstractControlPanel

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.