package com.turtleplayer.player;
import com.turtleplayer.controller.Observer;
import com.turtleplayer.model.Track;
import java.util.HashMap;
/**
* TURTLE PLAYER
* <p/>
* Licensed under MIT & GPL
* <p/>
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
* OR OTHER DEALINGS IN THE SOFTWARE.
* <p/>
* More Information @ www.turtle-player.co.uk
*
* @author Simon Honegger (Hoene84)
*/
public abstract class ObservableOutput implements OutputAccess
{
//---------------------------------- Observable
HashMap<String, PlayerObserver> observers = new HashMap<String, PlayerObserver>();
protected void notifyTrackChanged(Track track, int lengthInMillis){
for(PlayerObserver observer : observers.values()){
observer.trackChanged(track, lengthInMillis);
}
}
protected void notifyStarted(){
for(PlayerObserver observer : observers.values()){
observer.started();
}
}
protected void notifyStopped(){
for(PlayerObserver observer : observers.values()){
observer.stopped();
}
}
public void addObserver(PlayerObserver observer)
{
observers.put(observer.getId(), observer);
}
public void removeObserver(Observer observer)
{
observers.remove(observer);
}
public interface PlayerObserver extends Observer
{
void trackChanged(Track track, int lengthInMillis);
void started();
void stopped();
}
}