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