toni@1161: /* toni@1161: * To change this template, choose Tools | Templates toni@1161: * and open the template in the editor. toni@1161: */ toni@1161: package org.apidesign.bck2brwsr.htmlpage; toni@1161: toni@1161: import net.java.html.sound.AudioClip; toni@1161: import org.apidesign.bck2brwsr.core.JavaScriptBody; toni@1161: import org.apidesign.html.sound.spi.AudioEnvironment; toni@1163: import org.openide.util.lookup.ServiceProvider; toni@1161: toni@1163: @ServiceProvider(service = AudioEnvironment.class) toni@1161: public class HTML5AudioEnvironment implements AudioEnvironment { toni@1161: toni@1161: @Override toni@1161: public Object play(AudioClip clip, Object nativeClip) { toni@1161: if (nativeClip == null) { toni@1161: nativeClip = createNativeCLip(clip.getSource()); toni@1161: } toni@1161: playImpl(nativeClip); toni@1161: return nativeClip; toni@1161: } toni@1161: toni@1161: @Override toni@1161: public Object pause(AudioClip aThis, Object nativeClip) { toni@1161: if (nativeClip == null) { toni@1161: return null; // only can pause a cached clip toni@1161: } toni@1161: pauseImpl(nativeClip); toni@1161: return nativeClip; toni@1161: } toni@1161: toni@1161: @Override toni@1161: public Object stop(AudioClip aThis, Object nativeClip) { toni@1161: if (nativeClip == null) { toni@1161: return null; // only can stop a cached clip toni@1161: } toni@1161: stopImpl(nativeClip); toni@1161: return nativeClip; toni@1161: } toni@1161: toni@1161: @Override toni@1161: public Object setVolume(AudioClip aThis, int volume, Object cached) { toni@1161: throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. toni@1161: } toni@1161: toni@1161: @Override toni@1161: public Object playFrom(AudioClip clip, int seconds, Object nativeClip) { toni@1161: if (nativeClip == null) { toni@1161: nativeClip = createNativeCLip(clip.getSource()); toni@1161: } toni@1161: playFromImpl(nativeClip); toni@1161: return nativeClip; toni@1161: } toni@1161: toni@1161: @JavaScriptBody(args = "nativeClip", body = "nativeClip.play()") toni@1161: private native void playImpl(Object nativeClip); toni@1161: toni@1161: @JavaScriptBody(args = "nativeClip", body = "nativeClip.pause(), nativeClip.currentTime=0;") toni@1161: private void stopImpl(Object nativeClip) { toni@1161: } toni@1161: toni@1161: @JavaScriptBody(args = "nativeClip", body = "nativeClip.pause();") toni@1161: private void pauseImpl(Object nativeClip) { toni@1161: } toni@1161: toni@1161: @JavaScriptBody(args = "nativeClip", body = "nativeClip.currentTime=0; nativeClip.play();") toni@1161: private void playFromImpl(Object nativeClip) { toni@1161: } toni@1161: toni@1161: @JavaScriptBody(args = {"src"}, body = "var clip = new Audio();clip.src=src; return clip;") toni@1161: private native Object createNativeCLip(String src); toni@1161: }