immutable TKeypressEvent
[nikiroo-utils.git] / README.md
CommitLineData
7d4115a5
KL
1Jexer - Java Text User Interface library
2========================================
3
4This library is currently in design, but when finished it is intended
5to implement a text-based windowing system loosely reminiscient of
6Borland's [Turbo Vision](http://en.wikipedia.org/wiki/Turbo_Vision)
7library. For those wishing to use the actual C++ Turbo Vision
8library, see [Sergio Sigala's updated
9version](http://tvision.sourceforge.net/) that runs on many more
10platforms.
11
12
13License
14-------
15
16This library is licensed LGPL ("GNU Lesser General Public License")
17version 3 or greater. See the file LICENSE for the full license text,
18which includes both the GPL v3 and the LGPL supplemental terms.
19
20
21Usage
22-----
23
24The library is currently under initial development, usage patterns are
25still being worked on. Generally the goal will be to build
26applications somewhat as follows:
27
28```Java
29import jexer.*;
30
31public 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
54Roadmap
55-------
56
57This is a work in progress. Many tasks remain before calling this
58version 1.0:
59
600.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
7b5261bc
KL
66 - TMouseEvent use getters/setters to make immutable
67- Get a movable window on screen
9edb442b
KL
68 - TWidget
69 - TWindow
7b5261bc 70 - TLabel
7d4115a5
KL
71
720.0.2:
73
7d4115a5 74- Port remaining d-tui functionality over
7b5261bc 75 - All widgets except modal (e.g. messagebox/fileopen)
7d4115a5
KL
76
770.0.3:
78
7b5261bc
KL
79- Get modal messagebox running without fibers (use two reader threads
80 with syncronization, don't bother with coroutines)
9edb442b
KL
81- TEditor, fixup keyboard movement
82
830.0.4:
84
7d4115a5
KL
85- ECMATerminal
86 - Mouse 1006 mode parsing
7d4115a5
KL
87- Bugs
88 - TDirectoryList cannot be navigated only with keyboard
89 - TTreeView cannot be navigated only with keyboard
90 - RangeViolation after dragging scrollbar up/down
91
92Wishlist features (2.0):
93
94- TTerminal
95 - Handle resize events (pass to child process)
96 - xterm mouse handling
97- TWindow
98 - "Smart placement" for new windows
99- Screen
100 - Allow complex characters in putCharXY() and detect them in putStrXY().
101- TComboBox
102- TListBox
103- TSpinner
104- TCalendar widget
105- TColorPicker widget
106- Drag and drop
107 - TEditor
108 - TField
109 - TText
110 - TTerminal
111 - TComboBox
112- AWTBackend