1.1 --- a/javaquery/api/pom.xml Thu May 16 10:38:20 2013 +0200
1.2 +++ b/javaquery/api/pom.xml Tue May 28 13:26:37 2013 +0200
1.3 @@ -78,6 +78,11 @@
1.4 <artifactId>launcher.http</artifactId>
1.5 <version>${project.version}</version>
1.6 <scope>test</scope>
1.7 - </dependency>
1.8 + </dependency>
1.9 + <dependency>
1.10 + <groupId>net.java.html</groupId>
1.11 + <artifactId>sound</artifactId>
1.12 + <version>1.0-SNAPSHOT</version>
1.13 + </dependency>
1.14 </dependencies>
1.15 </project>
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5SoundEnvironment.java Tue May 28 13:26:37 2013 +0200
2.3 @@ -0,0 +1,75 @@
2.4 +/*
2.5 + * To change this template, choose Tools | Templates
2.6 + * and open the template in the editor.
2.7 + */
2.8 +package org.apidesign.bck2brwsr.htmlpage;
2.9 +
2.10 +import net.java.html.sound.AudioClip;
2.11 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
2.12 +import org.apidesign.html.sound.spi.AudioEnvironment;
2.13 +
2.14 +/**
2.15 + *
2.16 + * @author antonepple
2.17 + */
2.18 +public class HTML5AudioEnvironment implements AudioEnvironment {
2.19 +
2.20 + @Override
2.21 + public Object play(AudioClip clip, Object nativeClip) {
2.22 + if (nativeClip == null) {
2.23 + nativeClip = createNativeCLip(clip.getSource());
2.24 + }
2.25 + playImpl(nativeClip);
2.26 + return nativeClip;
2.27 + }
2.28 +
2.29 + @Override
2.30 + public Object pause(AudioClip aThis, Object nativeClip) {
2.31 + if (nativeClip == null) {
2.32 + return null; // only can pause a cached clip
2.33 + }
2.34 + pauseImpl(nativeClip);
2.35 + return nativeClip;
2.36 + }
2.37 +
2.38 + @Override
2.39 + public Object stop(AudioClip aThis, Object nativeClip) {
2.40 + if (nativeClip == null) {
2.41 + return null; // only can stop a cached clip
2.42 + }
2.43 + stopImpl(nativeClip);
2.44 + return nativeClip;
2.45 + }
2.46 +
2.47 + @Override
2.48 + public Object setVolume(AudioClip aThis, int volume, Object cached) {
2.49 + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
2.50 + }
2.51 +
2.52 + @Override
2.53 + public Object playFrom(AudioClip clip, int seconds, Object nativeClip) {
2.54 + if (nativeClip == null) {
2.55 + nativeClip = createNativeCLip(clip.getSource());
2.56 + }
2.57 + playFromImpl(nativeClip);
2.58 + return nativeClip;
2.59 + }
2.60 +
2.61 + @JavaScriptBody(args = "nativeClip", body = "nativeClip.play()")
2.62 + private native void playImpl(Object nativeClip);
2.63 +
2.64 + @JavaScriptBody(args = "nativeClip", body = "nativeClip.pause(), nativeClip.currentTime=0;")
2.65 + private void stopImpl(Object nativeClip) {
2.66 + }
2.67 +
2.68 + @JavaScriptBody(args = "nativeClip", body = "nativeClip.pause();")
2.69 + private void pauseImpl(Object nativeClip) {
2.70 + }
2.71 +
2.72 + @JavaScriptBody(args = "nativeClip", body = "nativeClip.currentTime=0; nativeClip.play();")
2.73 + private void playFromImpl(Object nativeClip) {
2.74 + }
2.75 +
2.76 + @JavaScriptBody(args = {"src"}, body = "var clip = new Audio();clip.src=src; return clip;")
2.77 + private native Object createNativeCLip(String src);
2.78 +}