# HG changeset patch # User Jaroslav Tulach # Date 1319739134 -7200 # Node ID 8232b021005dfd4c1f8317f5d5c5da85f0179f90 # Parent 40a073776e5b72ab7fea34efdfd79e69fefecc1a Adding an example with defining a volume diff -r 40a073776e5b -r 8232b021005d samples/individualsamples/src/org/apidesign/samples/XMMS.java --- a/samples/individualsamples/src/org/apidesign/samples/XMMS.java Wed Oct 26 21:45:23 2011 +0200 +++ b/samples/individualsamples/src/org/apidesign/samples/XMMS.java Thu Oct 27 20:12:14 2011 +0200 @@ -1,17 +1,28 @@ package org.apidesign.samples; +// BEGIN: xmms.java.api.ext // BEGIN: xmms.java.api -public class XMMS { +public final class XMMS { public void play() { doPlay(); } public void pause() { doPause(); } public void addToPlaylist(String file) { doAddToPlaylist(file); } // FINISH: xmms.java.api - + /** @since 2.0 we can also control volume */ + public void setVolume(int volume) { doTuneVolume(volume); } +// FINISH: xmms.java.api.ext + + // BEGIN: xmms.java.spi.ext // BEGIN: xmms.java.spi interface Playback { public void playback(byte[] data); + // FINISH: xmms.java.spi + /** @since 2.0 we can also control volume */ + interface Volume extends Playback { + public void setVolume(int volume); + } } - // END: xmms.java.spi + // END: xmms.java.spi.ext + public void registerPlayback(Playback callback) { this.callback = callback; } @@ -26,6 +37,14 @@ private void doPlay() { callback.playback("Play!".getBytes()); } + // BEGIN: xmms.java.spi.instanceof + private void doTuneVolume(int volume) { + if (callback instanceof Playback.Volume) { + Playback.Volume pv = (Playback.Volume) callback; + pv.setVolume(volume); + } + } + // END: xmms.java.spi.instanceof