javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5AudioEnvironment.java
branchsound
changeset 1162 17885c601f91
parent 1161 3a1fb8e1378d
child 1163 ded9a1b4a69c
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5AudioEnvironment.java	Tue May 28 13:27:34 2013 +0200
     1.3 @@ -0,0 +1,75 @@
     1.4 +/*
     1.5 + * To change this template, choose Tools | Templates
     1.6 + * and open the template in the editor.
     1.7 + */
     1.8 +package org.apidesign.bck2brwsr.htmlpage;
     1.9 +
    1.10 +import net.java.html.sound.AudioClip;
    1.11 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
    1.12 +import org.apidesign.html.sound.spi.AudioEnvironment;
    1.13 +
    1.14 +/**
    1.15 + *
    1.16 + * @author antonepple
    1.17 + */
    1.18 +public class HTML5AudioEnvironment implements AudioEnvironment {
    1.19 +
    1.20 +    @Override
    1.21 +    public Object play(AudioClip clip, Object nativeClip) {
    1.22 +        if (nativeClip == null) {
    1.23 +            nativeClip = createNativeCLip(clip.getSource());
    1.24 +        }
    1.25 +        playImpl(nativeClip);
    1.26 +        return nativeClip;
    1.27 +    }
    1.28 +
    1.29 +    @Override
    1.30 +    public Object pause(AudioClip aThis, Object nativeClip) {
    1.31 +        if (nativeClip == null) {
    1.32 +            return null; // only can pause a cached clip
    1.33 +        }
    1.34 +        pauseImpl(nativeClip);
    1.35 +        return nativeClip;
    1.36 +    }
    1.37 +
    1.38 +    @Override
    1.39 +    public Object stop(AudioClip aThis, Object nativeClip) {
    1.40 +        if (nativeClip == null) {
    1.41 +            return null; // only can stop a cached clip
    1.42 +        }
    1.43 +        stopImpl(nativeClip);
    1.44 +        return nativeClip;
    1.45 +    }
    1.46 +
    1.47 +    @Override
    1.48 +    public Object setVolume(AudioClip aThis, int volume, Object cached) {
    1.49 +        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    1.50 +    }
    1.51 +
    1.52 +    @Override
    1.53 +    public Object playFrom(AudioClip clip, int seconds, Object nativeClip) {
    1.54 +        if (nativeClip == null) {
    1.55 +            nativeClip = createNativeCLip(clip.getSource());
    1.56 +        }
    1.57 +        playFromImpl(nativeClip);
    1.58 +        return nativeClip;
    1.59 +    }
    1.60 +
    1.61 +    @JavaScriptBody(args = "nativeClip", body = "nativeClip.play()")
    1.62 +    private native void playImpl(Object nativeClip);
    1.63 +
    1.64 +    @JavaScriptBody(args = "nativeClip", body = "nativeClip.pause(), nativeClip.currentTime=0;")
    1.65 +    private void stopImpl(Object nativeClip) {
    1.66 +    }
    1.67 +
    1.68 +    @JavaScriptBody(args = "nativeClip", body = "nativeClip.pause();")
    1.69 +    private void pauseImpl(Object nativeClip) {
    1.70 +    }
    1.71 +
    1.72 +    @JavaScriptBody(args = "nativeClip", body = "nativeClip.currentTime=0; nativeClip.play();")
    1.73 +    private void playFromImpl(Object nativeClip) {
    1.74 +    }
    1.75 +
    1.76 +    @JavaScriptBody(args = {"src"}, body = "var clip = new Audio();clip.src=src; return clip;")
    1.77 +    private native Object createNativeCLip(String src);
    1.78 +}