update to more upstream-y jexer lib, fix library
authorNiki Roo <niki@nikiroo.be>
Mon, 4 Mar 2019 17:15:33 +0000 (18:15 +0100)
committerNiki Roo <niki@nikiroo.be>
Mon, 4 Mar 2019 17:15:33 +0000 (18:15 +0100)
libs/jexer-0.0.4-dev-sources.jar [new file with mode: 0644]
libs/jexer-0.0.4-niki1-sources.jar [deleted file]
src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java
src/be/nikiroo/fanfix/reader/tui/TuiReaderMainWindow.java
src/be/nikiroo/fanfix/reader/tui/TuiReaderStoryWindow.java

diff --git a/libs/jexer-0.0.4-dev-sources.jar b/libs/jexer-0.0.4-dev-sources.jar
new file mode 100644 (file)
index 0000000..1c09bd8
Binary files /dev/null and b/libs/jexer-0.0.4-dev-sources.jar differ
diff --git a/libs/jexer-0.0.4-niki1-sources.jar b/libs/jexer-0.0.4-niki1-sources.jar
deleted file mode 100644 (file)
index c213e75..0000000
Binary files a/libs/jexer-0.0.4-niki1-sources.jar and /dev/null differ
index b7109ab8d6ae55fba0e225d0604c1a6a139f89e8..6fa969b50da925f0ffe1994fa0f25dbc76faec8f 100644 (file)
@@ -34,11 +34,16 @@ class TuiReaderApplication extends TApplication implements Reader {
        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;
+       public static final int MENU_LIBRARY = 1029;
+       public static final int MENU_EXIT = 1030;
 
        private Reader reader;
        private TuiReaderMainWindow main;
 
+       private MetaData meta;
+       private String source;
+       private boolean useMeta;
+
        // start reading if meta present
        public TuiReaderApplication(Reader reader, BackendType backend)
                        throws Exception {
@@ -47,11 +52,7 @@ class TuiReaderApplication extends TApplication implements Reader {
 
                MetaData meta = getMeta();
 
-               main = new TuiReaderMainWindow(this);
-               main.setMeta(meta);
-               if (meta != null) {
-                       read();
-               }
+               showMain(meta, null, true);
        }
 
        public TuiReaderApplication(Reader reader, String source,
@@ -59,8 +60,32 @@ class TuiReaderApplication extends TApplication implements Reader {
                super(backend);
                init(reader);
 
-               main = new TuiReaderMainWindow(this);
-               main.setSource(source);
+               showMain(null, source, false);
+       }
+
+       private void showMain(MetaData meta, String source, boolean useMeta)
+                       throws IOException {
+               // TODO: thread-safety
+               this.meta = meta;
+               this.source = source;
+               this.useMeta = useMeta;
+
+               if (main != null && main.isVisible()) {
+                       main.activate();
+               } else {
+                       if (main != null) {
+                               main.close();
+                       }
+                       main = new TuiReaderMainWindow(this);
+                       if (useMeta) {
+                               main.setMeta(meta);
+                               if (meta != null) {
+                                       read();
+                               }
+                       } else {
+                               main.setSource(source);
+                       }
+               }
        }
 
        @Override
@@ -151,6 +176,8 @@ class TuiReaderApplication extends TApplication implements Reader {
                fileMenu.addItem(MENU_IMPORT_URL, "Import &URL...");
                fileMenu.addItem(MENU_IMPORT_FILE, "Import &file...");
                fileMenu.addSeparator();
+               fileMenu.addItem(MENU_LIBRARY, "Lib&rary");
+               fileMenu.addSeparator();
                fileMenu.addItem(MENU_EXIT, "E&xit");
 
                TStatusBar statusBar = fileMenu.newStatusBar("File-management "
@@ -174,7 +201,7 @@ class TuiReaderApplication extends TApplication implements Reader {
                case MENU_EXIT:
                        if (messageBox("Confirmation", "(TODO: i18n) Exit application?",
                                        TMessageBox.Type.YESNO).getResult() == TMessageBox.Result.YES) {
-                               // exit(false);
+                               exit(); // TODO: exit(false) for "no confirm box"
                        }
 
                        return true;
@@ -211,6 +238,14 @@ class TuiReaderApplication extends TApplication implements Reader {
                                e.printStackTrace();
                        }
 
+                       return true;
+               case MENU_LIBRARY:
+                       try {
+                               showMain(meta, source, useMeta);
+                       } catch (IOException e) {
+                               e.printStackTrace();
+                       }
+
                        return true;
                }
 
index 0fccfafaaab717fc33726be4c49aaaba41bf3210..1fa6d8b6e19a42b0752b8afe05c4626c89507fba 100644 (file)
@@ -39,8 +39,7 @@ class TuiReaderMainWindow extends TWindow {
        public TuiReaderMainWindow(TuiReaderApplication reader) {
                // Construct a demo window. X and Y don't matter because it will be
                // centred on screen.
-               super(reader, "Library", 0, 0, 60, 18, CENTERED | RESIZABLE
-                               | UNCLOSABLE);
+               super(reader, "Library", 0, 0, 60, 18, CENTERED | RESIZABLE);
 
                this.reader = reader;
 
@@ -87,6 +86,12 @@ class TuiReaderMainWindow extends TWindow {
                // root.addChild("child 2").addChild("sub child");
        }
 
+       @Override
+       public void onClose() {
+               setVisible(false);
+               super.onClose();
+       }
+
        /**
         * Change the source filter and display all stories matching this source.
         * 
index 51d8fa032fd9dbf8e575299c359e5cecec736761..01db6e2d7b3309043055698779a765d2b4b74945 100644 (file)
@@ -12,6 +12,7 @@ import jexer.TLabel;
 import jexer.TText;
 import jexer.TWindow;
 import jexer.event.TResizeEvent;
+import jexer.event.TResizeEvent.Type;
 import be.nikiroo.fanfix.data.Chapter;
 import be.nikiroo.fanfix.data.MetaData;
 import be.nikiroo.fanfix.data.Paragraph;
@@ -90,10 +91,10 @@ class TuiReaderStoryWindow extends TWindow {
        public void onResize(TResizeEvent resize) {
                super.onResize(resize);
 
-               // Resize the text field
-               textField.setWidth(resize.getWidth() - 2);
-               textField.setHeight(resize.getHeight() - 2);
-               textField.reflow();
+               // Resize the text field TODO: why setW/setH/reflow not enough for the
+               // scrollbars?
+               textField.onResize(new TResizeEvent(Type.WIDGET, resize.getWidth() - 2,
+                               resize.getHeight() - 2));
 
                // -3 because 0-based and 2 for borders
                int row = getHeight() - 3;
@@ -171,7 +172,7 @@ class TuiReaderStoryWindow extends TWindow {
                                }
                        }
                        textField.setText(builder.toString());
-                       textField.reflow();
+                       textField.reflowData();
                        textField.toTop();
                }
        }