javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/HTML5AudioEnvironment.java
author Anton Epple <toni.epple@eppleton.de>
Tue, 28 May 2013 13:33:12 +0200
branchsound
changeset 1163 ded9a1b4a69c
parent 1162 17885c601f91
permissions -rw-r--r--
Added ServiceProvider Annotation
     1 /*
     2  * To change this template, choose Tools | Templates
     3  * and open the template in the editor.
     4  */
     5 package org.apidesign.bck2brwsr.htmlpage;
     6 
     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;
    11 
    12 @ServiceProvider(service = AudioEnvironment.class)
    13 public class HTML5AudioEnvironment implements AudioEnvironment {
    14 
    15     @Override
    16     public Object play(AudioClip clip, Object nativeClip) {
    17         if (nativeClip == null) {
    18             nativeClip = createNativeCLip(clip.getSource());
    19         }
    20         playImpl(nativeClip);
    21         return nativeClip;
    22     }
    23 
    24     @Override
    25     public Object pause(AudioClip aThis, Object nativeClip) {
    26         if (nativeClip == null) {
    27             return null; // only can pause a cached clip
    28         }
    29         pauseImpl(nativeClip);
    30         return nativeClip;
    31     }
    32 
    33     @Override
    34     public Object stop(AudioClip aThis, Object nativeClip) {
    35         if (nativeClip == null) {
    36             return null; // only can stop a cached clip
    37         }
    38         stopImpl(nativeClip);
    39         return nativeClip;
    40     }
    41 
    42     @Override
    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.
    45     }
    46 
    47     @Override
    48     public Object playFrom(AudioClip clip, int seconds, Object nativeClip) {
    49         if (nativeClip == null) {
    50             nativeClip = createNativeCLip(clip.getSource());
    51         }
    52         playFromImpl(nativeClip);
    53         return nativeClip;
    54     }
    55 
    56     @JavaScriptBody(args = "nativeClip", body = "nativeClip.play()")
    57     private native void playImpl(Object nativeClip);
    58 
    59     @JavaScriptBody(args = "nativeClip", body = "nativeClip.pause(), nativeClip.currentTime=0;")
    60     private void stopImpl(Object nativeClip) {
    61     }
    62 
    63     @JavaScriptBody(args = "nativeClip", body = "nativeClip.pause();")
    64     private void pauseImpl(Object nativeClip) {
    65     }
    66 
    67     @JavaScriptBody(args = "nativeClip", body = "nativeClip.currentTime=0; nativeClip.play();")
    68     private void playFromImpl(Object nativeClip) {
    69     }
    70 
    71     @JavaScriptBody(args = {"src"}, body = "var clip = new Audio();clip.src=src; return clip;")
    72     private native Object createNativeCLip(String src);
    73 }