update roadmap
[nikiroo-utils.git] / README.md
CommitLineData
7d4115a5
KL
1Jexer - Java Text User Interface library
2========================================
3
30bd4abd
KL
4WARNING: THIS IS ALPHA CODE!
5
6This library is intended to implement a text-based windowing system
7loosely reminiscient of Borland's [Turbo
8Vision](http://en.wikipedia.org/wiki/Turbo_Vision) library. For those
9wishing to use the actual C++ Turbo Vision library, see [Sergio
10Sigala's updated version](http://tvision.sourceforge.net/) that runs
11on many more platforms.
7d4115a5 12
1ac2ccb1
KL
13Two backends are available:
14
30bd4abd
KL
15* System.in/out to a command-line ECMA-48 / ANSI X3.64 type terminal
16 (tested on Linux + xterm). I/O is handled through terminal escape
17 sequences generated by the library itself: ncurses is not required
18 or linked to. xterm mouse tracking using UTF8 coordinates is
19 supported. This is the default backend on non-Windows platforms.
1ac2ccb1 20
30bd4abd
KL
21* Java AWT UI. This backend can be selected by setting
22 jexer.AWT=true. This is the default backend on Windows platforms.
23 AWT is VERY experimental, please consider filing bugs when you
24 encounter them.
1ac2ccb1
KL
25
26A demo application showing the existing UI controls is available via
27'java -jar jexer.jar' or 'java -Djexer.AWT=true -jar jexer.jar' .
28
29
7d4115a5
KL
30
31License
32-------
33
30bd4abd 34This project is licensed LGPL ("GNU Lesser General Public License")
7d4115a5
KL
35version 3 or greater. See the file LICENSE for the full license text,
36which includes both the GPL v3 and the LGPL supplemental terms.
37
38
30bd4abd
KL
39
40Acknowledgements
41----------------
42
43Jexer makes use of the Terminus TrueType font [made available
44here](http://files.ax86.net/terminus-ttf/) .
45
46
47
7d4115a5
KL
48Usage
49-----
50
30bd4abd
KL
51Usage patterns are still being worked on, but in general the goal will
52be to build applications somewhat as follows:
7d4115a5
KL
53
54```Java
55import jexer.*;
56
57public class MyApplication extends TApplication {
58
59 public MyApplication() {
fca67db0 60 super();
7d4115a5 61
fca67db0
KL
62 // Create standard menus for File and Window
63 addFileMenu();
64 addWindowMenu();
7d4115a5
KL
65 }
66
67 public static void main(String [] args) {
fca67db0
KL
68 MyApplication app = new MyApplication();
69 app.run();
7d4115a5
KL
70 }
71}
72```
73
87a17f3c 74See the file demos/Demo1.java for detailed examples.
30bd4abd
KL
75
76
7d4115a5 77
92554d64
KL
78Known Issues / Arbitrary Decisions
79----------------------------------
80
81Some arbitrary design decisions had to be made when either the
82obviously expected behavior did not happen or when a specification was
83ambiguous. This section describes such issues.
84
bb35d919
KL
85 TTerminalWindow
86 ---------------
87
88 - TTerminalWindow will hang on input from the remote if the
69345248
KL
89 TApplication is exited before the TTerminalWindow's process has
90 closed on its own. This is due to a Java limitation/interaction
91 between blocking reads (which is necessary to get UTF8 translation
92 correct) and file streams.
92554d64
KL
93
94
7d4115a5
KL
95Roadmap
96-------
97
30d336cc 98Many tasks remain before calling this version 1.0:
7d4115a5 99
7d4115a5
KL
1000.0.2:
101
69345248 102- Making TMenu keyboard accelerators active/inactive
30bd4abd
KL
103- AWT:
104 - Blinking cursor
69345248
KL
105 - Block cursor
106 - Fix mouse artifacts
1ac2ccb1 107- ECMA48Backend running on socket
cc99cba8
KL
108- TTreeView
109- TDirectoryList
b1b355b8 110- TFileOpen
30bd4abd
KL
111- Decide on naming convention: getText, getValue, getLabel: one or all
112 of them?
69345248
KL
113- Refactor:
114 - TKeypress:
115 - getCh() --> getChar()
116 - getAlt/getCtrl/getShift --> isAltDown / isCtrlDown / isShiftDown
117 - Other boolean getters --> isSomething
7d4115a5
KL
118
1190.0.3:
120
cc99cba8 121- TEditor
cc99cba8
KL
122
1230.0.4:
124
b1b355b8
KL
125- Bugs
126 - TSubMenu keyboard mnemonic not working
cc99cba8
KL
127 - TDirectoryList cannot be navigated only with keyboard
128 - TTreeView cannot be navigated only with keyboard
129 - RangeViolation after dragging scrollbar up/down
9edb442b 130
cc99cba8 1310.1.0:
9edb442b 132
cc99cba8
KL
133- TWindow
134 - "Smart placement" for new windows
7d4115a5
KL
135- ECMATerminal
136 - Mouse 1006 mode parsing
7d4115a5
KL
137
138Wishlist features (2.0):
139
140- TTerminal
141 - Handle resize events (pass to child process)
142 - xterm mouse handling
7d4115a5
KL
143- Screen
144 - Allow complex characters in putCharXY() and detect them in putStrXY().
145- TComboBox
146- TListBox
147- TSpinner
148- TCalendar widget
149- TColorPicker widget
150- Drag and drop
151 - TEditor
152 - TField
153 - TText
154 - TTerminal
155 - TComboBox
92554d64
KL
156
157
158Screenshots
159-----------
160
bb35d919
KL
161![Several Windows Open Including A Terminal](/screenshots/screenshot1.png?raw=true "Several Windows Open Including A Terminal")
162