F10 now wired into custom code
authorNiki Roo <niki@nikiroo.be>
Wed, 6 Mar 2019 08:47:07 +0000 (09:47 +0100)
committerNiki Roo <niki@nikiroo.be>
Wed, 6 Mar 2019 08:47:07 +0000 (09:47 +0100)
src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java
src/be/nikiroo/fanfix/reader/tui/TuiReaderMainWindow.java
src/be/nikiroo/fanfix/reader/tui/TuiReaderStoryWindow.java

index 7dc1fd5919609b64e33e88466318f668ee9ba336..1de62a46a2a420484cf7ea8fa54efee1d83cc692 100644 (file)
@@ -10,6 +10,7 @@ import jexer.TCommand;
 import jexer.TKeypress;
 import jexer.TMessageBox;
 import jexer.TStatusBar;
+import jexer.TWidget;
 import jexer.TWindow;
 import jexer.event.TMenuEvent;
 import jexer.menu.TMenu;
@@ -37,6 +38,9 @@ class TuiReaderApplication extends TApplication implements Reader {
        public static final int MENU_LIBRARY = 1029;
        public static final int MENU_EXIT = 1030;
 
+       public static final TCommand CMD_EXIT = new TCommand(MENU_EXIT) {
+       };
+
        private Reader reader;
        private TuiReaderMainWindow main;
 
@@ -71,9 +75,9 @@ class TuiReaderApplication extends TApplication implements Reader {
 
                // TODO: open in editor + external option
                if (!meta.isImageDocument()) {
-                       @SuppressWarnings("unused")
-                       Object discard = new TuiReaderStoryWindow(this, getLibrary(), meta,
+                       TWindow window = new TuiReaderStoryWindow(this, getLibrary(), meta,
                                        getChapter());
+                       window.maximize();
                } else {
                        try {
                                openExternal(getLibrary(), meta.getLuid());
@@ -149,7 +153,7 @@ class TuiReaderApplication extends TApplication implements Reader {
         */
        public TStatusBar setStatusBar(TWindow window, String description) {
                TStatusBar statusBar = window.newStatusBar(description);
-               statusBar.addShortcutKeypress(TKeypress.kbF10, TCommand.cmExit, "Exit");
+               statusBar.addShortcutKeypress(TKeypress.kbF10, CMD_EXIT, "Exit");
                return statusBar;
 
        }
@@ -215,11 +219,7 @@ class TuiReaderApplication extends TApplication implements Reader {
                // TODO: i18n
                switch (menu.getId()) {
                case MENU_EXIT:
-                       if (messageBox("Confirmation", "(TODO: i18n) Exit application?",
-                                       TMessageBox.Type.YESNO).getResult() == TMessageBox.Result.YES) {
-                               exit(); // TODO: exit(false) for "no confirm box"
-                       }
-
+                       close(this);
                        return true;
                case MENU_IMPORT_URL:
                        String clipboard = "";
@@ -282,4 +282,33 @@ class TuiReaderApplication extends TApplication implements Reader {
        public void openExternal(BasicLibrary lib, String luid) throws IOException {
                reader.openExternal(lib, luid);
        }
+
+       /**
+        * Ask the user and, if confirmed, close the {@link TApplication} this
+        * {@link TWidget} is running on.
+        * <p>
+        * This should result in the program terminating.
+        * 
+        * @param widget
+        *            the {@link TWidget}
+        */
+       static public void close(TWidget widget) {
+               close(widget.getApplication());
+       }
+
+       /**
+        * Ask the user and, if confirmed, close the {@link TApplication}.
+        * <p>
+        * This should result in the program terminating.
+        * 
+        * @param app
+        *            the {@link TApplication}
+        */
+       static void close(TApplication app) {
+               // TODO: i18n
+               if (app.messageBox("Confirmation", "(TODO: i18n) Exit application?",
+                               TMessageBox.Type.YESNO).getResult() == TMessageBox.Result.YES) {
+                       app.exit();
+               }
+       }
 }
index a2313775a2411299d44611a88da0877ea6c6daa7..18a1223bbe70ea49a2ce9b5bddc244b0fe6c1da8 100644 (file)
@@ -8,6 +8,7 @@ import jexer.TAction;
 import jexer.TFileOpenBox.Type;
 import jexer.TList;
 import jexer.TWindow;
+import jexer.event.TCommandEvent;
 import jexer.event.TMenuEvent;
 import be.nikiroo.fanfix.Instance;
 import be.nikiroo.fanfix.data.MetaData;
@@ -162,6 +163,16 @@ class TuiReaderMainWindow extends TWindow {
                return String.format("%5s: %s", meta.getLuid(), meta.getTitle());
        }
 
+       @Override
+       public void onCommand(TCommandEvent command) {
+               if (command.getCmd().equals(TuiReaderApplication.CMD_EXIT)) {
+                       TuiReaderApplication.close(this);
+               } else {
+                       // Handle our own event if needed here
+                       super.onCommand(command);
+               }
+       }
+
        @Override
        public void onMenu(TMenuEvent menu) {
                MetaData meta = getSelectedMeta();
index d28dff5d4244213e753fade45f03fa1dc9b7fb58..f5a2bfa547d8804835667f5140d2bcd8f632a873 100644 (file)
@@ -13,6 +13,7 @@ import jexer.TLabel;
 import jexer.TTable;
 import jexer.TText;
 import jexer.TWindow;
+import jexer.event.TCommandEvent;
 import jexer.event.TResizeEvent;
 import jexer.event.TResizeEvent.Type;
 import be.nikiroo.fanfix.data.Chapter;
@@ -346,4 +347,14 @@ class TuiReaderStoryWindow extends TWindow {
        private static String desc(MetaData meta) {
                return String.format("%s: %s", meta.getLuid(), meta.getTitle());
        }
+
+       @Override
+       public void onCommand(TCommandEvent command) {
+               if (command.getCmd().equals(TuiReaderApplication.CMD_EXIT)) {
+                       TuiReaderApplication.close(this);
+               } else {
+                       // Handle our own event if needed here
+                       super.onCommand(command);
+               }
+       }
 }