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
jtulach@193
     1
package org.apidesign.samples;
jtulach@193
     2
jtulach@384
     3
// BEGIN: xmms.java.api.ext
jtulach@193
     4
// BEGIN: xmms.java.api
jtulach@384
     5
public final class XMMS {
jtulach@392
     6
    public void play() { 
jtulach@392
     7
        doPlay();
jtulach@392
     8
    }
jtulach@392
     9
    public void pause() { 
jtulach@392
    10
        doPause();
jtulach@392
    11
    }
jtulach@392
    12
    public void addToPlaylist(String file) { 
jtulach@392
    13
        doAddToPlaylist(file);
jtulach@392
    14
    }
jtulach@193
    15
// FINISH: xmms.java.api
jtulach@384
    16
    /** @since 2.0 we can also control volume */
jtulach@392
    17
    public void setVolume(int volume) { 
jtulach@392
    18
        doTuneVolume(volume);
jtulach@392
    19
    }
jtulach@384
    20
// FINISH: xmms.java.api.ext
jtulach@384
    21
    
jtulach@384
    22
    // BEGIN: xmms.java.spi.ext
jtulach@193
    23
    // BEGIN: xmms.java.spi
jtulach@193
    24
    interface Playback {
jtulach@193
    25
        public void playback(byte[] data);
jtulach@384
    26
    // FINISH: xmms.java.spi
jtulach@384
    27
        /** @since 2.0 we can also control volume */
jtulach@384
    28
        interface Volume extends Playback {
jtulach@384
    29
            public void setVolume(int volume);
jtulach@384
    30
        }
jtulach@193
    31
    }
jtulach@384
    32
    // END: xmms.java.spi.ext
jtulach@384
    33
    
jtulach@193
    34
    public void registerPlayback(Playback callback) {
jtulach@193
    35
        this.callback = callback;
jtulach@193
    36
    }
jtulach@193
    37
    private Playback callback;
jtulach@193
    38
    
jtulach@193
    39
    private void doAddToPlaylist(String file) {
jtulach@193
    40
    }
jtulach@193
    41
jtulach@193
    42
    private void doPause() {
jtulach@193
    43
    }
jtulach@193
    44
jtulach@193
    45
    private void doPlay() {
jtulach@193
    46
        callback.playback("Play!".getBytes());
jtulach@193
    47
    }
jtulach@384
    48
    // BEGIN: xmms.java.spi.instanceof
jtulach@384
    49
    private void doTuneVolume(int volume) {
jtulach@384
    50
        if (callback instanceof Playback.Volume) {
jtulach@384
    51
            Playback.Volume pv = (Playback.Volume) callback;
jtulach@384
    52
            pv.setVolume(volume);
jtulach@384
    53
        }
jtulach@384
    54
    }
jtulach@384
    55
    // END: xmms.java.spi.instanceof
jtulach@193
    56
    
jtulach@193
    57
    
jtulach@193
    58
    
jtulach@193
    59
    //
jtulach@193
    60
    // Usage
jtulach@193
    61
    // 
jtulach@193
    62
    
jtulach@193
    63
    public static void main(String[] args) {
jtulach@193
    64
        XMMS xmms = new XMMS();
jtulach@193
    65
        
jtulach@193
    66
        // BEGIN: xmms.java.use
jtulach@193
    67
        class MyCallbackPrints implements XMMS.Playback {
jtulach@193
    68
            public void playback(byte[] data) {
jtulach@193
    69
                System.out.println(new String(data));
jtulach@193
    70
            }
jtulach@193
    71
        }
jtulach@193
    72
        xmms.registerPlayback(new MyCallbackPrints());
jtulach@193
    73
        // END: xmms.java.use
jtulach@193
    74
    }
jtulach@193
    75
jtulach@193
    76
}