1.1 --- a/samples/individualsamples/src/org/apidesign/samples/XMMS.java Wed Oct 26 21:45:23 2011 +0200
1.2 +++ b/samples/individualsamples/src/org/apidesign/samples/XMMS.java Thu Oct 27 20:12:14 2011 +0200
1.3 @@ -1,17 +1,28 @@
1.4 package org.apidesign.samples;
1.5
1.6 +// BEGIN: xmms.java.api.ext
1.7 // BEGIN: xmms.java.api
1.8 -public class XMMS {
1.9 +public final class XMMS {
1.10 public void play() { doPlay(); }
1.11 public void pause() { doPause(); }
1.12 public void addToPlaylist(String file) { doAddToPlaylist(file); }
1.13 // FINISH: xmms.java.api
1.14 -
1.15 + /** @since 2.0 we can also control volume */
1.16 + public void setVolume(int volume) { doTuneVolume(volume); }
1.17 +// FINISH: xmms.java.api.ext
1.18 +
1.19 + // BEGIN: xmms.java.spi.ext
1.20 // BEGIN: xmms.java.spi
1.21 interface Playback {
1.22 public void playback(byte[] data);
1.23 + // FINISH: xmms.java.spi
1.24 + /** @since 2.0 we can also control volume */
1.25 + interface Volume extends Playback {
1.26 + public void setVolume(int volume);
1.27 + }
1.28 }
1.29 - // END: xmms.java.spi
1.30 + // END: xmms.java.spi.ext
1.31 +
1.32 public void registerPlayback(Playback callback) {
1.33 this.callback = callback;
1.34 }
1.35 @@ -26,6 +37,14 @@
1.36 private void doPlay() {
1.37 callback.playback("Play!".getBytes());
1.38 }
1.39 + // BEGIN: xmms.java.spi.instanceof
1.40 + private void doTuneVolume(int volume) {
1.41 + if (callback instanceof Playback.Volume) {
1.42 + Playback.Volume pv = (Playback.Volume) callback;
1.43 + pv.setVolume(volume);
1.44 + }
1.45 + }
1.46 + // END: xmms.java.spi.instanceof
1.47
1.48
1.49