clarify license
[fanfix.git] / README.md
... / ...
CommitLineData
1Jexer - Java Text User Interface library
2========================================
3
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.
12
13Two backends are available:
14
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.
20
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 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.
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
31
32License
33-------
34
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.
43
44
45
46Acknowledgements
47----------------
48
49Jexer makes use of the Terminus TrueType font [made available
50here](http://files.ax86.net/terminus-ttf/) .
51
52
53
54Usage
55-----
56
57Usage patterns are still being worked on, but in general the goal will
58be to build applications somewhat as follows:
59
60```Java
61import jexer.*;
62
63public class MyApplication extends TApplication {
64
65 public MyApplication() {
66 super();
67
68 // Create standard menus for File and Window
69 addFileMenu();
70 addWindowMenu();
71 }
72
73 public static void main(String [] args) {
74 MyApplication app = new MyApplication();
75 app.run();
76 }
77}
78```
79
80See the file demos/Demo1.java for detailed examples.
81
82
83
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
91 TTerminalWindow
92 ---------------
93
94 - TTerminalWindow will hang on input from the remote if the
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.
99
100 - See jexer.tterminal.ECMA48 for more specifics of terminal
101 emulation limitations.
102
103
104Roadmap
105-------
106
107Many tasks remain before calling this version 1.0:
108
1090.0.2:
110
111- Making TMenu keyboard accelerators active/inactive
112- AWT:
113 - Blinking cursor
114 - Handle kbTab (disable focus traversal BS)
115 - Block cursor
116- ECMA48Backend running on socket
117- TTreeView
118- TDirectoryList
119- TFileOpen
120- Decide on naming convention: getText, getValue, getLabel: one or all
121 of them?
122- Refactor:
123 - TKeypress:
124 - getCh() --> getChar()
125 - getAlt/getCtrl/getShift --> isAltDown / isCtrlDown / isShiftDown
126 - Other boolean getters --> isSomething
127
1280.0.3:
129
130- TEditor
131
1320.0.4:
133
134- Bugs
135 - TSubMenu keyboard mnemonic not working
136 - TDirectoryList cannot be navigated only with keyboard
137 - TTreeView cannot be navigated only with keyboard
138 - RangeViolation after dragging scrollbar up/down
139
1400.1.0:
141
142- TWindow
143 - "Smart placement" for new windows
144
145Wishlist features (2.0):
146
147- TTerminal
148 - Handle resize events (pass to child process)
149- Screen
150 - Allow complex characters in putCharXY() and detect them in putStrXY().
151- TComboBox
152- TListBox
153- TSpinner
154- TCalendar widget
155- TColorPicker widget
156- Drag and drop
157 - TEditor
158 - TField
159 - TText
160 - TTerminal
161 - TComboBox
162
163
164Screenshots
165-----------
166
167![Several Windows Open Including A Terminal](/screenshots/screenshot1.png?raw=true "Several Windows Open Including A Terminal")
168