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 {
MetaData meta = getMeta();
- main = new TuiReaderMainWindow(this);
- main.setMeta(meta);
- if (meta != null) {
- read();
- }
+ showMain(meta, null, true);
}
public TuiReaderApplication(Reader reader, String source,
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
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 "
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;
e.printStackTrace();
}
+ return true;
+ case MENU_LIBRARY:
+ try {
+ showMain(meta, source, useMeta);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
return true;
}
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;
// 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.
*
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;
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;
}
}
textField.setText(builder.toString());
- textField.reflow();
+ textField.reflowData();
textField.toTop();
}
}