package be.nikiroo.fanfix.reader; import java.io.IOException; import java.util.List; import jexer.TApplication; import jexer.TApplication.BackendType; import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.data.MetaData; /** * This {@link Reader}is based upon the TUI widget library 'jexer' * (https://github.com/klamonte/jexer/) and offer, as its name suggest, a Text * User Interface. *
* It is expected to be on par with the GUI version. * * @author niki */ class TuiReader extends BasicReader { /** * Will detect the backend to use. *
* Swing is the default backend on Windows and MacOS while evreything else
* will use XTERM unless explicitly overridden by jexer.Swing =
* true or false.
*
* @return the backend to use
*/
private static BackendType guessBackendType() {
// TODO: allow a config option to force one or the other?
TApplication.BackendType backendType = TApplication.BackendType.XTERM;
if (System.getProperty("os.name").startsWith("Windows")) {
backendType = TApplication.BackendType.SWING;
}
if (System.getProperty("os.name").startsWith("Mac")) {
backendType = TApplication.BackendType.SWING;
}
if (System.getProperty("jexer.Swing") != null) {
if (System.getProperty("jexer.Swing", "false").equals("true")) {
backendType = TApplication.BackendType.SWING;
} else {
backendType = TApplication.BackendType.XTERM;
}
}
return backendType;
}
public void read(int chapter) throws IOException {
if (getStory() == null) {
throw new IOException("No story to read");
}
start(getStory().getMeta(), chapter);
}
public void browse(String source) {
start(getLibrary().getListBySource(source));
}
/**
* Start the application with the given stories.
*
* @param metas
* the stories to display
*/
private void start(List