package de.zigapeda.flowspring.player;
import uk.co.caprica.vlcj.binding.internal.libvlc_media_t;
import uk.co.caprica.vlcj.binding.internal.libvlc_state_t;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.player.MediaPlayer;
import uk.co.caprica.vlcj.player.MediaPlayerEventListener;
import de.zigapeda.flowspring.Main;
import de.zigapeda.flowspring.data.PlaylistTrack;
import de.zigapeda.flowspring.gui.Playlist;
import de.zigapeda.flowspring.gui.Progressbar;
public class PlayerController implements MediaPlayerEventListener {
private Progressbar progressbar;
private Playlist playlist;
private Integer bytelength;
private String audioformat;
private long milliseconds;
private EmbeddedMediaPlayerComponent empc;
public PlayerController(Progressbar progressbar, Playlist playlist, EmbeddedMediaPlayerComponent empc) {
this.progressbar = progressbar;
this.playlist = playlist;
this.empc = empc;
this.empc.getMediaPlayer().addMediaPlayerEventListener(this);
}
public void play() {
if(this.empc.getMediaPlayer().getMediaPlayerState() == libvlc_state_t.libvlc_NothingSpecial
|| this.empc.getMediaPlayer().getMediaPlayerState() == libvlc_state_t.libvlc_Ended
|| this.empc.getMediaPlayer().getMediaPlayerState() == libvlc_state_t.libvlc_Stopped) {
PlaylistTrack plt = this.playlist.getCurrent();
if(plt != null) {
this.empc.getMediaPlayer().playMedia(plt.getPath());
Main.getWindow().setPlaybuttonpause(true);
} else {
Main.getWindow().setPlaybuttonpause(false);
}
Main.getWindow().setTitle("flowspring - [" + plt.toString() + "]");
} else if(this.empc.getMediaPlayer().getMediaPlayerState() == libvlc_state_t.libvlc_Playing) {
this.empc.getMediaPlayer().pause();
Main.getWindow().setPlaybuttonpause(false);
} else if(this.empc.getMediaPlayer().getMediaPlayerState() == libvlc_state_t.libvlc_Paused) {
this.empc.getMediaPlayer().play();
Main.getWindow().setPlaybuttonpause(true);
}
}
public void stop() {
this.empc.getMediaPlayer().stop();
Main.getWindow().setPlaybuttonpause(false);
Main.getWindow().setTitle("flowspring");
}
public boolean isStopped() {
if(this.empc.getMediaPlayer().getMediaPlayerState() == libvlc_state_t.libvlc_NothingSpecial
|| this.empc.getMediaPlayer().getMediaPlayerState() == libvlc_state_t.libvlc_Ended
|| this.empc.getMediaPlayer().getMediaPlayerState() == libvlc_state_t.libvlc_Stopped) {
return true;
}
return false;
}
public void next() {
this.empc.getMediaPlayer().stop();
PlaylistTrack plt = this.playlist.getNext(false);
if(plt != null) {
this.empc.getMediaPlayer().playMedia(plt.getPath());
Main.getWindow().setPlaybuttonpause(true);
} else {
Main.getWindow().setPlaybuttonpause(false);
}
}
public void previous() {
this.empc.getMediaPlayer().stop();
PlaylistTrack plt = this.playlist.getPrevious();
if(plt != null) {
this.empc.getMediaPlayer().playMedia(plt.getPath());
Main.getWindow().setPlaybuttonpause(true);
} else {
Main.getWindow().setPlaybuttonpause(false);
}
}
public void seek(float percent) {
this.empc.getMediaPlayer().setPosition(percent);
}
public void setGain(int gain) {
this.empc.getMediaPlayer().setVolume(gain);
}
@Override
public void backward(MediaPlayer arg0) {
// TODO Auto-generated method stub
}
@Override
public void buffering(MediaPlayer arg0, float arg1) {
// TODO Auto-generated method stub
}
@Override
public void endOfSubItems(MediaPlayer arg0) {
// TODO Auto-generated method stub
}
@Override
public void error(MediaPlayer arg0) {
// TODO Auto-generated method stub
System.out.println("vlc error event");
}
@Override
public void finished(MediaPlayer arg0) {
PlaylistTrack plt = this.playlist.getNext(true);
if(plt != null) {
this.empc.getMediaPlayer().playMedia(plt.getPath());
} else {
Main.getWindow().setPlaybuttonpause(false);
}
}
@Override
public void forward(MediaPlayer arg0) {
// TODO Auto-generated method stub
}
@Override
public void lengthChanged(MediaPlayer arg0, long arg1) {
// TODO Auto-generated method stub
}
@Override
public void mediaChanged(MediaPlayer arg0, libvlc_media_t arg1, String arg2) {
// TODO Auto-generated method stub
}
@Override
public void mediaDurationChanged(MediaPlayer arg0, long arg1) {
// TODO Auto-generated method stub
}
@Override
public void mediaFreed(MediaPlayer arg0) {
// TODO Auto-generated method stub
}
@Override
public void mediaMetaChanged(MediaPlayer arg0, int arg1) {
// TODO Auto-generated method stub
System.out.println("media meta changed");
}
@Override
public void mediaParsedChanged(MediaPlayer arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void mediaStateChanged(MediaPlayer arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void mediaSubItemAdded(MediaPlayer arg0, libvlc_media_t arg1) {
// TODO Auto-generated method stub
}
@Override
public void newMedia(MediaPlayer arg0) {
// TODO Auto-generated method stub
}
@Override
public void opening(MediaPlayer arg0) {
// TODO Auto-generated method stub
}
@Override
public void pausableChanged(MediaPlayer arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void paused(MediaPlayer arg0) {
// TODO Auto-generated method stub
}
@Override
public void playing(MediaPlayer arg0) {
this.progressbar.setDuration(arg0.getLength());
}
@Override
public void positionChanged(MediaPlayer arg0, float arg1) {
this.progressbar.setProgress(arg0.getPosition());
}
@Override
public void seekableChanged(MediaPlayer arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void snapshotTaken(MediaPlayer arg0, String arg1) {
// TODO Auto-generated method stub
}
@Override
public void stopped(MediaPlayer arg0) {
// TODO Auto-generated method stub
}
@Override
public void subItemFinished(MediaPlayer arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void subItemPlayed(MediaPlayer arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void timeChanged(MediaPlayer arg0, long arg1) {
// TODO Auto-generated method stub
}
@Override
public void titleChanged(MediaPlayer arg0, int arg1) {
// TODO Auto-generated method stub
System.out.println("title changed");
}
@Override
public void videoOutput(MediaPlayer arg0, int arg1) {
// TODO Auto-generated method stub
}
}