Commit | Line | Data |
---|---|---|
7d4115a5 KL |
1 | Jexer - Java Text User Interface library |
2 | ======================================== | |
3 | ||
4 | This library is currently in design, but when finished it is intended | |
5 | to implement a text-based windowing system loosely reminiscient of | |
6 | Borland's [Turbo Vision](http://en.wikipedia.org/wiki/Turbo_Vision) | |
7 | library. For those wishing to use the actual C++ Turbo Vision | |
8 | library, see [Sergio Sigala's updated | |
9 | version](http://tvision.sourceforge.net/) that runs on many more | |
10 | platforms. | |
11 | ||
1ac2ccb1 KL |
12 | Two backends are available: |
13 | ||
14 | * A command-line ECMA-48 / ANSI X3.64 type terminal (tested on Linux + | |
15 | xterm) via System.in and System.out. Input/output is handled | |
16 | through terminal escape sequences generated by the library itself: | |
17 | ncurses is not required or linked to. xterm mouse tracking using | |
18 | UTF8 coordinates is supported. This is the default backend. | |
19 | ||
20 | * Java Swing/AWT UI. This backend can be selected by setting | |
21 | jexer.AWT=true. | |
22 | ||
23 | A demo application showing the existing UI controls is available via | |
24 | 'java -jar jexer.jar' or 'java -Djexer.AWT=true -jar jexer.jar' . | |
25 | ||
26 | ||
7d4115a5 KL |
27 | |
28 | License | |
29 | ------- | |
30 | ||
31 | This library is licensed LGPL ("GNU Lesser General Public License") | |
32 | version 3 or greater. See the file LICENSE for the full license text, | |
33 | which includes both the GPL v3 and the LGPL supplemental terms. | |
34 | ||
35 | ||
36 | Usage | |
37 | ----- | |
38 | ||
39 | The library is currently under initial development, usage patterns are | |
40 | still being worked on. Generally the goal will be to build | |
41 | applications somewhat as follows: | |
42 | ||
43 | ```Java | |
44 | import jexer.*; | |
45 | ||
46 | public class MyApplication extends TApplication { | |
47 | ||
48 | public MyApplication() { | |
fca67db0 | 49 | super(); |
7d4115a5 | 50 | |
fca67db0 KL |
51 | // Create an editor window that has support for |
52 | // copy/paste, search text, arrow keys, horizontal | |
53 | // and vertical scrollbar, etc. | |
54 | addEditor(); | |
7d4115a5 | 55 | |
fca67db0 KL |
56 | // Create standard menus for File and Window |
57 | addFileMenu(); | |
58 | addWindowMenu(); | |
7d4115a5 KL |
59 | } |
60 | ||
61 | public static void main(String [] args) { | |
fca67db0 KL |
62 | MyApplication app = new MyApplication(); |
63 | app.run(); | |
7d4115a5 KL |
64 | } |
65 | } | |
66 | ``` | |
67 | ||
68 | ||
69 | Roadmap | |
70 | ------- | |
71 | ||
30d336cc | 72 | Many tasks remain before calling this version 1.0: |
7d4115a5 KL |
73 | |
74 | 0.0.1: | |
75 | ||
cc99cba8 | 76 | - AWTBackend |
7d4115a5 KL |
77 | |
78 | 0.0.2: | |
79 | ||
1ac2ccb1 | 80 | - ECMA48Backend running on socket |
cc99cba8 KL |
81 | - TTreeView |
82 | - TDirectoryList | |
b1b355b8 | 83 | - TFileOpen |
7d4115a5 KL |
84 | |
85 | 0.0.3: | |
86 | ||
cc99cba8 KL |
87 | - TEditor |
88 | - TTerminal | |
89 | ||
90 | 0.0.4: | |
91 | ||
b1b355b8 | 92 | - Bugs |
70f5b2bb | 93 | - Bare ESC isn't being returned immediately |
cc99cba8 | 94 | - TTimer is jittery with I/O |
b1b355b8 KL |
95 | - TSubMenu keyboard mnemonic not working |
96 | - kbDel assertion failure in TMenu (MID_CLEAR) | |
cc99cba8 KL |
97 | - TDirectoryList cannot be navigated only with keyboard |
98 | - TTreeView cannot be navigated only with keyboard | |
99 | - RangeViolation after dragging scrollbar up/down | |
b1b355b8 KL |
100 | - TEditor |
101 | - Word wrap | |
102 | - Forward/backward word | |
103 | - Search | |
104 | - Replace | |
105 | - Cut/Copy/Paste | |
9edb442b | 106 | |
cc99cba8 | 107 | 0.1.0: |
9edb442b | 108 | |
cc99cba8 KL |
109 | - TWindow |
110 | - "Smart placement" for new windows | |
7d4115a5 KL |
111 | - ECMATerminal |
112 | - Mouse 1006 mode parsing | |
7d4115a5 KL |
113 | |
114 | Wishlist features (2.0): | |
115 | ||
116 | - TTerminal | |
117 | - Handle resize events (pass to child process) | |
118 | - xterm mouse handling | |
7d4115a5 KL |
119 | - Screen |
120 | - Allow complex characters in putCharXY() and detect them in putStrXY(). | |
121 | - TComboBox | |
122 | - TListBox | |
123 | - TSpinner | |
124 | - TCalendar widget | |
125 | - TColorPicker widget | |
126 | - Drag and drop | |
127 | - TEditor | |
128 | - TField | |
129 | - TText | |
130 | - TTerminal | |
131 | - TComboBox |