## Introduction
Over the past years I had the opportunity to work with various widget
toolkit in java, among them the old AWT and Swing, the new JavaFX or out of
curiosity SWT and QtJambi. And we also find web-like widgets toolkit like JSP,JSF,JQuery,GWT...
There are many, some are dead, some are going fine, still none really slove all the simple needs I had.
- **AWT** is very limited and has no android support
- **Swing** is getting old, requires a lot of efforts to extend and has no android support
- **JavaFX** don't support OpenGL pane, has a desatrous image API, an
obscure future and has no android support
- **SWT** and **QtJambi** are not always friendly to use and require JNI bindings.
- **Web-like**... well no real layouts, messing code html/css/less/js, browser issues,
techs changing every 2years, slow and a pain to debug...
Things are always more or less the same, lucky for me I work in a domain which also
has a lot of rendering : GIS (Geographic Information System).
GIS or Maps unlike computer science are far older and have many decades of experience
in semiology and symbology. Specifications related to rendering
such as **IHO S-52**, **OGC Symbology encoding** or **ISO Portrayal Service** are way
more complex and advanced.
I used those as reference to define something new, as a
result the Unlicense-Lib widget toolkit doesn't use CSS but something
new which looks pretty much like CSS but far more efficient and adapted
for widgets, I called this new format 'Rules-Style' (files in *.rs)
which you will discover later in those tutorials.
### Hello World
Without any more waiting here is the Hello world frame code :
```
Frame frame = FrameManagers.getManager().createFrame(false);
frame.setSize(800,600);
frame.setTitle(new Chars("Hello World"));
frame.setVisible(true);
```
If you are not familiar with Unlicense-Lib, you must know that the project
do not use any API for the standard JVM, everything has been rewrite from
scratch, including 'String' which are called 'Chars' here and you will see
how this API change can be a really bonus when dealing wih internationalisation.
Widgets
-------
- [Widget](./Widget.html)
- [WLabel](./WLabel.html)
- WButton
- WTextField
- WTextArea
- WSpinner
- WSlider
- WRangeSlider
- WCheckBox
- WContainer
- WSplitPane
- WScrollPane
- WTable
- WTree
- WTreeTable
- OpenGL
Frames
------
- Frame
- Dialog
Layouts
-------
- [Layout](./Layout.html)
- AbsoluteLayout
- [BorderLayout](./BorderLayout.html)
- [GridLayout](./GridLayout.html)
- LineLayout
- PairLayout
- StackLayout
- CircularLayout
- FormLayout
Components
----------
- WPathChooser
- WColorChooser
- WDateChooser
Rules-Style
-----------
- [syntax](./Style.html)
- properties
- borders
- rules
- triggers
Internationalisation
--------------------
- Translating interfaces
Advanced
--------
- Creating a new widget
- Creating a new layout