X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2FTuiReaderApplication.java;h=fd585092e6d449e7a02fe0bb10ee6f97c2517f9f;hb=2070ced5a252b11ae7e19be1bb2430fa8e9220d9;hp=94ecfd52104b636e6ad2a4af5bd6c77541403afb;hpb=396e924c2cf7e7a6fe41e95a6395c9f9faf401f1;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/reader/TuiReaderApplication.java b/src/be/nikiroo/fanfix/reader/TuiReaderApplication.java index 94ecfd5..fd58509 100644 --- a/src/be/nikiroo/fanfix/reader/TuiReaderApplication.java +++ b/src/be/nikiroo/fanfix/reader/TuiReaderApplication.java @@ -1,75 +1,243 @@ 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.Instance.SyserrHandler; +import be.nikiroo.fanfix.Instance.TraceHandler; 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