Add a new TUI system based upon Jexer (WIP)
[fanfix.git] / src / be / nikiroo / fanfix / reader / TuiReaderStoryWindow.java
1 package be.nikiroo.fanfix.reader;
2
3 import jexer.TApplication;
4 import jexer.TText;
5 import jexer.TWindow;
6 import jexer.event.TResizeEvent;
7 import be.nikiroo.fanfix.Instance;
8 import be.nikiroo.fanfix.data.Chapter;
9 import be.nikiroo.fanfix.data.MetaData;
10 import be.nikiroo.fanfix.data.Paragraph;
11 import be.nikiroo.fanfix.data.Story;
12
13 public class TuiReaderStoryWindow extends TWindow {
14 private MetaData meta;
15 private Story story;
16 private TText textField;
17
18 public TuiReaderStoryWindow(TApplication app, MetaData meta) {
19 super(app, desc(meta), 0, 0, 60, 18, CENTERED | RESIZABLE);
20 this.meta = meta;
21
22 // /TODO: status bar with info, buttons to change chapter << < Chapter 0
23 // : xxx.. > >> (max size for name = getWith() - X)
24
25 // TODO: show all meta info before
26
27 Chapter resume = getStory().getMeta().getResume();
28 StringBuilder text = new StringBuilder();
29 if (resume != null) {
30 // TODO: why does \n not work but \n\n do? bug in jexer?
31 text.append("Resume:\n\n "); // -> to status bar
32 for (Paragraph para : resume) {
33 text.append(para.getContent()).append("\n\n ");
34 }
35 }
36 textField = addText(text.toString(), 0, 0, getWidth(), getHeight());
37 }
38
39 @Override
40 public void onResize(TResizeEvent resize) {
41 super.onResize(resize);
42
43 // Resize the text field
44 textField.setWidth(resize.getWidth());
45 textField.setHeight(resize.getHeight());
46 textField.reflow();
47 }
48
49 private Story getStory() {
50 if (story == null) {
51 // TODO: progress bar
52 story = Instance.getLibrary().getStory(meta.getLuid(), null);
53 }
54 return story;
55 }
56
57 private static String desc(MetaData meta) {
58 return String.format("%s: %s", meta.getLuid(), meta.getTitle());
59 }
60 }