javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5AudioEnvironment.java
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 +}