/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package muvis.view.controllers;
import javazoom.jlgui.basicplayer.BasicPlayerException;
import muvis.Elements;
import muvis.Environment;
import muvis.audio.AudioMetadata;
import muvis.audio.MuVisAudioPlayer;
import muvis.util.Observable;
import muvis.util.Observer;
/**
*
* @author Ricardo
*/
public class MusicPlayerIndividualTrackController implements MusicPlayerControllerInterface, Observer {
private int trackId;
private boolean isPlaying;
private boolean enabled;
private MuVisAudioPlayer player;
public MusicPlayerIndividualTrackController(){
isPlaying = false;
enabled = false;
player = Environment.getEnvironmentInstance().getAudioPlayer();
Environment.getEnvironmentInstance().getAudioPlayer().registerObserver(this);
}
public void setTrackId(int trackId){
this.trackId = trackId;
}
@Override
public AudioMetadata getTrackPlayingMetadata() {
return Environment.getEnvironmentInstance().getDatabaseManager().getTrackMetadata(trackId);
}
@Override
public void playNextTrack() {
//no operation
}
@Override
public void playPreviousTrack() {
//no operation
}
@Override
public void playTrack() {
try {
if (player.isPlaying()){
player.stop();
}
player.play(Environment.getEnvironmentInstance().getDatabaseManager().getFilename(trackId));
isPlaying = true;
} catch (BasicPlayerException ex) {
ex.printStackTrace();
}
}
@Override
public void pauseTrack() {
try {
player.pause();
isPlaying = false;
} catch (BasicPlayerException ex) {
ex.printStackTrace();
}
}
@Override
public void setPlayerVolume(int value) throws BasicPlayerException {
Environment.getEnvironmentInstance().getAudioPlayer().setVolume(value);
}
@Override
public void stopTrack() {
try {
isPlaying = false;
player.stop();
} catch (BasicPlayerException ex) {
ex.printStackTrace();
} catch (Exception e){
e.printStackTrace();
}
}
@Override
public void setEnable(boolean enabled) {
this.enabled = enabled;
}
@Override
public boolean isEnabled() {
return enabled;
}
@Override
public boolean isPlaying() {
return isPlaying;
}
@Override
public void update(Observable obs, Object arg) {
if (enabled){
if (obs instanceof MuVisAudioPlayer) {
if (MuVisAudioPlayer.Event.STOPPED.equals(arg)) {
}
}
}
}
}