// Path: src/main/java/org/zephyrsoft/sdb2/model/AddressablePart.java
// public class AddressablePart implements Addressable, Iterable<AddressableLine> {
// 	
// 	private List<AddressableLine> lines = new ArrayList<>();
// 	
// 	public int size() {
// 		return lines.size();
// 	}
// 	
// 	public boolean isEmpty() {
// 		return lines.isEmpty();
// 	}
// 	
// 	public boolean add(AddressableLine e) {
// 		return lines.add(e);
// 	}
// 	
// 	public AddressableLine get(int index) {
// 		return lines.get(index);
// 	}
// 	
// 	@Override
// 	public Integer getPosition() {
// 		if (isEmpty()) {
// 			throw new IllegalStateException("an AddressablePart must contain at least one AddressableLine");
// 		}
// 		return get(0).getPosition();
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		StringBuilder ret = new StringBuilder("PART[");
// 		boolean isFirst = true;
// 		for (AddressableLine line : lines) {
// 			if (isFirst) {
// 				isFirst = false;
// 			} else {
// 				ret.append(", ");
// 			}
// 			ret.append(line.toString());
// 		}
// 		ret.append("]");
// 		return ret.toString();
// 	}
// 	
// 	@Override
// 	public Iterator<AddressableLine> iterator() {
// 		return lines.iterator();
// 	}
// 	
// }
// 
// Path: src/main/java/org/zephyrsoft/sdb2/presenter/Presentable.java
// public class Presentable {
// 	
// 	final Song song;
// 	final String image;
// 	
// 	public Presentable(Song song, String image) {
// 		Preconditions.checkArgument(song == null || image == null, "you cant't display a song and a logo image simultaneously, it's either or!");
// 		
// 		this.song = song;
// 		this.image = image;
// 	}
// 	
// 	/**
// 	 * Get the song.
// 	 */
// 	public Song getSong() {
// 		return song;
// 	}
// 	
// 	/**
// 	 * Get the image filename.
// 	 */
// 	public String getImage() {
// 		return image;
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ((image == null) ? 0 : image.hashCode());
// 		result = prime * result + ((song == null) ? 0 : song.hashCode());
// 		return result;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		Presentable other = (Presentable) obj;
// 		if (image == null) {
// 			if (other.image != null)
// 				return false;
// 		} else if (!image.equals(other.image))
// 			return false;
// 		if (song == null) {
// 			if (other.song != null)
// 				return false;
// 		} else if (!song.equals(other.song))
// 			return false;
// 		return true;
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		return song != null
// 			? song.getTitle()
// 			: (image != null
// 				? image
// 				: "blank");
// 	}
// 	
// }
// 
// Path: src/main/java/org/zephyrsoft/sdb2/presenter/Presenter.java
// public interface Presenter extends Scroller {
// 	
// 	/**
// 	 * Set the content. For re-using an existing presenter.
// 	 */
// 	void setContent(Presentable presentable);
// 	
// 	/**
// 	 * Show the presenter.
// 	 */
// 	void showPresenter();
// 	
// 	/**
// 	 * Hide the presenter.
// 	 */
// 	void hidePresenter();
// 	
// 	/**
// 	 * Permanently dispose of the presenter. It cannot be shown again after calling this method.
// 	 */
// 	void disposePresenter();
// 	
// }


import java.util.List;
import org.apache.commons.lang3.NotImplementedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zephyrsoft.sdb2.model.AddressablePart;
import org.zephyrsoft.sdb2.presenter.Presentable;
import org.zephyrsoft.sdb2.presenter.Presenter;
/*
 * This file is part of the Song Database (SDB).
 *
 * SDB is free software: you can redistribute it and/or modify it
 * under the terms of the GNU General Public License 3.0 as published by
 * the Free Software Foundation.
 *
 * SDB is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License 3.0 for more details.
 *
 * You should have received a copy of the GNU General Public License 3.0
 * along with SDB. If not, see <http://www.gnu.org/licenses/>.
 */
package org.zephyrsoft.sdb2.remote;



/**
 * The presentation display for the lyrics.
 */
public class RemotePresenter implements Presenter {
	private static final long serialVersionUID = -2390462756699128439L;
	
	private static final Logger LOG = LoggerFactory.getLogger(RemotePresenter.class);
	
	private Presentable presentable;
	private final RemoteController remoteController;
// Path: src/main/java/org/zephyrsoft/sdb2/model/AddressablePart.java
// public class AddressablePart implements Addressable, Iterable<AddressableLine> {
// 	
// 	private List<AddressableLine> lines = new ArrayList<>();
// 	
// 	public int size() {
// 		return lines.size();
// 	}
// 	
// 	public boolean isEmpty() {
// 		return lines.isEmpty();
// 	}
// 	
// 	public boolean add(AddressableLine e) {
// 		return lines.add(e);
// 	}
// 	
// 	public AddressableLine get(int index) {
// 		return lines.get(index);
// 	}
// 	
// 	@Override
// 	public Integer getPosition() {
// 		if (isEmpty()) {
// 			throw new IllegalStateException("an AddressablePart must contain at least one AddressableLine");
// 		}
// 		return get(0).getPosition();
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		StringBuilder ret = new StringBuilder("PART[");
// 		boolean isFirst = true;
// 		for (AddressableLine line : lines) {
// 			if (isFirst) {
// 				isFirst = false;
// 			} else {
// 				ret.append(", ");
// 			}
// 			ret.append(line.toString());
// 		}
// 		ret.append("]");
// 		return ret.toString();
// 	}
// 	
// 	@Override
// 	public Iterator<AddressableLine> iterator() {
// 		return lines.iterator();
// 	}
// 	
// }
// 
// Path: src/main/java/org/zephyrsoft/sdb2/presenter/Presentable.java
// public class Presentable {
// 	
// 	final Song song;
// 	final String image;
// 	
// 	public Presentable(Song song, String image) {
// 		Preconditions.checkArgument(song == null || image == null, "you cant't display a song and a logo image simultaneously, it's either or!");
// 		
// 		this.song = song;
// 		this.image = image;
// 	}
// 	
// 	/**
// 	 * Get the song.
// 	 */
// 	public Song getSong() {
// 		return song;
// 	}
// 	
// 	/**
// 	 * Get the image filename.
// 	 */
// 	public String getImage() {
// 		return image;
// 	}
// 	
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + ((image == null) ? 0 : image.hashCode());
// 		result = prime * result + ((song == null) ? 0 : song.hashCode());
// 		return result;
// 	}
// 	
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		Presentable other = (Presentable) obj;
// 		if (image == null) {
// 			if (other.image != null)
// 				return false;
// 		} else if (!image.equals(other.image))
// 			return false;
// 		if (song == null) {
// 			if (other.song != null)
// 				return false;
// 		} else if (!song.equals(other.song))
// 			return false;
// 		return true;
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		return song != null
// 			? song.getTitle()
// 			: (image != null
// 				? image
// 				: "blank");
// 	}
// 	
// }
// 
// Path: src/main/java/org/zephyrsoft/sdb2/presenter/Presenter.java
// public interface Presenter extends Scroller {
// 	
// 	/**
// 	 * Set the content. For re-using an existing presenter.
// 	 */
// 	void setContent(Presentable presentable);
// 	
// 	/**
// 	 * Show the presenter.
// 	 */
// 	void showPresenter();
// 	
// 	/**
// 	 * Hide the presenter.
// 	 */
// 	void hidePresenter();
// 	
// 	/**
// 	 * Permanently dispose of the presenter. It cannot be shown again after calling this method.
// 	 */
// 	void disposePresenter();
// 	
// }


// Path: src/main/java/org/zephyrsoft/sdb2/remote/RemotePresenter.java
import java.util.List;
import org.apache.commons.lang3.NotImplementedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zephyrsoft.sdb2.model.AddressablePart;
import org.zephyrsoft.sdb2.presenter.Presentable;
import org.zephyrsoft.sdb2.presenter.Presenter;

/*
 * This file is part of the Song Database (SDB).
 *
 * SDB is free software: you can redistribute it and/or modify it
 * under the terms of the GNU General Public License 3.0 as published by
 * the Free Software Foundation.
 *
 * SDB is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License 3.0 for more details.
 *
 * You should have received a copy of the GNU General Public License 3.0
 * along with SDB. If not, see <http://www.gnu.org/licenses/>.
 */
package org.zephyrsoft.sdb2.remote;



/**
 * The presentation display for the lyrics.
 */
public class RemotePresenter implements Presenter {
	private static final long serialVersionUID = -2390462756699128439L;
	
	private static final Logger LOG = LoggerFactory.getLogger(RemotePresenter.class);
	
	private Presentable presentable;
	private final RemoteController remoteController;
	private final boolean showTitle;