Commit | Line | Data |
---|---|---|
c1873e56 NR |
1 | package be.nikiroo.fanfix.reader; |
2 | ||
3 | import java.io.IOException; | |
c1873e56 | 4 | |
6322ab64 NR |
5 | import jexer.TApplication; |
6 | import jexer.TApplication.BackendType; | |
c1873e56 | 7 | import be.nikiroo.fanfix.Instance; |
c1873e56 | 8 | |
6322ab64 NR |
9 | /** |
10 | * This {@link Reader}is based upon the TUI widget library 'jexer' | |
11 | * (https://github.com/klamonte/jexer/) and offer, as its name suggest, a Text | |
12 | * User Interface. | |
13 | * <p> | |
14 | * It is expected to be on par with the GUI version. | |
15 | * | |
16 | * @author niki | |
17 | */ | |
c1873e56 | 18 | class TuiReader extends BasicReader { |
6322ab64 NR |
19 | /** |
20 | * Will detect the backend to use. | |
21 | * <p> | |
22 | * Swing is the default backend on Windows and MacOS while evreything else | |
23 | * will use XTERM unless explicitly overridden by <tt>jexer.Swing</tt> = | |
24 | * <tt>true</tt> or <tt>false</tt>. | |
25 | * | |
26 | * @return the backend to use | |
27 | */ | |
28 | private static BackendType guessBackendType() { | |
29 | // TODO: allow a config option to force one or the other? | |
30 | TApplication.BackendType backendType = TApplication.BackendType.XTERM; | |
31 | if (System.getProperty("os.name").startsWith("Windows")) { | |
32 | backendType = TApplication.BackendType.SWING; | |
33 | } | |
34 | ||
35 | if (System.getProperty("os.name").startsWith("Mac")) { | |
36 | backendType = TApplication.BackendType.SWING; | |
37 | } | |
38 | ||
39 | if (System.getProperty("jexer.Swing") != null) { | |
40 | if (System.getProperty("jexer.Swing", "false").equals("true")) { | |
41 | backendType = TApplication.BackendType.SWING; | |
42 | } else { | |
43 | backendType = TApplication.BackendType.XTERM; | |
44 | } | |
c1873e56 NR |
45 | } |
46 | ||
6322ab64 | 47 | return backendType; |
c1873e56 NR |
48 | } |
49 | ||
211f7ddb | 50 | @Override |
bc2ea776 | 51 | public void read() throws IOException { |
6322ab64 | 52 | try { |
bc2ea776 | 53 | TuiReaderApplication app = new TuiReaderApplication(this, |
6322ab64 NR |
54 | guessBackendType()); |
55 | new Thread(app).start(); | |
56 | } catch (Exception e) { | |
57 | Instance.syserr(e); | |
58 | } | |
59 | } | |
60 | ||
211f7ddb | 61 | @Override |
bc2ea776 | 62 | public void browse(String source) { |
c1873e56 | 63 | try { |
e2d017a3 | 64 | TuiReaderApplication app = new TuiReaderApplication(this, source, |
bc2ea776 | 65 | guessBackendType()); |
c1873e56 NR |
66 | new Thread(app).start(); |
67 | } catch (Exception e) { | |
68 | Instance.syserr(e); | |
69 | } | |
70 | } | |
71 | } |