X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2Ftui%2FTuiReaderApplication.java;h=89034e485c5f9b6ff79f3d1d4b40c8994e505956;hb=11758a0f1c8c84aaba28fea5b7d9baf4c8dc7cbd;hp=6fa969b50da925f0ffe1994fa0f25dbc76faec8f;hpb=4f66bfa85209c2c1683f938df9b43fa2924b351e;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java b/src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java index 6fa969b..89034e4 100644 --- a/src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java +++ b/src/be/nikiroo/fanfix/reader/tui/TuiReaderApplication.java @@ -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; @@ -50,9 +54,7 @@ class TuiReaderApplication extends TApplication implements Reader { super(backend); init(reader); - MetaData meta = getMeta(); - - showMain(meta, null, true); + showMain(getMeta(), null, true); } public TuiReaderApplication(Reader reader, String source, @@ -63,31 +65,6 @@ class TuiReaderApplication extends TApplication implements Reader { 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 public void read() throws IOException { MetaData meta = getMeta(); @@ -98,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()); @@ -161,6 +138,52 @@ class TuiReaderApplication extends TApplication implements Reader { reader.setChapter(chapter); } + /** + * Set the default status bar when this window appear. + *

+ * Some shortcuts are always visible, and will be put here. + *

+ * Note that shortcuts placed this way on menu won't work unless the menu + * also implement them. + * + * @param window + * the new window or menu on screen + * @param description + * the description to show on the status ba + */ + public TStatusBar setStatusBar(TWindow window, String description) { + TStatusBar statusBar = window.newStatusBar(description); + statusBar.addShortcutKeypress(TKeypress.kbF10, CMD_EXIT, "Exit"); + return statusBar; + + } + + 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); + } + main.maximize(); + } + } + private void init(Reader reader) { this.reader = reader; @@ -180,10 +203,8 @@ class TuiReaderApplication extends TApplication implements Reader { fileMenu.addSeparator(); fileMenu.addItem(MENU_EXIT, "E&xit"); - TStatusBar statusBar = fileMenu.newStatusBar("File-management " + setStatusBar(fileMenu, "File-management " + "commands (Open, Save, Print, etc.)"); - // TODO: doesn't actually work: - statusBar.addShortcutKeypress(TKeypress.kbF10, TCommand.cmExit, "Exit"); // TODO: Edit: re-download, delete @@ -199,11 +220,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 = ""; @@ -266,4 +283,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. + *

+ * 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}. + *

+ * 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(); + } + } }