X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2FTuiReaderApplication.java;h=c1bba5a8220b49d0dfacdef1cca777a2e31ac5e8;hb=5895a95876fe63e76e726ef7fc4c97efe2ebd5b1;hp=3e9d1d77ed9be35cbb73c31a74096534cd6adb60;hpb=c1873e5678fabf306915c54f9c1736e03e027d60;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/reader/TuiReaderApplication.java b/src/be/nikiroo/fanfix/reader/TuiReaderApplication.java index 3e9d1d7..c1bba5a 100644 --- a/src/be/nikiroo/fanfix/reader/TuiReaderApplication.java +++ b/src/be/nikiroo/fanfix/reader/TuiReaderApplication.java @@ -1,75 +1,228 @@ package be.nikiroo.fanfix.reader; +import java.awt.Toolkit; +import java.awt.datatransfer.DataFlavor; import java.io.IOException; -import java.util.List; +import java.net.URL; import jexer.TApplication; +import jexer.TCommand; +import jexer.TKeypress; import jexer.TMessageBox; +import jexer.TStatusBar; +import jexer.TWindow; +import jexer.event.TMenuEvent; +import jexer.menu.TMenu; import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.data.MetaData; +import be.nikiroo.fanfix.data.Story; +import be.nikiroo.fanfix.library.BasicLibrary; +import be.nikiroo.utils.Progress; -public 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 {
+ public static final int MENU_OPEN = 1025;
+ public static final int MENU_IMPORT_URL = 1026;
+ public static final int MENU_IMPORT_FILE = 1027;
+ public static final int MENU_EXPORT = 1028;
+ public static final int MENU_EXIT = 1029;
- 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;
+ private Reader reader;
+ private TuiReaderMainWindow main;
+
+ // start reading if meta present
+ public TuiReaderApplication(Reader reader, BackendType backend)
+ throws Exception {
+ super(backend);
+ init(reader);
+
+ MetaData meta = getMeta();
+
+ main = new TuiReaderMainWindow(this);
+ main.setMeta(meta);
+ if (meta != null) {
+ read();
}
- if (System.getProperty("os.name").startsWith("Mac")) {
- backendType = TApplication.BackendType.SWING;
+ }
+
+ public TuiReaderApplication(Reader reader, String source,
+ TApplication.BackendType backend) throws Exception {
+ super(backend);
+
+ init(reader);
+
+ main = new TuiReaderMainWindow(this);
+ main.setSource(source);
+ }
+
+ @Override
+ public void read() throws IOException {
+ MetaData meta = getMeta();
+
+ if (meta == null) {
+ throw new IOException("No story to read");
}
- if (System.getProperty("jexer.Swing") != null) {
- if (System.getProperty("jexer.Swing", "false").equals("true")) {
- backendType = TApplication.BackendType.SWING;
- } else {
- backendType = TApplication.BackendType.XTERM;
+
+ // TODO: open in editor + external option
+ if (!meta.isImageDocument()) {
+ @SuppressWarnings("unused")
+ Object discard = new TuiReaderStoryWindow(this, getLibrary(), meta,
+ getChapter());
+ } else {
+ try {
+ BasicReader.openExternal(getLibrary(), meta.getLuid());
+ } catch (IOException e) {
+ messageBox("Error when trying to open the story",
+ e.getMessage(), TMessageBox.Type.OK);
}
}
- return backendType;
}
- public TuiReaderApplication(List