diff --git a/source/org/thdl/media/SmartQT4JApplet.java b/source/org/thdl/media/SmartQT4JApplet.java new file mode 100644 index 0000000..d1cfcd1 --- /dev/null +++ b/source/org/thdl/media/SmartQT4JApplet.java @@ -0,0 +1,97 @@ +package org.thdl.media; + +/*-----------------------------------------------------------------------*/ +import java.applet.*; +import java.util.*; +import java.net.*; +import javax.media.*; +import netscape.javascript.JSObject; +import java.awt.*; +import org.thdl.savant.AnnotationPlayer; + +/*-----------------------------------------------------------------------*/ +public class SmartQT4JApplet extends Applet implements AnnotationPlayer { + + static public String FIC_SOUND; + private SmartQT4JPlayer myPlayer; + +/*-----------------------------------------------------------------------*/ + public void init() { + FIC_SOUND = getParameter("Sound"); + String TAB_STARTS = getParameter("STARTS"); + String TAB_ENDS = getParameter("ENDS"); + String TAB_IDS = getParameter("IDS"); + + myPlayer = new SmartQT4JPlayer(); + myPlayer.setParentContainer(this); + myPlayer.initForSavant(convertTimesForSmartMoviePanel(TAB_STARTS), convertTimesForSmartMoviePanel(TAB_ENDS), TAB_IDS); + myPlayer.addAnnotationPlayer(this); + setLayout(new BorderLayout()); + add("Center", myPlayer); + } + public void destroy() { + //why don't you send an exception + //try { + myPlayer.destroy(); + //} catch (SmartMoviePanelException e) { + // System.out.println(e.getMessage()); + //} + } + public void start() { + try { + myPlayer.loadMovie(new URL(FIC_SOUND)); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } +/*-----------------------------------------------------------------------*/ + public boolean cmd_isRealized() { + return myPlayer.isInitialized(); + } + public String cmd_firstS() { + return myPlayer.cmd_firstS(); + } + public boolean cmd_stop() { + try { + myPlayer.cmd_stop(); + return true; + } catch (SmartMoviePanelException err) { + System.out.println(err.getMessage()); + return false; + } + } + public boolean cmd_isID(String theID) { + return myPlayer.cmd_isID(theID); + } + public void cmd_playFrom(String fromID) { + myPlayer.cmd_playFrom(fromID); + } + public void cmd_playS(String fromID) { + myPlayer.cmd_playS(fromID); + } +/*-----------------------------------------------------------------------*/ + public void startAnnotation(String id) { + sendMessage("startplay", id); + } + public void stopAnnotation(String id) { + sendMessage("endplay", id); + } + private void sendMessage(String method, String mess) { + Object args[] = { mess }; + try { + JSObject.getWindow(this).call(method, args); + } catch (Exception e) { + System.out.println("Erreur appel javascript: "+e+" "+mess); + } + } +/*-----------------------------------------------------------------------*/ + private String convertTimesForSmartMoviePanel(String s) { + StringBuffer sBuff = new StringBuffer(); + StringTokenizer sTok = new StringTokenizer(s, ","); + while (sTok.hasMoreTokens()) { + sBuff.append(String.valueOf(new Float(Float.parseFloat(sTok.nextToken()) * 1000).intValue())); + sBuff.append(','); + } + return sBuff.toString(); + } +}; \ No newline at end of file