= gui
:author: 
:revnumber: 
:revdate: 2016/03/17 20:48
:relfileprefix: ../../../
:imagesdir: ../../..
ifdef::env-github,env-browser[:outfilesuffix: .adoc]



== Atom's GUI

In Atom framework, I choose NiftyGUI because its much more features, expandable, have active developing status, and good friendly supports. 

AtomGUI is the base of AtomEditor component (of Atom framework), which in turn provide easy editing support for game objects, configs and such, just like Swing does with Java's bean and Models, but in 3D with hardware accelarated.


=== Additions

My additions for NiftyGUI:

*  Lightweight MVC
**  Template framework
**  a Groovy builder
**  a +++<abbr title="Cascading Style Sheets">CSS</abbr>+++ (Cascaded Style Sheet) implementation (for NiftyGUI), even a LESS
**  a simplier Localization framework
**  GQuery stand for “JQuery in Groovy
**  a lot of Groovy  scripting and functional sugar for NiftyGUI


=== Ideas


==== JavaScript and Web world Ideas

It's worthy to note that I come from the Web world, and I use JavaScript everyday beside of Java. That's why I always want “good things in JavaScript world show up in game dev world.

Things such like Template, +++<abbr title="Cascading Style Sheets">CSS</abbr>+++, GQuery, … corporate tightly with JME3 systems but with a lot of additional gun and gears. Make Nifty and JME3 a real powerful monkey as it should!


=== Template and CSS

Every Web framework come with a Template framework, facade and styles make the Web world colorful and attractive but +++<abbr title="HyperText Markup Language">HTML</abbr>+++ and +++<abbr title="Cascading Style Sheets">CSS</abbr>+++ is a blow-up standard!!! 

What we trying to do here is to make is compact and usable but with posibility to enhance and extend.
There are some “good template framework in the Java and JavaScript world:
- Mustache
- StringBuilder
- Veclocity

Also worth to take a look is : LESS (the scriptable +++<abbr title="Cascading Style Sheets">CSS</abbr>+++)

I see much powerful can be gained if we open this direction with the combination of : JME3 + Nifty + Groovy. That's why I experiment all this stuffs.


=== GQuery

GQuery stand for “JQuery like in Groovy. 

JQuery is a famous framework in the JavaScript and Web world. GQuery try to provide some of its features, immtimate its syntax and sugars, leverage by Groovy:

*  Query, select a Node Tree (like +++<abbr title="HyperText Markup Language">HTML</abbr>+++, Nifty elements,…) with a minimal Path syntax , same as XPath
*  Hooks to Node's (components, elements..) events with Eventbus
