X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2FTuiReaderApplication.java;h=f95cbf369f9518ae96cd311bbd131d8dec0c0e7f;hb=211f7ddb50f68aa8a999023ef6d63d5756bdace6;hp=719f0954160fc3d90b0e1996dc7f5db744f36121;hpb=5dd985cf7d5e2bb88b07fd43e7b4a4eda4647181;p=fanfix.git
diff --git a/src/be/nikiroo/fanfix/reader/TuiReaderApplication.java b/src/be/nikiroo/fanfix/reader/TuiReaderApplication.java
index 719f095..f95cbf3 100644
--- a/src/be/nikiroo/fanfix/reader/TuiReaderApplication.java
+++ b/src/be/nikiroo/fanfix/reader/TuiReaderApplication.java
@@ -1,68 +1,132 @@
package be.nikiroo.fanfix.reader;
import java.io.IOException;
+import java.net.URL;
import java.util.List;
import jexer.TApplication;
import jexer.TMessageBox;
+import jexer.TWindow;
import be.nikiroo.fanfix.data.MetaData;
+import be.nikiroo.fanfix.data.Story;
+import be.nikiroo.fanfix.library.BasicLibrary;
+import be.nikiroo.utils.Progress;
-class TuiReaderApplication extends TApplication {
- private BasicReader reader;
+/**
+ * Manages the TUI general mode and links and manages the {@link TWindow}s.
+ *
+ * It will also enclose a {@link Reader} and simply handle the reading part
+ * differently (it will create the required sub-windows and display them).
+ *
+ * @author niki
+ */
+class TuiReaderApplication extends TApplication implements Reader {
+ private Reader reader;
- private static BackendType guessBackendType() {
- // Swing is the default backend on Windows unless explicitly
- // overridden by jexer.Swing.
- 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 TuiReaderApplication(List stories, BasicReader reader)
+ // start reading if meta present
+ public TuiReaderApplication(Reader reader, BackendType backend)
throws Exception {
- this(stories, reader, guessBackendType());
+ super(backend);
+ init(reader);
+
+ MetaData meta = getMeta();
+
+ new TuiReaderMainWindow(this).setMeta(meta);
+
+ if (meta != null) {
+ read();
+ }
}
- public TuiReaderApplication(List stories, BasicReader reader,
+ public TuiReaderApplication(List stories, Reader reader,
TApplication.BackendType backend) throws Exception {
super(backend);
+ init(reader);
- this.reader = reader;
-
- // Add the menus
- addFileMenu();
- addEditMenu();
- addWindowMenu();
- addHelpMenu();
+ new TuiReaderMainWindow(this).setMetas(stories);
+ }
- getBackend().setTitle("Fanfix");
+ @SuppressWarnings("unused")
+ @Override
+ public void read() throws IOException {
+ MetaData meta = getMeta();
- new TuiReaderMainWindow(this, stories);
- }
+ if (meta == null) {
+ throw new IOException("No story to read");
+ }
- public void open(MetaData meta) {
// TODO: open in editor + external option
if (!meta.isImageDocument()) {
- new TuiReaderStoryWindow(this, reader.getLibrary(), meta);
+ new TuiReaderStoryWindow(this, getLibrary(), meta, getChapter());
} else {
try {
- BasicReader.open(reader.getLibrary(), meta.getLuid());
+ BasicReader.openExternal(getLibrary(), meta.getLuid());
} catch (IOException e) {
messageBox("Error when trying to open the story",
e.getMessage(), TMessageBox.Type.OK);
}
}
}
+
+ @Override
+ public MetaData getMeta() {
+ return reader.getMeta();
+ }
+
+ @Override
+ public Story getStory(Progress pg) {
+ return reader.getStory(pg);
+ }
+
+ @Override
+ public BasicLibrary getLibrary() {
+ return reader.getLibrary();
+ }
+
+ @Override
+ public void setLibrary(BasicLibrary lib) {
+ reader.setLibrary(lib);
+ }
+
+ @Override
+ public void setMeta(MetaData meta) throws IOException {
+ reader.setMeta(meta);
+ }
+
+ @Override
+ public void setMeta(String luid) throws IOException {
+ reader.setMeta(luid);
+ }
+
+ @Override
+ public void setMeta(URL source, Progress pg) throws IOException {
+ reader.setMeta(source, pg);
+ }
+
+ @Override
+ public void browse(String source) {
+ reader.browse(source);
+ }
+
+ @Override
+ public int getChapter() {
+ return reader.getChapter();
+ }
+
+ @Override
+ public void setChapter(int chapter) {
+ reader.setChapter(chapter);
+ }
+
+ private void init(Reader reader) {
+ this.reader = reader;
+
+ // Add the menus
+ addFileMenu();
+ addEditMenu();
+ addWindowMenu();
+ addHelpMenu();
+
+ getBackend().setTitle("Fanfix");
+ }
}