Pular para o conteúdo principal

A JavaFX App For The GateIn Navigation REST API

GateIn is a JBoss project that consists in a portal that goes beyond a simple portlet container. GateIn is the union of JBoss Portal and eXo Platform, so with GateIn you will have more than a JSR 168/286 implementation. Recently in the new GateIn 3.2, efforts for a public API has been done. The navigation REST API, for example, is complete in "read-only" part which means you can access all your page nodes and iterate through them. For more information about the GateIn REST API you can look at this article. To consume this API I decided to create a JavaFX application that would allow me to explore some of the new JavaFX features, like the cool embedded Browser and the TreeView control. In this post I want to show you this application, and try to share some of my experiences during the coding.

Consuming the GateIn Management API

To consume the Management API, specifically the navigation part, I created a separated Eclipse project, and was used the RESTEasy client API. To make the model part, I borrowed some classes from the project code. These classes are good, but I would like to have classes specifically to the navigation part, not the Management. So I used these classes to fill my NavigationNode class and have a higher abstraction level for the navigation.

The JavaFX app

The goal of the JavaFX app is to show the navigation tree and allows you to perform some actions for each node. The first action is log in the application, for this I created a class called "LoginPane". This class will take care the login part of the application and invoke the methods of the a LoginAction interface implementation. LoginAction is simple: contains two methods to be called by the LoginPane class. Below is the login pane in action.
The main part of the application consists of a TreeView and its context menu. An application menu was created just to perform simple actions like logout and refresh the tree.
Two more classes are used in this application : a simple modal dialog to show messages and a the SimpleWebView, which is used to open WEB pages.
I used a mix type of coding style with Builders and verbose Java. The Builders API from JavaFX is awesome, you can ease create classes using one line of code. A boring thing I faced during this application creation was the thread issues. It was used some asyncronous tasks (functional programming from JavaFX Script, I miss you =/ ) and then we got some "Not a JavaFX Thread" errors. I solved by using Platform.runLater. The bind was used one time, in the previous JavaFX Script I was addicted in binding, but now the form as bind is done, I'm not encouraged to use it, because now bind applies to *Property, which makes it more intrusive. You can see I'm not using the caspian default JavaFX style, I borrowed the CSS style from this post about JavaFX's CSS.

Conclusions

It's always great to explore a new REST API. RESTEasy went very well in giving a simple way more JAX-RS aware to access the API. JavaFX 2.0, as you know, is much better than the previous versions: faster and with a richer API and you can use Eclipse or your other favorite IDE to create JavaFX apps. This is not the end, I'll continue updating this application according the GateIn REST API evolution. You can check the JavaFX app or the client code in this repository on GitHub.

Comentários

Postagens mais visitadas deste blog

Dancing lights with Arduino - The idea

I have been having fun with Arduino these days! In this article I am going to show how did I use an electret mic with Arduino to create a Dancing Lights circuit. Dancing Lights   I used to be an eletronician before starting the IT college. I had my own electronics maintenance office to fix television, radios, etc. In my free time I used to create electronic projects to sell and I made a few "reais" selling a version of Dancing lights, but it was too limited: it simply animated lamps using a relay in the output of a 4017 CMOS IC. The circuit was a decimal counter  controlled by a 555. 4017 decimal counter. Source in the image When I met Arduino a few years ago, I was skeptical because I said: I can do this with IC, why should I use a microcontroller. I thought that Arduino was for kids. But now my pride is gone and I am having a lot of fun with Arduino :-) The implementation of Dancing Lights with Arduino uses an electret mic to capture the sound and light leds...

Simplest JavaFX ComboBox autocomplete

Based on this Brazilian community post , I've created a sample Combobox auto complete. What it basically does is: When user type with the combobox selected, it will work on a temporary string to store the typed text; Each key typed leads to the combobox to be showed and updated If backspace is type, we update the filter Each key typed shows the combo box items, when the combobox is hidden, the filter is cleaned and the tooltip is hidden:   The class code and a sample application is below. I also added the source to my personal github , sent me PR to improve it and there are a lot of things to improve, like space and accents support.

Genetic algorithms with Java

One of the most fascinating topics in computer science world is Artificial Intelligence . A subset of Artificial intelligence are the algorithms that were created inspired in the nature. In this group, we have Genetic Algorithms  (GA). Genetic Algorithms  To find out more about this topic I recommend the following MIT lecture and the Nature of Code book and videos created by Daniel Shiffman. Genetic Algorithms using Java After I remembered the basics about it, I wanted to practice, so I tried my own implementation, but I would have to write a lot of code to do what certainly others already did. So I started looking for Genetic Algorithm libraries and found Jenetics , which is a modern library that uses Java 8 concepts and APIs, and there's also JGAP . I decided to use Jenetics because the User Guide was so clear and it has no other dependency, but Java 8. The only thing I missed for Jenetics are more small examples like the ones I will show i...