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 | ||
12 | ||
13 | License | |
14 | ------- | |
15 | ||
16 | This library is licensed LGPL ("GNU Lesser General Public License") | |
17 | version 3 or greater. See the file LICENSE for the full license text, | |
18 | which includes both the GPL v3 and the LGPL supplemental terms. | |
19 | ||
20 | ||
21 | Usage | |
22 | ----- | |
23 | ||
24 | The library is currently under initial development, usage patterns are | |
25 | still being worked on. Generally the goal will be to build | |
26 | applications somewhat as follows: | |
27 | ||
28 | ```Java | |
29 | import jexer.*; | |
30 | ||
31 | public class MyApplication extends TApplication { | |
32 | ||
33 | public MyApplication() { | |
05dbb28d | 34 | super(); |
7d4115a5 | 35 | |
05dbb28d KL |
36 | // Create an editor window that has support for |
37 | // copy/paste, search text, arrow keys, horizontal | |
38 | // and vertical scrollbar, etc. | |
39 | addEditor(); | |
7d4115a5 | 40 | |
05dbb28d KL |
41 | // Create standard menus for File and Window |
42 | addFileMenu(); | |
43 | addWindowMenu(); | |
7d4115a5 KL |
44 | } |
45 | ||
46 | public static void main(String [] args) { | |
05dbb28d KL |
47 | MyApplication app = new MyApplication(); |
48 | app.run(); | |
7d4115a5 KL |
49 | } |
50 | } | |
51 | ``` | |
52 | ||
53 | ||
54 | Roadmap | |
55 | ------- | |
56 | ||
57 | This is a work in progress. Many tasks remain before calling this | |
58 | version 1.0: | |
59 | ||
60 | 0.0.1: | |
61 | ||
62 | - Base classes: | |
7b5261bc KL |
63 | - TCommand use getters/setters |
64 | - TCommand.Type: switch to int so that subclasses can make more | |
65 | kinds of commands | |
66 | - TKeypress use getters/setters to make immutable | |
67 | - TKeypressEvent use getters/setters to make immutable | |
68 | - TMouseEvent use getters/setters to make immutable | |
69 | - Get a movable window on screen | |
9edb442b KL |
70 | - TWidget |
71 | - TWindow | |
7b5261bc | 72 | - TLabel |
7d4115a5 KL |
73 | |
74 | 0.0.2: | |
75 | ||
7d4115a5 | 76 | - Port remaining d-tui functionality over |
7b5261bc | 77 | - All widgets except modal (e.g. messagebox/fileopen) |
7d4115a5 KL |
78 | |
79 | 0.0.3: | |
80 | ||
7b5261bc KL |
81 | - Get modal messagebox running without fibers (use two reader threads |
82 | with syncronization, don't bother with coroutines) | |
9edb442b KL |
83 | - TEditor, fixup keyboard movement |
84 | ||
85 | 0.0.4: | |
86 | ||
7d4115a5 KL |
87 | - ECMATerminal |
88 | - Mouse 1006 mode parsing | |
7d4115a5 KL |
89 | - Bugs |
90 | - TDirectoryList cannot be navigated only with keyboard | |
91 | - TTreeView cannot be navigated only with keyboard | |
92 | - RangeViolation after dragging scrollbar up/down | |
93 | ||
94 | Wishlist features (2.0): | |
95 | ||
96 | - TTerminal | |
97 | - Handle resize events (pass to child process) | |
98 | - xterm mouse handling | |
99 | - TWindow | |
100 | - "Smart placement" for new windows | |
101 | - Screen | |
102 | - Allow complex characters in putCharXY() and detect them in putStrXY(). | |
103 | - TComboBox | |
104 | - TListBox | |
105 | - TSpinner | |
106 | - TCalendar widget | |
107 | - TColorPicker widget | |
108 | - Drag and drop | |
109 | - TEditor | |
110 | - TField | |
111 | - TText | |
112 | - TTerminal | |
113 | - TComboBox | |
114 | - AWTBackend |