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

Creating custom Work Item Handler in BPM Suite/jBPM 6

Hi all! In this post I am going to share my experience creating a work item handler for BPM Suite 6.0.3 (which is very similar to jbpm as explained in a previous post ). The Hello World Work Item Handler Let's create a really simple WorkItemHandler just to print "Hello World" in the console. Of course you can implement more feature and make it receive parameters, access database, web services, etc. But in this post we will keep it simple. Really simple. First thing to do is to create a maven project for my WorkItemHandler. Here's the pom.xml of my Maven project: Notice that we are importing jbpm dependency so we can find the java interface that is used to create work item handlers. Now we can start coding. Let's create a class name HelloWorkItemHandler in package org.jugvale.jbpm, here is the simple code: Now we can build our project and go to BPM Suite to configure it so we can use this workitem. Registering the WorkItemHandler UPDATE...

Using the REST Task from jBPM 6

In this post I am going to share my experience using the BPM Suite 6 REST Task. BPM Suite  X jBPM jBPM is a JBoss community project to offer an open source and efficient BPM Suite and BPM Suite is a product created by Red Hat based on jBPM. In this post I will be using BPM Suite because I have it installed already, but what I am going to described should work for jBPM as well.   REST Task  The REST Task is used to invoke a REST resource (or perform an HTTP Request) from your Business Process. You can set the URL, HTTP Method, timeout and credentials from the Process Modeller interface and when the process gets into that task, it will generate a HTTP Request and return the response as String. It is available on the left side pallet under the "Service Tasks" tab: The Target REST Web Service The service we are going to access from our process is a really simple one, that's why it is called simple-hello-rs and it is based on JBoss helloworld-rs qu...

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.