support for kbTab in AWT
[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.
bd8d51fa
KL
23 AWT is experimental, please consider filing bugs when you encounter
24 them. The default window size for AWT is 132x40, which is set in
25 jexer.session.AWTSession.
1ac2ccb1
KL
26
27A demo application showing the existing UI controls is available via
28'java -jar jexer.jar' or 'java -Djexer.AWT=true -jar jexer.jar' .
29
30
7d4115a5
KL
31
32License
33-------
34
5e9795db
KL
35This project is licensed LGPL ("GNU Lesser General Public License",
36sometimes called the "Library GPL") version 3 or greater. You may
37freely use Jexer in both closed source (proprietary) and open source
38applications, however any changes you make to the Jexer code must be
39made available to your users.
40
41See the file LICENSE for the full license text, which includes both
42the GPL v3 and the LGPL supplemental terms.
7d4115a5
KL
43
44
30bd4abd
KL
45
46Acknowledgements
47----------------
48
49Jexer makes use of the Terminus TrueType font [made available
50here](http://files.ax86.net/terminus-ttf/) .
51
52
53
7d4115a5
KL
54Usage
55-----
56
30bd4abd
KL
57Usage patterns are still being worked on, but in general the goal will
58be to build applications somewhat as follows:
7d4115a5
KL
59
60```Java
61import jexer.*;
62
63public class MyApplication extends TApplication {
64
65 public MyApplication() {
fca67db0 66 super();
7d4115a5 67
fca67db0
KL
68 // Create standard menus for File and Window
69 addFileMenu();
70 addWindowMenu();
7d4115a5
KL
71 }
72
73 public static void main(String [] args) {
fca67db0
KL
74 MyApplication app = new MyApplication();
75 app.run();
7d4115a5
KL
76 }
77}
78```
79
87a17f3c 80See the file demos/Demo1.java for detailed examples.
30bd4abd
KL
81
82
7d4115a5 83
92554d64
KL
84Known Issues / Arbitrary Decisions
85----------------------------------
86
87Some arbitrary design decisions had to be made when either the
88obviously expected behavior did not happen or when a specification was
89ambiguous. This section describes such issues.
90
bb35d919
KL
91 TTerminalWindow
92 ---------------
93
94 - TTerminalWindow will hang on input from the remote if the
69345248
KL
95 TApplication is exited before the TTerminalWindow's process has
96 closed on its own. This is due to a Java limitation/interaction
97 between blocking reads (which is necessary to get UTF8 translation
98 correct) and file streams.
92554d64 99
bd8d51fa
KL
100 - See jexer.tterminal.ECMA48 for more specifics of terminal
101 emulation limitations.
102
92554d64 103
36338168
KL
104
105
7d4115a5
KL
106Roadmap
107-------
108
30d336cc 109Many tasks remain before calling this version 1.0:
7d4115a5 110
7d4115a5
KL
1110.0.2:
112
69345248 113- Making TMenu keyboard accelerators active/inactive
30bd4abd
KL
114- AWT:
115 - Blinking cursor
69345248 116 - Block cursor
1ac2ccb1 117- ECMA48Backend running on socket
cc99cba8
KL
118- TTreeView
119- TDirectoryList
b1b355b8 120- TFileOpen
30bd4abd
KL
121- Decide on naming convention: getText, getValue, getLabel: one or all
122 of them?
69345248
KL
123- Refactor:
124 - TKeypress:
125 - getCh() --> getChar()
126 - getAlt/getCtrl/getShift --> isAltDown / isCtrlDown / isShiftDown
127 - Other boolean getters --> isSomething
7d4115a5
KL
128
1290.0.3:
130
cf9af8df 131- TStatusBar
cc99cba8 132- TEditor
cc99cba8
KL
133
1340.0.4:
135
b1b355b8
KL
136- Bugs
137 - TSubMenu keyboard mnemonic not working
cc99cba8
KL
138 - TDirectoryList cannot be navigated only with keyboard
139 - TTreeView cannot be navigated only with keyboard
140 - RangeViolation after dragging scrollbar up/down
9edb442b 141
cc99cba8 1420.1.0:
9edb442b 143
cc99cba8
KL
144- TWindow
145 - "Smart placement" for new windows
7d4115a5
KL
146
147Wishlist features (2.0):
148
149- TTerminal
150 - Handle resize events (pass to child process)
7d4115a5
KL
151- Screen
152 - Allow complex characters in putCharXY() and detect them in putStrXY().
153- TComboBox
154- TListBox
155- TSpinner
156- TCalendar widget
157- TColorPicker widget
158- Drag and drop
159 - TEditor
160 - TField
161 - TText
162 - TTerminal
163 - TComboBox
92554d64
KL
164
165
166Screenshots
167-----------
168
bb35d919
KL
169![Several Windows Open Including A Terminal](/screenshots/screenshot1.png?raw=true "Several Windows Open Including A Terminal")
170
cf9af8df
KL
171![Yo Dawg...](/screenshots/yodawg.png?raw=true "Yo Dawg, I heard you like text windowing systems, so I ran a text windowing system inside your text windowing system so you can have a terminal in your terminal.")
172