package org.limewire.ui.swing.player;
import java.io.File;
import org.limewire.core.api.library.LocalFileItem;
import org.limewire.player.api.PlayerState;
import ca.odell.glazedlists.EventList;
public interface PlayerMediator {
/**
* Adds the specified listener to the list that is notified about
* mediator events.
*/
public void addMediatorListener(PlayerMediatorListener listener);
/**
* Removes the specified listener from the list that is notified about
* mediator events.
*/
public void removeMediatorListener(PlayerMediatorListener listener);
/**
* Returns the current status of the media player.
*/
public PlayerState getStatus();
/**
* Sets the active playlist to the current EventList. If the EventList
* is modified or filtered, this will be reflected in the playlist. If
* no playlist exists, this can be set to null.
*/
public void setActivePlaylist(EventList<LocalFileItem> fileList);
/**
* Returns true if shuffle mode is enabled.
*/
public boolean isShuffle();
/**
* Sets an indicator to enable shuffle mode.
*/
public void setShuffle(boolean shuffle);
/**
* Sets the volume (gain) value on a linear scale from 0.0 to 1.0.
*/
public void setVolume(double value);
/**
* @return true if a volume Control exists on this player, false otherwise.
*/
boolean hasVolumeControl();
/**
* Pauses the media player.
*/
public void pause();
/**
* Resumes the media player.
*/
public void resume();
/**
* Starts playing the specified file item in the media player.
*/
public void play(LocalFileItem localFileItem);
/**
* Starts playing the specified file within LW if it can, otherwise it
* launches natively on failure.
*/
public void playOrLaunchNatively(File file);
/**
* Seek to given point within the current file. If the media's
* length is unknown (ie. streaming audio), the seek is ignored.
*
* @param percent of the song frames to skip from begining of file
*/
public void seek(double percent);
/**
* Stops playing the current file.
*/
public void stop();
/**
* Plays the next song in the playlist.
*/
public void nextSong();
/**
* Plays the previous song in the playlist.
*/
public void prevSong();
/**
* Returns the current playing file.
*/
public File getCurrentMediaFile();
/**
* Returns true if this file is currently playing, false otherwise
*/
public boolean isPlaying(File file);
/**
* Returns true if this file is currently loaded and paused, false otherwise.
*/
public boolean isPaused(File file);
/**
* Returns true if the currently playing song is seekable.
*/
public boolean isSeekable();
/**
* Returns true if this is an audio or video file.
*/
public boolean isPlayable(File file);
}