samples/individualsamples/src/org/apidesign/samples/XMMS.java
author Jaroslav Tulach <jtulach@netbeans.org>
Wed, 08 Aug 2012 22:32:39 +0200
changeset 392 a3b259705f9f
parent 384 8232b021005d
child 393 5319f085d966
permissions -rw-r--r--
Andrei: Use standard formating
     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() { 
     7         doPlay();
     8     }
     9     public void pause() { 
    10         doPause();
    11     }
    12     public void addToPlaylist(String file) { 
    13         doAddToPlaylist(file);
    14     }
    15 // FINISH: xmms.java.api
    16     /** @since 2.0 we can also control volume */
    17     public void setVolume(int volume) { 
    18         doTuneVolume(volume);
    19     }
    20 // FINISH: xmms.java.api.ext
    21     
    22     // BEGIN: xmms.java.spi.ext
    23     // BEGIN: xmms.java.spi
    24     interface Playback {
    25         public void playback(byte[] data);
    26     // FINISH: xmms.java.spi
    27         /** @since 2.0 we can also control volume */
    28         interface Volume extends Playback {
    29             public void setVolume(int volume);
    30         }
    31     }
    32     // END: xmms.java.spi.ext
    33     
    34     public void registerPlayback(Playback callback) {
    35         this.callback = callback;
    36     }
    37     private Playback callback;
    38     
    39     private void doAddToPlaylist(String file) {
    40     }
    41 
    42     private void doPause() {
    43     }
    44 
    45     private void doPlay() {
    46         callback.playback("Play!".getBytes());
    47     }
    48     // BEGIN: xmms.java.spi.instanceof
    49     private void doTuneVolume(int volume) {
    50         if (callback instanceof Playback.Volume) {
    51             Playback.Volume pv = (Playback.Volume) callback;
    52             pv.setVolume(volume);
    53         }
    54     }
    55     // END: xmms.java.spi.instanceof
    56     
    57     
    58     
    59     //
    60     // Usage
    61     // 
    62     
    63     public static void main(String[] args) {
    64         XMMS xmms = new XMMS();
    65         
    66         // BEGIN: xmms.java.use
    67         class MyCallbackPrints implements XMMS.Playback {
    68             public void playback(byte[] data) {
    69                 System.out.println(new String(data));
    70             }
    71         }
    72         xmms.registerPlayback(new MyCallbackPrints());
    73         // END: xmms.java.use
    74     }
    75 
    76 }