javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5AudioEnvironment.java
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
5 package org.apidesign.bck2brwsr.htmlpage;
7 import net.java.html.sound.AudioClip;
8 import org.apidesign.bck2brwsr.core.JavaScriptBody;
9 import org.apidesign.html.sound.spi.AudioEnvironment;
10 import org.openide.util.lookup.ServiceProvider;
12 @ServiceProvider(service = AudioEnvironment.class)
13 public class HTML5AudioEnvironment implements AudioEnvironment {
16 public Object play(AudioClip clip, Object nativeClip) {
17 if (nativeClip == null) {
18 nativeClip = createNativeCLip(clip.getSource());
25 public Object pause(AudioClip aThis, Object nativeClip) {
26 if (nativeClip == null) {
27 return null; // only can pause a cached clip
29 pauseImpl(nativeClip);
34 public Object stop(AudioClip aThis, Object nativeClip) {
35 if (nativeClip == null) {
36 return null; // only can stop a cached clip
43 public Object setVolume(AudioClip aThis, int volume, Object cached) {
44 throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
48 public Object playFrom(AudioClip clip, int seconds, Object nativeClip) {
49 if (nativeClip == null) {
50 nativeClip = createNativeCLip(clip.getSource());
52 playFromImpl(nativeClip);
56 @JavaScriptBody(args = "nativeClip", body = "nativeClip.play()")
57 private native void playImpl(Object nativeClip);
59 @JavaScriptBody(args = "nativeClip", body = "nativeClip.pause(), nativeClip.currentTime=0;")
60 private void stopImpl(Object nativeClip) {
63 @JavaScriptBody(args = "nativeClip", body = "nativeClip.pause();")
64 private void pauseImpl(Object nativeClip) {
67 @JavaScriptBody(args = "nativeClip", body = "nativeClip.currentTime=0; nativeClip.play();")
68 private void playFromImpl(Object nativeClip) {
71 @JavaScriptBody(args = {"src"}, body = "var clip = new Audio();clip.src=src; return clip;")
72 private native Object createNativeCLip(String src);