samples/individualsamples/src/org/apidesign/samples/XMMS.java
author Jaroslav Tulach <jtulach@netbeans.org>
Thu, 27 Oct 2011 20:12:14 +0200
changeset 384 8232b021005d
parent 193 2b944e0980c9
child 392 a3b259705f9f
permissions -rw-r--r--
Adding an example with defining a volume
     1 package org.apidesign.samples;
     2 
     3 // BEGIN: xmms.java.api.ext
     4 // BEGIN: xmms.java.api
     5 public final class XMMS {
     6     public void play() { doPlay(); }
     7     public void pause() { doPause(); }
     8     public void addToPlaylist(String file) { doAddToPlaylist(file); }
     9 // FINISH: xmms.java.api
    10     /** @since 2.0 we can also control volume */
    11     public void setVolume(int volume) { doTuneVolume(volume); }
    12 // FINISH: xmms.java.api.ext
    13     
    14     // BEGIN: xmms.java.spi.ext
    15     // BEGIN: xmms.java.spi
    16     interface Playback {
    17         public void playback(byte[] data);
    18     // FINISH: xmms.java.spi
    19         /** @since 2.0 we can also control volume */
    20         interface Volume extends Playback {
    21             public void setVolume(int volume);
    22         }
    23     }
    24     // END: xmms.java.spi.ext
    25     
    26     public void registerPlayback(Playback callback) {
    27         this.callback = callback;
    28     }
    29     private Playback callback;
    30     
    31     private void doAddToPlaylist(String file) {
    32     }
    33 
    34     private void doPause() {
    35     }
    36 
    37     private void doPlay() {
    38         callback.playback("Play!".getBytes());
    39     }
    40     // BEGIN: xmms.java.spi.instanceof
    41     private void doTuneVolume(int volume) {
    42         if (callback instanceof Playback.Volume) {
    43             Playback.Volume pv = (Playback.Volume) callback;
    44             pv.setVolume(volume);
    45         }
    46     }
    47     // END: xmms.java.spi.instanceof
    48     
    49     
    50     
    51     //
    52     // Usage
    53     // 
    54     
    55     public static void main(String[] args) {
    56         XMMS xmms = new XMMS();
    57         
    58         // BEGIN: xmms.java.use
    59         class MyCallbackPrints implements XMMS.Playback {
    60             public void playback(byte[] data) {
    61                 System.out.println(new String(data));
    62             }
    63         }
    64         xmms.registerPlayback(new MyCallbackPrints());
    65         // END: xmms.java.use
    66     }
    67 
    68 }