import java.awt.*;
import java.awt.event.*;
import javax.media.*;
import javax.swing.*;
/**
* Creer le 19 nov. 2003
*
* @author ludo
*/
public class LudoMediaPlayer extends JFrame implements ControllerListener //, Runnable
{
private boolean closing = false;
private Player player = null;
private JPanel videoPanel = null;
/**
* contructeur LudoMediaPlayer
* necessite un fichier de film en argument
*
*/
public LudoMediaPlayer( String nomFilm )
{
super();
setLocation( 200, 400 );
setTitle("Ludo player ;o) ");
getContentPane().setLayout( new BorderLayout() );
// met en place la methode de sortie de laplication
addWindowListener( new WindowAdapter()
{ // la c vrai : je ne fai pas dans le detail ;o)
public void windowClosing( WindowEvent we ) { System.exit(0); }
}
);
if ( nomFilm != null)
loadMovie( nomFilm ); // charge le film
}
/**
* methode de chargement du film a partir de son url
* dans le player
*/
private void loadMovie( String movieURL )
{
if ( movieURL.indexOf( ":" ) < 3 ) movieURL = "file:" + movieURL;
try
{ // creation du player
player = Manager.createPlayer( new MediaLocator( movieURL ) );
player.addControllerListener( this ) ; // puisque quee on l implement
player.realize();
}
catch (Exception e)
{
System.out.println("Error creating player");
return;
}
}
/**
* intercep tout les evenement en provenence du player
* voir dans le package la liste complete des event et leur declencheurs... ;o)
* @see javax.media.ControllerListener#controllerUpdate(ControllerEvent)
*/
public void controllerUpdate( ControllerEvent ce )
{
if ( ce instanceof RealizeCompleteEvent )
{ // demarage de la video
if ( videoPanel == null)
{ //creation du panel de vue
videoPanel = new JPanel();
videoPanel.setLayout( new BorderLayout() );
getContentPane().add( videoPanel, BorderLayout.CENTER );
}
else
videoPanel.removeAll();
// obtention du composent restituan l image en provenence du player
Component vis = player.getVisualComponent();
if ( vis != null )
{ // si valide alors on la met ds notre vue
videoPanel.add( vis, BorderLayout.CENTER );
videoPanel.setVisible(true);
this.pack(); // resize la taille en fct de la taille du film
}
player.start(); // lance la video
}
else if ( ce instanceof EndOfMediaEvent )
{
if (player != null)
{ // rembobine le film
player.setMediaTime(new Time(0));
if (player.getTargetState() < Player.Started)
player.prefetch();
// relance le film
player.start();
}
}
}
public static void main( String[] args )
{ // reclame l URL d un film : AVI , MPG ...
new LudoMediaPlayer( args[ 0 ] ).setVisible( true );
}
}