FileDocCategorySizeDatePackage
SimplePlayerApplet.javaAPI DocJMF 2.1.1e6589Mon May 12 12:20:34 BST 2003None

SimplePlayerApplet

public class SimplePlayerApplet extends Applet implements ControllerListener
This is a Java Applet that demonstrates how to create a simple media player with a media event listener. It will play the media clip right away and continuously loop.

Fields Summary
Player
player
Component
visualComponent
Component
controlComponent
Component
progressBar
boolean
firstTime
long
CachingSize
Panel
panel
int
controlPanelHeight
int
videoWidth
int
videoHeight
Constructors Summary
Methods Summary
voidFatal(java.lang.String s)

	// Applications will make various choices about what
	// to do here. We print a message
	System.err.println("FATAL ERROR: " + s);
	throw new Error(s); // Invoke the uncaught exception
			    // handler System.exit() is another
			    // choice.
	
    
public synchronized voidcontrollerUpdate(javax.media.ControllerEvent event)
This controllerUpdate function must be defined in order to implement a ControllerListener interface. This function will be called whenever there is a media event

	// If we're getting messages from a dead player, 
	// just leave
	if (player == null)
	    return;
	
	// When the player is Realized, get the visual 
	// and control components and add them to the Applet
	if (event instanceof RealizeCompleteEvent) {
	    if (progressBar != null) {
		panel.remove(progressBar);
		progressBar = null;
	    }

	    int width = 320;
	    int height = 0;
	    if (controlComponent == null)
		if (( controlComponent = 
		      player.getControlPanelComponent()) != null) {
		    
		    controlPanelHeight = controlComponent.getPreferredSize().height;
		    panel.add(controlComponent);
		    height += controlPanelHeight;
		}
	    if (visualComponent == null)
		if (( visualComponent =
		      player.getVisualComponent())!= null) {
		    panel.add(visualComponent);
		    Dimension videoSize = visualComponent.getPreferredSize();
		    videoWidth = videoSize.width;
		    videoHeight = videoSize.height;
		    width = videoWidth;
		    height += videoHeight;
		    visualComponent.setBounds(0, 0, videoWidth, videoHeight);
		}

	    panel.setBounds(0, 0, width, height);
	    if (controlComponent != null) {
		controlComponent.setBounds(0, videoHeight,
					   width, controlPanelHeight);
		controlComponent.invalidate();
	    }
	    
 	} else if (event instanceof CachingControlEvent) {
	    if (player.getState() > Controller.Realizing)
		return;
	    // Put a progress bar up when downloading starts, 
	    // take it down when downloading ends.
	    CachingControlEvent e = (CachingControlEvent) event;
	    CachingControl cc = e.getCachingControl();

	    // Add the bar if not already there ...
	    if (progressBar == null) {
	        if ((progressBar = cc.getControlComponent()) != null) {
		    panel.add(progressBar);
		    panel.setSize(progressBar.getPreferredSize());
		    validate();
		}
	    }
	} else if (event instanceof EndOfMediaEvent) {
	    // We've reached the end of the media; rewind and
	    // start over
	    player.setMediaTime(new Time(0));
	    player.start();
	} else if (event instanceof ControllerErrorEvent) {
	    // Tell TypicalPlayerApplet.start() to call it a day
	    player = null;
	    Fatal(((ControllerErrorEvent)event).getMessage());
        } else if (event instanceof ControllerClosedEvent) {
	    panel.removeAll();
	}
    
public voiddestroy()

	//$ System.out.println("Applet.destroy() is called");
	player.close();
    
public voidinit()
Read the applet file parameter and create the media player.


                    
       
	setLayout(null);
	panel = new Panel();
	panel.setLayout( null );
	add(panel);
	panel.setBounds(0, 0, 320, 240);

	// input file name from html param
	String mediaFile = null;
	// URL for our media file
	MediaLocator mrl = null;
	URL url = null;

	// Get the media filename info.
	// The applet tag should contain the path to the
 	// source media file, relative to the html page.
	
	if ((mediaFile = getParameter("FILE")) == null)
	    Fatal("Invalid media file parameter");

	try {
	    url = new URL(getDocumentBase(), mediaFile);
	    mediaFile = url.toExternalForm();
	} catch (MalformedURLException mue) {
	}
	
	try {
	    // Create a media locator from the file name
	    if ((mrl = new MediaLocator(mediaFile)) == null)
		Fatal("Can't build URL for " + mediaFile);

 	    // Create an instance of a player for this media
	    try {
		player = Manager.createPlayer(mrl);
	    } catch (NoPlayerException e) {
		System.out.println(e);
		Fatal("Could not create player for " + mrl);
	    }

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

	} catch (MalformedURLException e) {
	    Fatal("Invalid media file URL!");
	} catch (IOException e) {
	    Fatal("IO exception creating player for " + mrl);
	}

	// This applet assumes that its start() calls 
	// player.start(). This causes the player to become
	// realized. Once realized, the applet will get
	// the visual and control panel components and add
	// them to the Applet. These components are not added
	// during init() because they are long operations that
	// would make us appear unresposive to the user.
    
public voidstart()
Start media file playback. This function is called the first time that the Applet runs and every time the user re-enters the page.

	//$ System.out.println("Applet.start() is called");
        // Call start() to prefetch and start the player.
        if (player != null)
	    player.start();
    
public voidstop()
Stop media file playback and release resource before leaving the page.

	//$ System.out.println("Applet.stop() is called");
        if (player != null) {
            player.stop();
            player.deallocate();
        }