Package ejmf.examples.customstdplayer

Source Code of ejmf.examples.customstdplayer.CustomStdPlayer

package ejmf.examples.customstdplayer;

import java.awt.Component;

import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Player;
import javax.media.Time;
import javax.swing.JButton;
import javax.swing.SwingUtilities;

import ejmf.toolkit.gui.controlpanel.AbstractControlPanel;
import ejmf.toolkit.gui.controlpanel.StandardControlPanel;
import ejmf.toolkit.install.PackageUtility;
import ejmf.toolkit.util.PlayerDriver;
import ejmf.toolkit.util.PlayerPanel;
import ejmf.toolkit.util.StateWaiter;

/**
* CustomStdPlayer eschews the default control panel
* defined for a player and builds its own using StandardControlPanel.
* It builds a control panel with only start and stop buttons.
*
* @see            ejmf.toolkit.util.gui.StandardControlPanel
* @version        1.0
* @author         Rob Gordon & Steve Talley
*/
public class CustomStdPlayer extends PlayerDriver
    implements ControllerListener {

    private StandardControlPanel   scp;
    private Component      visualComponent;

    private PlayerPanel playerpanel;
    private Player player;


    public static void main(String[] args) {
        PackageUtility.addContentPrefix("ejmf.toolkit", false);
        main(new CustomStdPlayer(), args);
    }
   
    /**
     * Creates a player adds itself as a ControllerListener,
     * builds a StandardControlPanel containing only start/stop
     * buttons.
     *
     * The stop/start buttons are created using getImageResource.
     *
     * @param          media
     *                 URL naming a media source
     */
    public void begin() {
        playerpanel = getPlayerPanel();
        player = playerpanel.getPlayer();
  StateWaiter waiter = new StateWaiter(player);

        // Add ourselves as a listener to the player's events
        player.addControllerListener(this);

        // Wait for the Player to realize, then add the components
        if (!waiter.blockingRealize()) {
      System.err.println("Can't realize Player");
      return;
  }

  Runnable r = new Runnable() {
      public void run() {

          scp = new StandardControlPanel(player,
      AbstractControlPanel.USE_START_CONTROL |
      AbstractControlPanel.USE_STOP_CONTROL);

          JButton startButton = new JButton("Start");
    scp.setStartButton(startButton);
   
    JButton stopButton = new JButton("Stop");
    stopButton.setEnabled(false);
          scp.setStopButton(stopButton);
   
          playerpanel.addControlComponent(scp);
          playerpanel.addVisualComponent();
    redraw();
      }
  };
  try {
      SwingUtilities.invokeAndWait(r);
  } catch (Exception e) {
      e.printStackTrace();
  }
  if (!waiter.blockingPrefetch()) {
      System.err.println("Can't prefetch Player");
      return;
  }
    }
 
    /**
     * This controllerUpdate function must be defined in order to
     * implement a ControllerListener interface. This
     * function will be called whenever there is a media event
     */
    public /*synchronized */ void controllerUpdate(ControllerEvent event) {
        // If we're getting messages from a dead player, just leave
        if (player == null) return;
       

        if (event instanceof EndOfMediaEvent) {
            // End of the media -- rewind
            player.setMediaTime(new Time(0));
        }
    }
}  

TOP

Related Classes of ejmf.examples.customstdplayer.CustomStdPlayer

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.