/* JMF(buggigt som faaan) där man ska implementera följande för att få en fungerande media spelare. RealizeCompleteEvent. PrefetchCompleteEvent. ControllerErrorEvent. ControllerClosedEvent. */ import java.applet.*; import java.awt.*; import java.net.*; import javax.swing.*; import javax.vecmath.*; import javax.media.j3d.*; import javax.media.*; public class JMFPlayer extends JApplet implements ControllerListener { private TextArea textarea = new TextArea(2, 30); private String filen = ""; private Player spelare; private Component visualComponent = null; private Component controllerComponent = null; public void init(){ setSize(300, 300); getContentPane().setLayout(new BorderLayout()); getContentPane().add("North", textarea); try{ URL url = new URL(getDocumentBase(), getParameter("movie")); spelare = Manager.createPlayer(url); }//try catch(Exception ex){ textarea.setText(ex.getMessage()); }//catch if(spelare != null){ spelare.addControllerListener(this); textarea.setText("Laddar in fil för uppspelning ..."); spelare.realize(); }//if else{ textarea.setText("Tyvärr, det gick inte att spela vald fil."); }//else }//init //hantera olika events public synchronized void controllerUpdate(ControllerEvent e){ if (e instanceof RealizeCompleteEvent) realizeComplete(); else if (e instanceof PrefetchCompleteEvent) prefetchComplete(); else if (e instanceof ControllerErrorEvent) controllerError(); else if (e instanceof ControllerClosedEvent) controllerClosed(); }//controllerUpdate public void realizeComplete(){ visualComponent = spelare.getVisualComponent(); controllerComponent = spelare.getControlPanelComponent(); //placera ut de skapade komponenterna if(visualComponent != null) getContentPane().add("Center", visualComponent); if(controllerComponent != null) getContentPane().add("South", controllerComponent); validate(); spelare.prefetch(); }//realizeComplete //Metoden tar emot en händelse och kontrollerar vart hanteringen ska delegeras vidare. public void prefetchComplete() { textarea.setText("Klart för uppspelning!"); if(spelare.getTargetState() != Controller.Started) spelare.start(); }//prefetchComplete //felhantering där man plockar ned mediakomponenterna och städar undan. void controllerError(){ textarea.setText("Allvarligt fel!"); spelare.close(); if(visualComponent != null) remove(visualComponent); if(controllerComponent != null) remove(controllerComponent); visualComponent = null; controllerComponent = null; spelare.removeControllerListener(this); spelare = null; } //controllerError //hanterar ControllerClosedEvent public void controllerClosed(){ if(visualComponent != null) remove(visualComponent); if(controllerComponent != null) remove(controllerComponent); validate(); }//controllerClosed //döda spelare public void stop() { if(spelare != null) spelare.close(); while(spelare != null){ try{ Thread.currentThread().sleep(500); }catch(Exception ex){ textarea.setText("TRÅDTRASSEL!"); } }//while }//stop }//JMFPlayer