<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5176444344343404230</id><updated>2012-01-22T13:21:19.646-08:00</updated><category term='javafx'/><category term='canvas'/><category term='javascript'/><category term='html5'/><title type='text'>FXApps</title><subtitle type='html'>Blog about programming and client applications. Target Programming languages are JavaFX, Visage, HTML 5+ Javascript or even command line apps :-D</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fxapps.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fxapps.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>William</name><uri>http://www.blogger.com/profile/12980844418405775676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5176444344343404230.post-484009242763552261</id><published>2012-01-22T12:46:00.000-08:00</published><updated>2012-01-22T13:17:38.480-08:00</updated><title type='text'>Show data in JavaFX is made easy by DataFX project</title><content type='html'>A friend of mine, &lt;a href="http://www.facebook.com/telesmaciel"&gt;Teles Maciel&lt;/a&gt;, was &lt;a href="http://en.wikipedia.org/wiki/Data_scraping"&gt;scrapping&lt;/a&gt; a page that contains all the &lt;a href="http://en.wikipedia.org/wiki/Salah"&gt;Islam formal prayers&lt;/a&gt; schedule for 2012 for who lives in São Paulo. He aims to create an app for mobile. While checking his sample XML I decided to use &lt;a href="http://www.javafxdata.org/"&gt;DataFX&lt;/a&gt; project to show these data, and I created an app in less than 5 minutes!&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The DataFX project&lt;/h2&gt;&lt;br /&gt;It's divided in two main parts: &lt;a href="http://www.javafxdata.org/content/cell-factories/"&gt;Cell Factories&lt;/a&gt; and &lt;a href="http://www.javafxdata.org/content/data-sources/"&gt;Data Sources&lt;/a&gt; and there is the &lt;a href="http://www.redfx.org/"&gt;RedFX&lt;/a&gt; integration.&lt;br /&gt;&lt;br /&gt;Data Sources objective is to facilitate the access to XML/JDBC/CSV/JSON data and show in JavaFX. For example, you can read an XML file and visualize the data in a JavaFX table with a few lines of code.&lt;br /&gt;Talking in code, you basically need to know the following Interfaces to use DataFX:&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;DataSourceReader&lt;/b&gt;: Responsile for reading a source of data. Two classes that implements this interface are &lt;a href="http://www.javafxdata.org/javadoc/org/javafxdata/datasources/io/NetworkSource.html"&gt;NetworkSource&lt;/a&gt; and &lt;a href="http://www.javafxdata.org/javadoc/org/javafxdata/datasources/io/FileSource.html"&gt;FileSource&lt;/a&gt;;&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;DataSource&lt;/b&gt;: Responsible for create the JavaFX(e.g. TableColumn, ObsevableLists) stuffs from the DataSourceReader. From this class, you can retrieve the items and the columns from the DataSourceReader. There's a Data Source implementation for each specific format, for example: XMLDataSource, ObjectDataSource, CSVDataSource and more sources are planned in future project releases.&lt;br /&gt;&lt;br /&gt;If you want to know more about DataFX I recommend you to see the Jonathan Giles and Johan Vos &lt;a href="http://www.javafxdata.org/downloads/javaone-2011-slides.pdf"&gt;presentation&lt;/a&gt; and read the &lt;a href="http://www.javafxdata.org/javadoc/"&gt;API JavaDoc&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The "Salah Time" application &lt;/h2&gt;&lt;br /&gt;Let's start talking about this application showing the &lt;a href="3birds.com.br/projetos/salat/oracoes.xml"&gt;data&lt;/a&gt; we want to show:&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; &amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;  &lt;br /&gt; &amp;lt;oracoes&amp;gt;  &lt;br /&gt; &amp;lt;oracao&amp;gt;  &lt;br /&gt; &amp;lt;nome&amp;gt;fajr&amp;lt;/nome&amp;gt;  &lt;br /&gt; &amp;lt;dia&amp;gt;01/01&amp;lt;/dia&amp;gt;  &lt;br /&gt; &amp;lt;horario tipo="verao"&amp;gt;03:55&amp;lt;/horario&amp;gt;  &lt;br /&gt; &amp;lt;/oracao&amp;gt;  &lt;br /&gt; &amp;lt;oracao&amp;gt;  &lt;br /&gt; &amp;lt;/oracao&amp;gt;  &lt;br /&gt; ...  &lt;br /&gt; &amp;lt;/oracoes&amp;gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;As you can see, we have a pretty simple XML. The "horario"(time) tag has a "tipo"(type) attribute that may have two possible values: "verao"(summer, for daylight saving time) and "comum"(common, for common time). Imagine if you would show these data the first step would parse the data and then show according the toolkit/API you are using. For example, in JavaFX you would have to create a table and its columns. It is not hard, but a repetitive task when you just want to show the data or when you have a lot of files to show and that's when DataFX starts to help you.&lt;br /&gt;&lt;br /&gt;The first thing I had to do was load my file using FileSource:&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; FileSource fs = new FileSource("oracoes.xml");  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Then I created my XMLDataSource using this FileSource, the tag name ("oracao") and the columns I want to retrieve from oracao: nome, dia and horario. Here is the code (yes, one line):&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; XMLDataSource&amp;lt;String[], Object&amp;gt; salatDataSource = new XMLDataSource&amp;lt;String[], Object&amp;gt;(  &lt;br /&gt; fs, "oracao", "nome", "dia", "horario");  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Now the last step is simply integrate XMLDataSource with a TableView. I just had to retrieve the columns I want and add it to my TableView and the items is the DataSource itself:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; package org.salattime.main;  &lt;br /&gt; import javafx.application.Application;  &lt;br /&gt; import javafx.scene.SceneBuilder;  &lt;br /&gt; import javafx.scene.control.TableColumn;  &lt;br /&gt; import javafx.scene.control.TableView;  &lt;br /&gt; import javafx.stage.Stage;  &lt;br /&gt; import org.javafxdata.datasources.io.FileSource;  &lt;br /&gt; import org.javafxdata.datasources.protocol.XMLDataSource;  &lt;br /&gt; /**  &lt;br /&gt;  *   &lt;br /&gt;  * So, I want to read the data from oracoes.xml and show in a table. This class  &lt;br /&gt;  * will do it  &lt;br /&gt;  *   &lt;br /&gt;  * @author jesuino  &lt;br /&gt;  *   &lt;br /&gt;  */  &lt;br /&gt; public class Main extends Application {  &lt;br /&gt;      @SuppressWarnings("unchecked")  &lt;br /&gt;      @Override  &lt;br /&gt;      public void start(Stage stage) throws Exception {  &lt;br /&gt;           stage.setTitle("Salats do ano de 2012");  &lt;br /&gt;           // Just loading the file...  &lt;br /&gt;           FileSource fs = new FileSource("oracoes.xml");  &lt;br /&gt;           // Now creating my datasource, I just need to inform my columns and  &lt;br /&gt;           // oracao, because it is the root of the columns I want  &lt;br /&gt;           XMLDataSource&amp;lt;String[], Object&amp;gt; salatDataSource = new XMLDataSource&amp;lt;String[], Object&amp;gt;(  &lt;br /&gt;                     fs, "oracao", "nome", "dia", "horario");  &lt;br /&gt;           @SuppressWarnings("rawtypes")  &lt;br /&gt;           TableView salats = new TableView();  &lt;br /&gt;           TableColumn&amp;lt;?, ?&amp;gt; nomeCol = salatDataSource.getNamedColumn("nome");  &lt;br /&gt;           TableColumn&amp;lt;?, ?&amp;gt; diaCol = salatDataSource.getNamedColumn("dia");  &lt;br /&gt;           TableColumn&amp;lt;?, ?&amp;gt; horarioCol = salatDataSource  &lt;br /&gt;                     .getNamedColumn("horario");  &lt;br /&gt;           salats.getColumns().addAll(nomeCol, diaCol, horarioCol);  &lt;br /&gt;           salats.setItems(salatDataSource);  &lt;br /&gt;           stage.setScene(SceneBuilder.create().root(salats).build());  &lt;br /&gt;           stage.show();  &lt;br /&gt;      }  &lt;br /&gt;      public static void main(String[] args) {  &lt;br /&gt;           Application.launch(args);  &lt;br /&gt;      }  &lt;br /&gt; }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Here is the result:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-HcDHPLK95mI/TxxzfLItlTI/AAAAAAAAAEE/LK_3_84heJE/s1600/salats%2B2012.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="189" src="http://4.bp.blogspot.com/-HcDHPLK95mI/TxxzfLItlTI/AAAAAAAAAEE/LK_3_84heJE/s320/salats%2B2012.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Further use of DataFX(the DataSource part)&lt;/h2&gt;&lt;br /&gt;This sample seems very simple, but here are some uses for DataFX you may consider:&lt;br /&gt;&lt;br /&gt;- Visualization of a REST API result using the NetworkSource;&lt;br /&gt;- Help you to show data in multiple formats with a small portion of code with FileSource and the currently available DataSources implementations (more will come in a future); &lt;br /&gt;- In future, read data from database with a JDBC DataSource;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Remember this project is just getting started, there are more to come :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5176444344343404230-484009242763552261?l=fxapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxapps.blogspot.com/feeds/484009242763552261/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fxapps.blogspot.com/2012/01/show-data-in-javafx-is-made-easy-by.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/484009242763552261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/484009242763552261'/><link rel='alternate' type='text/html' href='http://fxapps.blogspot.com/2012/01/show-data-in-javafx-is-made-easy-by.html' title='Show data in JavaFX is made easy by DataFX project'/><author><name>William</name><uri>http://www.blogger.com/profile/12980844418405775676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-HcDHPLK95mI/TxxzfLItlTI/AAAAAAAAAEE/LK_3_84heJE/s72-c/salats%2B2012.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176444344343404230.post-657507938656086443</id><published>2012-01-14T17:34:00.000-08:00</published><updated>2012-01-14T20:39:02.345-08:00</updated><title type='text'>The GateIn Management/Navigation API</title><content type='html'>&lt;div class="tr_bq"&gt;&lt;/div&gt;&lt;div class="tr_bq"&gt;Consuming popular APIs is very interesting and cool. You can in a few minutes seek in the web some how-to, or a sample application and create yours. After create a lot of these kind of applications I got myself bored and no motivation to keep posting. For example, a Twitter app will be only another twitter app and there's a lot of API needing clients or needing to be explored.&lt;/div&gt;&lt;div class="tr_bq"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="tr_bq"&gt;So I started to look new APIs to explore. One of these not well recognized, but very well designed in REST terms is GateIn Management API. GateIn is the JBoss Java Portal an it is a great tool with a big community behind it.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-QDy9NBqtaBQ/TxIjgLSbpdI/AAAAAAAAADw/CF9l8jrjwIg/s1600/gatein.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="165" src="http://3.bp.blogspot.com/-QDy9NBqtaBQ/TxIjgLSbpdI/AAAAAAAAADw/CF9l8jrjwIg/s320/gatein.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The GateIn 3.2 API is not hard to understand and you can learn more about it in this great &lt;a href="https://docs.jboss.org/author/display/GTNPORTAL/GateIn+Management"&gt;documentation&lt;/a&gt;. Basically we have the base resource called... Resource. The Resource contains all the possible operations and their children. You can navigate by the children and find more operations. You will notice that the more notable feature of this API is the presence of &lt;a href="http://www.blogger.com/post-create.g?blogID=5176444344343404230"&gt;HATEOAS&lt;/a&gt;. The API also serve data in XML and JSON formats. You can test the API, but you will need&amp;nbsp;to have the GateIn running somewhere to access. Here is a sample of the response body when you access the base URL in my local installation(I'm using EPP, the enterprise product from Red Hat based in GateIn, so the context may change for pure GateIn installation):&lt;br /&gt;&lt;br /&gt;&lt;b&gt;GET on&lt;/b&gt;&amp;nbsp;&lt;a href="http://192.168.56.101:8080/rest/private/managed-components/"&gt;http://192.168.56.101:8080/rest/private/managed-components/&lt;/a&gt;&lt;br /&gt;&lt;span class="b" style="color: #444444; font-family: monospace, mono, consolas; font-size: 13px; font-weight: bold; line-height: 18px;"&gt;{&lt;/span&gt;&lt;span class="ell" style="color: #444444; font-family: monospace, mono, consolas; font-size: 13px; line-height: 18px;"&gt;&lt;/span&gt;&lt;span class="blockInner" style="border-left-color: rgb(187, 187, 187); border-left-style: dotted; border-left-width: 1px; color: #444444; display: block; font-family: monospace, mono, consolas; font-size: 13px; line-height: 18px; margin-left: 2px; padding-left: 24px;"&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;"&lt;span class="k" style="color: black;"&gt;description&lt;/span&gt;":&amp;nbsp;&lt;span class="s" style="color: #0b7500; word-wrap: break-word;"&gt;"Available operations and children (sub-resources)."&lt;/span&gt;,&lt;/span&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;&lt;span class="e"&gt;&lt;/span&gt;"&lt;span class="k" style="color: black;"&gt;children&lt;/span&gt;":&amp;nbsp;&lt;span class="b" style="font-weight: bold;"&gt;[&lt;/span&gt;&lt;span class="ell"&gt;&lt;/span&gt;&lt;span class="blockInner" style="border-left-color: rgb(187, 187, 187); border-left-style: dotted; border-left-width: 1px; display: block; margin-left: 2px; padding-left: 24px;"&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;&lt;span class="e"&gt;&lt;/span&gt;&lt;span class="b" style="font-weight: bold;"&gt;{&lt;/span&gt;&lt;span class="ell"&gt;&lt;/span&gt;&lt;span class="blockInner" style="border-left-color: rgb(187, 187, 187); border-left-style: dotted; border-left-width: 1px; display: block; margin-left: 2px; padding-left: 24px;"&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;"&lt;span class="k" style="color: black;"&gt;name&lt;/span&gt;":&amp;nbsp;&lt;span class="s" style="color: #0b7500; word-wrap: break-word;"&gt;"mop"&lt;/span&gt;,&lt;/span&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;"&lt;span class="k" style="color: black;"&gt;description&lt;/span&gt;":&amp;nbsp;&lt;span class="s" style="color: #0b7500; word-wrap: break-word;"&gt;"MOP (Model Object for Portal) Managed Resource, responsible for handling management operations on navigation, pages, and sites."&lt;/span&gt;,&lt;/span&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;&lt;span class="e"&gt;&lt;/span&gt;"&lt;span class="k" style="color: black;"&gt;link&lt;/span&gt;":&amp;nbsp;&lt;span class="b" style="font-weight: bold;"&gt;{&lt;/span&gt;&lt;span class="ell"&gt;&lt;/span&gt;&lt;span class="blockInner" style="border-left-color: rgb(187, 187, 187); border-left-style: dotted; border-left-width: 1px; display: block; margin-left: 2px; padding-left: 24px;"&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;"&lt;span class="k" style="color: black;"&gt;rel&lt;/span&gt;":&amp;nbsp;&lt;span class="s" style="color: #0b7500; word-wrap: break-word;"&gt;"child"&lt;/span&gt;,&lt;/span&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;"&lt;span class="k" style="color: black;"&gt;href&lt;/span&gt;":&amp;nbsp;&lt;span class="s" style="color: #0b7500; word-wrap: break-word;"&gt;"&lt;a href="http://192.168.56.101:8080/rest/private/managed-components/mop" style="text-decoration: none;"&gt;http://192.168.56.101:8080/rest/private/managed-components/mop&lt;/a&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="b" style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="b" style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="b" style="font-weight: bold;"&gt;]&lt;/span&gt;,&lt;/span&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;&lt;span class="e"&gt;&lt;/span&gt;"&lt;span class="k" style="color: black;"&gt;operations&lt;/span&gt;":&amp;nbsp;&lt;span class="b" style="font-weight: bold;"&gt;[&lt;/span&gt;&lt;span class="ell"&gt;&lt;/span&gt;&lt;span class="blockInner" style="border-left-color: rgb(187, 187, 187); border-left-style: dotted; border-left-width: 1px; display: block; margin-left: 2px; padding-left: 24px;"&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;&lt;span class="e"&gt;&lt;/span&gt;&lt;span class="b" style="font-weight: bold;"&gt;{&lt;/span&gt;&lt;span class="ell"&gt;&lt;/span&gt;&lt;span class="blockInner" style="border-left-color: rgb(187, 187, 187); border-left-style: dotted; border-left-width: 1px; display: block; margin-left: 2px; padding-left: 24px;"&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;"&lt;span class="k" style="color: black;"&gt;operation-name&lt;/span&gt;":&amp;nbsp;&lt;span class="s" style="color: #0b7500; word-wrap: break-word;"&gt;"read-resource"&lt;/span&gt;,&lt;/span&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;"&lt;span class="k" style="color: black;"&gt;operation-description&lt;/span&gt;":&amp;nbsp;&lt;span class="s" style="color: #0b7500; word-wrap: break-word;"&gt;"Lists information about a managed resource, including available operations and children (sub-resources)."&lt;/span&gt;,&lt;/span&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;&lt;span class="e"&gt;&lt;/span&gt;"&lt;span class="k" style="color: black;"&gt;link&lt;/span&gt;":&amp;nbsp;&lt;span class="b" style="font-weight: bold;"&gt;{&lt;/span&gt;&lt;span class="ell"&gt;&lt;/span&gt;&lt;span class="blockInner" style="border-left-color: rgb(187, 187, 187); border-left-style: dotted; border-left-width: 1px; display: block; margin-left: 2px; padding-left: 24px;"&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;"&lt;span class="k" style="color: black;"&gt;rel&lt;/span&gt;":&amp;nbsp;&lt;span class="s" style="color: #0b7500; word-wrap: break-word;"&gt;"self"&lt;/span&gt;,&lt;/span&gt;&lt;span class="kvov" style="display: block; margin-left: -20px; padding-left: 20px; position: relative;"&gt;"&lt;span class="k" style="color: black;"&gt;href&lt;/span&gt;":&amp;nbsp;&lt;span class="s" style="color: #0b7500; word-wrap: break-word;"&gt;"&lt;a href="http://192.168.56.101:8080/rest/private/managed-components" style="text-decoration: none;"&gt;http://192.168.56.101:8080/rest/private/managed-components&lt;/a&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="b" style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="b" style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="b" style="font-weight: bold;"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #444444; font-family: monospace, mono, consolas; font-size: 13px; font-weight: bold; line-height: 18px;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I made a very simple command line app to consume this API and learn more about it. It was used &lt;a href="http://www.jboss.org/resteasy"&gt;RESTEasy Client API&lt;/a&gt;. It is important to say that this API requires authentication since it exposes information of all GateIn groups.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;package org.gateinmanager.test.model;&lt;br /&gt;&lt;br /&gt;import java.net.URI;&lt;br /&gt;import java.net.URISyntaxException;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Scanner;&lt;br /&gt;import java.util.Set;&lt;br /&gt;&lt;br /&gt;import javax.ws.rs.core.MediaType;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.httpclient.Credentials;&lt;br /&gt;import org.apache.commons.httpclient.HttpClient;&lt;br /&gt;import org.apache.commons.httpclient.UsernamePasswordCredentials;&lt;br /&gt;import org.apache.commons.httpclient.auth.AuthScope;&lt;br /&gt;import org.gateinmanager.model.Child;&lt;br /&gt;import org.gateinmanager.model.Link;&lt;br /&gt;import org.gateinmanager.model.Operation;&lt;br /&gt;import org.gateinmanager.model.Resource;&lt;br /&gt;import org.jboss.resteasy.client.ClientExecutor;&lt;br /&gt;import org.jboss.resteasy.client.ClientRequest;&lt;br /&gt;import org.jboss.resteasy.client.ClientRequestFactory;&lt;br /&gt;import org.jboss.resteasy.client.core.executors.ApacheHttpClientExecutor;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * &lt;br /&gt; * It will just test the request is being parsed to domain objects...&lt;br /&gt; * &lt;br /&gt; * @author jesuino&lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt;@SuppressWarnings("deprecation")&lt;br /&gt;public class TestModel {&lt;br /&gt;    private static final String USERNAME = "root";&lt;br /&gt;    private static final String PASSWORD = "gtn";&lt;br /&gt;&lt;br /&gt;    @SuppressWarnings("unchecked")&lt;br /&gt;    public static void main(String[] args) throws Exception {&lt;br /&gt;&lt;br /&gt;        ClientRequestFactory factory = createFactory(USERNAME, PASSWORD);&lt;br /&gt;        Scanner sc = new Scanner(System.in);&lt;br /&gt;        String in;&lt;br /&gt;&lt;br /&gt;        Resource resource = null;&lt;br /&gt;        System.out.println("\t\t*****GateIn Management API*****\n\n");&lt;br /&gt;&lt;br /&gt;        System.out&lt;br /&gt;                .println("&amp;gt;&amp;gt; Enter the HOST to start navigating or press"&lt;br /&gt;                        + " Q to quit (the base URL is "&lt;br /&gt;                        + "http://192.168.56.101:8080/rest/private/managed-components)\n");&lt;br /&gt;        while (!(in = sc.next()).startsWith("Q")) {&lt;br /&gt;            // Entered a URL, just load Resource and print it&lt;br /&gt;            if (in.startsWith("http://")) {&lt;br /&gt;                ClientRequest cr = factory.createRequest(in);&lt;br /&gt;                cr.accept(MediaType.APPLICATION_XML);&lt;br /&gt;                try {&lt;br /&gt;                    System.out.println("Loading...");&lt;br /&gt;                    resource = (Resource) cr.get().getEntity(Resource.class);&lt;br /&gt;                    System.out.println("Resource loaded!");&lt;br /&gt;                } catch (Exception e) {&lt;br /&gt;                    System.out&lt;br /&gt;                            .println("\n\n&amp;gt;&amp;gt;&amp;gt;  Something went wrong when loading your URL...\n");&lt;br /&gt;                    e.printStackTrace();&lt;br /&gt;                }&lt;br /&gt;            } else {&lt;br /&gt;                System.out&lt;br /&gt;                        .println("\nPlease enter a valid URL or press Q to quit...");&lt;br /&gt;            }&lt;br /&gt;            if (resource != null)&lt;br /&gt;                printResource(resource);&lt;br /&gt;            System.out.println("\n&amp;gt;&amp;gt; Enter URL or Q to quit: ");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static ClientRequestFactory createFactory(String username,&lt;br /&gt;            String password) throws URISyntaxException {&lt;br /&gt;        // Setting Credentials though an HttpExecutor&lt;br /&gt;        Credentials credentials = new UsernamePasswordCredentials(username,&lt;br /&gt;                password);&lt;br /&gt;        HttpClient httpClient = new HttpClient();&lt;br /&gt;        httpClient.getState().setCredentials(AuthScope.ANY, credentials);&lt;br /&gt;        httpClient.getParams().setAuthenticationPreemptive(true);&lt;br /&gt;        ClientExecutor clientExecutor = new ApacheHttpClientExecutor(httpClient);&lt;br /&gt;&lt;br /&gt;        // creating the factory&lt;br /&gt;        return new ClientRequestFactory(clientExecutor, new URI(""));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static void printResource(Resource resource) {&lt;br /&gt;        System.out.println("**\t" + resource.getDescription() + "\t**\n");&lt;br /&gt;        System.out.println("Possible Operations:");&lt;br /&gt;        List&amp;lt;Operation&amp;gt; operations = resource.getOperations();&lt;br /&gt;        if (operations != null) {&lt;br /&gt;            for (Operation operation : operations) {&lt;br /&gt;                Link link = operation.getOperationLink();&lt;br /&gt;                System.out.println("\t* " + operation.getOperationName() + ": "&lt;br /&gt;                        + operation.getOperationDescription() + "\n\t   rel: "&lt;br /&gt;                        + link.getRel() + ". Located at " + link.getHref());&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        Set&amp;lt;Child&amp;gt; children = resource.getChildren();&lt;br /&gt;        if (children != null) {&lt;br /&gt;            System.out.println("\nChildren:");&lt;br /&gt;            for (Child child : children) {&lt;br /&gt;                Link link = child.getLink();&lt;br /&gt;                System.out.println("\t* " + child.getName() + ": "&lt;br /&gt;                        + child.getDescription() + "\n\t   rel: "&lt;br /&gt;                        + link.getRel() + ". Located at " + link.getHref());&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The authentication part of this code is the most boring. We need to set it in the Executor, which who will make the authentication behind RESTEasy calls. We use RESTEasy factory to create requests based on the URI supplied by the user of the application. From the response, we retrieve the body as object using the model objects from &lt;a href="https://github.com/gatein/gatein-management/tree/master/rest"&gt;GateIn REST API source code&lt;/a&gt;. Here is the application running:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #45818e;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;*****GateIn Management API*****&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt; Enter the HOST to start navigating or press Q to quit (the base URL is http://192.168.56.101:8080/rest/private/managed-components)&lt;br /&gt;http://192.168.56.101:8080/rest/private/managed-components&lt;br /&gt;Loading...&lt;br /&gt;Resource loaded!&lt;br /&gt;**&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Available operations and children (sub-resources).&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;**&lt;br /&gt;Possible Operations:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;* read-resource: Lists information about a managed resource, including available operations and children (sub-resources).&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; rel: self. Located at http://192.168.56.101:8080/rest/private/managed-components&lt;br /&gt;Children:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;* mop: MOP (Model Object for Portal) Managed Resource, responsible for handling management operations on navigation, pages, and sites.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; rel: child. Located at http://192.168.56.101:8080/rest/private/managed-components/mop&lt;br /&gt;&amp;gt;&amp;gt; Enter URL or Q to quit:&lt;br /&gt;http://192.168.56.101:8080/rest/private/managed-components/mop&lt;br /&gt;Loading...&lt;br /&gt;Resource loaded!&lt;br /&gt;**&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Available site types.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;**&lt;br /&gt;Possible Operations:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;* read-resource: Lists available site types for a portal&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; rel: self. Located at http://192.168.56.101:8080/rest/private/managed-components/mop&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;* export-resource: Exports any resources with an export operation handler registered. &amp;nbsp;This operation is recursive until an operation handler is found.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; rel: content. Located at http://192.168.56.101:8080/rest/private/managed-components/mop.zip&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;* import-resource: Imports mop data from an exported zip file.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; rel: operation. Located at http://192.168.56.101:8080/rest/private/managed-components/mop&lt;br /&gt;Children:&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;* portalsites: Management resource responsible for handling management operations on a specific site type for a portal.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; rel: child. Located at http://192.168.56.101:8080/rest/private/managed-components/mop/portalsites&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;* usersites: Management resource responsible for handling management operations on a specific site type for a portal.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; rel: child. Located at http://192.168.56.101:8080/rest/private/managed-components/mop/usersites&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;* groupsites: Management resource responsible for handling management operations on a specific site type for a portal.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; rel: child. Located at http://192.168.56.101:8080/rest/private/managed-components/mop/groupsites&lt;br /&gt;&amp;gt;&amp;gt; Enter URL or Q to quit:&lt;br /&gt;Q&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;I have a critic to this REST API that is the use of the ".xml" in some URIs , but the API design is good for the portal management for its composite architecture (Everything is a resource and has children). I hope post something more graphical in next weeks :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5176444344343404230-657507938656086443?l=fxapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxapps.blogspot.com/feeds/657507938656086443/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fxapps.blogspot.com/2012/01/gatein-managementnavigation-api.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/657507938656086443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/657507938656086443'/><link rel='alternate' type='text/html' href='http://fxapps.blogspot.com/2012/01/gatein-managementnavigation-api.html' title='The GateIn Management/Navigation API'/><author><name>William</name><uri>http://www.blogger.com/profile/12980844418405775676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-QDy9NBqtaBQ/TxIjgLSbpdI/AAAAAAAAADw/CF9l8jrjwIg/s72-c/gatein.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176444344343404230.post-577185738179026590</id><published>2011-11-27T07:34:00.000-08:00</published><updated>2011-12-02T04:20:29.421-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='javafx'/><category scheme='http://www.blogger.com/atom/ns#' term='canvas'/><title type='text'>Playing with HTML 5 Canvas: A particle generator</title><content type='html'>I know this is a blog that was supposed to have JavaFX stuff, but I'm playing with HTML 5 last days due a book I bought  in Amazon :).&lt;br /&gt;&lt;br /&gt;It's been cool to play with HTML 5, and JavaScript, but after reading and creating some things with it, I realized that I like JavaFX for graphical things, because it has a lot of built in special effects and transitions. Also in JavaFX the view components can be directly handled, with no needs to get it from HTML. &lt;br /&gt;&lt;br /&gt;What I'll show in this post is a simple particle generator which was inspired in Lucas Jordan's book &lt;a href=http://www.apress.com/9781430226239&gt;JavaFX Special Effects&lt;/a&gt;. In charpter 2 of this book some particles systems are presented.&lt;br /&gt;&lt;br /&gt;The code of the particle generator I created could be much better, I know that, but it was a test and If I start to improve things and add new controls I would never finish it, so I decided to put a end on it. The app is in my &lt;a href=http://williamprogrammer.com/html5/particleEmitter.html&gt;site&lt;/a&gt; and you can enjoy it. Click to see the source and all the javascript and CSS are in this single page!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-TRErL67MZFY/TtJZbNQKFbI/AAAAAAAAADE/dx17fPjDxj0/s1600/particleEmitter.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="162" width="320" src="http://3.bp.blogspot.com/-TRErL67MZFY/TtJZbNQKFbI/AAAAAAAAADE/dx17fPjDxj0/s320/particleEmitter.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The main challenge while creating this out was create more particles and set a good time interval. To create more particle I created a for in the main loop, it is not performatic, if you set a big particle life and the number of particles, sure you will see that it will start to slow down.&lt;br /&gt;&lt;br /&gt;Other problem was related to the color. I know we have the input type color in HTML 5 but it is working only in Opera, so I decided to use three(RGB) slides to set the particle color and another three for the background color. A criticism is related to the way of Javascript deal with colors, I know it accepts a lot of color formats (rgb, rgba, #000000), but I really miss a class for color.&lt;br /&gt;&lt;br /&gt;In my opinion Canvas is cool, sure, but It's only a "rectangle on page to paint". Sure we will need some Javascript libraries (&lt;a href=http://bit.ly/t38PGQ&gt;we do have some&lt;/a&gt;) to make easier ti handle canvas. I still believe that Flash is necessary for the Rich WEB (even with recent adobe announcements) and JavaFX is much valid for creating rich applications ( not necessary in WEB).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5176444344343404230-577185738179026590?l=fxapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxapps.blogspot.com/feeds/577185738179026590/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fxapps.blogspot.com/2011/11/playing-with-html-5-canvas-particle.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/577185738179026590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/577185738179026590'/><link rel='alternate' type='text/html' href='http://fxapps.blogspot.com/2011/11/playing-with-html-5-canvas-particle.html' title='Playing with HTML 5 Canvas: A particle generator'/><author><name>William</name><uri>http://www.blogger.com/profile/12980844418405775676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-TRErL67MZFY/TtJZbNQKFbI/AAAAAAAAADE/dx17fPjDxj0/s72-c/particleEmitter.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176444344343404230.post-571642134424368727</id><published>2011-08-29T19:20:00.001-07:00</published><updated>2011-08-29T19:20:04.199-07:00</updated><title type='text'>VisageFX Label First Test</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-WqKOpNMLWmQ/TlxIdBlGkvI/AAAAAAAAACc/97vzfNsLKc8/s1600/TestingLabelAndFont.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="181" src="http://1.bp.blogspot.com/-WqKOpNMLWmQ/TlxIdBlGkvI/AAAAAAAAACc/97vzfNsLKc8/s320/TestingLabelAndFont.png" width="283" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;var img = Image{url: "http://www.celgeek.com.br/wp-content/uploads/2011/05/javafx_logo_color_1.jpg"}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;function imgView():ImageView{&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; ImageView{&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fitWidth: 50 fitHeight: 25&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; image: img&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; }&lt;/i&gt;&lt;br /&gt;&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Stage {&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; title: "Testing Label And Font"&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; visible: true&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; Scene {&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; width: 220&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; height: 200&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fill: Color.LIGHTBLUE&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;Group{&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Label{&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text: "Simple Label with Graphics"&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; underline:true&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wrapText: true&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alignment: Pos.TOP_LEFT&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textFill: Color.RED&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; layoutX: 10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; layoutY: 5&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; graphic: imgView()&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Label{&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text: "Other Label" &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wrapText: true &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textFill: Color.RED&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; layoutX: 10&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; layoutY: 35&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; graphic: imgView()&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contentDisplay: ContentDisplay.RIGHT; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Label{&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text: "Label with font" &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wrapText: true &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textFill: Color.BLACK&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; layoutX: 10&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; layoutY: 65 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; font: Font.font("Arial", 10);&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Label{&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text: "Label with another font" &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wrapText: true &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textFill: Color.BROWN&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; layoutX: 10&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; layoutY: 85 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; font: Font.font("Comic Sans MS", 15);&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Label{&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; text: "Label with text bold and italic" &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wrapText: true &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textFill: Color.BROWN&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; layoutX: 10&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; layoutY: 105 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; font: Font.font("Verdana",FontWeight.BOLD, FontPosture.ITALIC, 10);&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ]&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; }&lt;/i&gt;&lt;br /&gt;&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5176444344343404230-571642134424368727?l=fxapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxapps.blogspot.com/feeds/571642134424368727/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fxapps.blogspot.com/2011/08/visagefx-label-first-test_29.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/571642134424368727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/571642134424368727'/><link rel='alternate' type='text/html' href='http://fxapps.blogspot.com/2011/08/visagefx-label-first-test_29.html' title='VisageFX Label First Test'/><author><name>William</name><uri>http://www.blogger.com/profile/12980844418405775676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-WqKOpNMLWmQ/TlxIdBlGkvI/AAAAAAAAACc/97vzfNsLKc8/s72-c/TestingLabelAndFont.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176444344343404230.post-5928497044465008459</id><published>2011-08-18T08:36:00.000-07:00</published><updated>2011-08-18T10:53:51.495-07:00</updated><title type='text'>VisageFX: Visage on JavaFX 2</title><content type='html'>After a few months without post, I bring you a great news: &lt;a href=&gt;VisageFX&lt;/a&gt;, which is &lt;a href="http://code.google.com/p/visage/"&gt;Visage&lt;/a&gt; -&gt; JavaFX 2, development has started recently.&lt;br /&gt;&lt;br /&gt;We still have a lot of work to do, but yesterday I could test VisageFX and I'm impressed with the results!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitpic.com/67sh6z" title="Hello Visage! on Twitpic"&gt;&lt;img src="http://twitpic.com/show/thumb/67sh6z.png" width="150" height="150" alt="Hello Visage! on Twitpic"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you want to contribute, &lt;a href=http://steveonjava.com/&gt;Stephen Chin&lt;/a&gt; wrote a &lt;a href=http://code.google.com/p/visage/wiki/JavaFXAPIContributing&gt;wiki page&lt;/a&gt; about how to do that.&lt;br /&gt;&lt;br /&gt;I hope soon I can port some apps to VisageFX and start new ones :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5176444344343404230-5928497044465008459?l=fxapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxapps.blogspot.com/feeds/5928497044465008459/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fxapps.blogspot.com/2011/08/visagefx-visage-on-javafx-2.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/5928497044465008459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/5928497044465008459'/><link rel='alternate' type='text/html' href='http://fxapps.blogspot.com/2011/08/visagefx-visage-on-javafx-2.html' title='VisageFX: Visage on JavaFX 2'/><author><name>William</name><uri>http://www.blogger.com/profile/12980844418405775676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176444344343404230.post-1633879430917930850</id><published>2010-10-18T09:05:00.000-07:00</published><updated>2010-10-18T09:20:23.884-07:00</updated><title type='text'>Visage: My First impression</title><content type='html'>Hi Everyone!&lt;br /&gt;&lt;br /&gt;After the news about the &lt;a href="http://java.dzone.com/articles/oracle-discontinue-javafx"&gt;JavaFX discontinued by Oracle&lt;/a&gt;, &lt;a href="http://code.google.com/p/visage/"&gt;Visage project&lt;/a&gt; started!&lt;br /&gt;&lt;br /&gt;Today &lt;a href="http://steveonjava.com/"&gt;Stephen Chin&lt;/a&gt; announced the &lt;a href="http://groups.google.com/group/visage-dev/browse_thread/thread/1f49744b53b1bc1a"&gt;first preview of Visage&lt;/a&gt;, with the &lt;a href="http://code.google.com/p/visage/wiki/DefaultProperties"&gt;default&lt;/a&gt; key word, (which we can define a default property setted on the class definition). I'm playing with it, look the sample I did using the default feature:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;public class Person{&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;i&gt;public default var name:String;&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;i&gt;public var age:Integer;&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;i&gt;override function toString(){&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt;  &lt;/i&gt;&lt;/span&gt;&lt;i&gt;"{name} has {age} years"&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;public function run(){&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;i&gt;var person :Person = Person{&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt;  &lt;/i&gt;&lt;/span&gt;&lt;i&gt;"William " age:22;&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;i&gt;}&lt;/i&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;i&gt;println(person);&lt;/i&gt;&lt;br /&gt;&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For me it's great! I'm motived more than before to keep my JavaFX works, Thanks Stephen Chin and Visage Community!&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Links on Visage&lt;/h3&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://learnjavafx.typepad.com/weblog/2010/10/eye-on-visage-compiler-preview-1-available.html"&gt;Jim Weaver post about Visage Preview&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://http//code.google.com/p/visage/"&gt;Visage Page&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://groups.google.com/group/visage-dev"&gt;Developers Group&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://groups.google.com/group/visage-users"&gt;Users Group&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/visage/downloads/list"&gt;Visage Preview 1 download&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/visage/wiki/InstallingPreviewBuilds"&gt;Visage installation&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5176444344343404230-1633879430917930850?l=fxapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxapps.blogspot.com/feeds/1633879430917930850/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fxapps.blogspot.com/2010/10/visage-my-first-impression.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/1633879430917930850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/1633879430917930850'/><link rel='alternate' type='text/html' href='http://fxapps.blogspot.com/2010/10/visage-my-first-impression.html' title='Visage: My First impression'/><author><name>William</name><uri>http://www.blogger.com/profile/12980844418405775676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176444344343404230.post-8655592872713647751</id><published>2010-09-26T19:49:00.000-07:00</published><updated>2010-09-26T19:54:14.965-07:00</updated><title type='text'>Search about Fish</title><content type='html'>HI HI HI!&lt;br /&gt;&lt;br /&gt;JavaFX Script is dead. No, it isn't, it will rebirth as &lt;a href="http://steveonjava.com/javaone-enterprise-javafx-and-jfxtras-presentations/"&gt;Visage&lt;/a&gt;. You know I love JavaFX Script because it's easy and fast to build what you want. Anyway,&amp;nbsp;&lt;a href="http://javafx.com/roadmap/"&gt;JavaFX will be better&lt;/a&gt; on next months...&lt;br /&gt;&lt;br /&gt;Well, I'm presenting another JavaFX app tagged as Useful, at least for me and some brazilian fishers... Our goal is to search basic information about fishes using the art of &lt;a href="http://en.wikipedia.org/wiki/Data_scraping#Screen_scraping"&gt;Screen Scrapping&lt;/a&gt;. The information is in Portuguese, because the easiest page&amp;nbsp;I found&amp;nbsp;to scrap &amp;nbsp;was in Portuguese...&lt;br /&gt;&lt;br /&gt;I'm using Google images too. Take a look below, all I can say is: JavaFX is great.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;public function getFishImages(fishName: String, callback: function(: String[]): Void) {&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var urls: String[];&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;imageRequest.stop();&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;imageRequest = HttpRequest {&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;location: "http://ajax.googleapis.com/ajax/services/search/images?v=1.0&amp;amp;q={fishName}&amp;amp;rsz=large&amp;amp;start=1"&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;onError: function(e){println(e)}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;onInput: function(is: InputStream) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;def parser:PullParser = PullParser {&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;documentType: PullParser.JSON&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;input: is&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;onEvent: function(e: Event) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (e.type == PullParser.END_VALUE) {&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (e.name == "url") {&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;insert e.text into urls;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (e.type == PullParser.END_DOCUMENT) {&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;callback(urls);&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parser.parse();&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;imageRequest.start();;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;The app:&lt;br /&gt;&lt;a href="http://twitpic.com/2rd134" title="Want to search information about fish? This JavaFX app can he... on Twitpic"&gt;&lt;img alt="Want to search information about fish? This JavaFX app can he... on Twitpic" height="200" src="http://twitpic.com/show/thumb/2rd134.jpg" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now you can &lt;a href="http://www.williamprogrammer.com/javafx/buscaPeixe/FishInformation.jnlp"&gt;run&lt;/a&gt; the app and/or &lt;a href="http://www.williamprogrammer.com/javafx/buscaPeixe/FishInformation.zip"&gt;download the source&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you are still interested in JavaFX Script you should check my &lt;a href="http://www.williamprogrammer.com/javafx/"&gt;humble JavaFX applications page&lt;/a&gt;&amp;nbsp;:).&lt;br /&gt;&lt;br /&gt;Peace.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5176444344343404230-8655592872713647751?l=fxapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxapps.blogspot.com/feeds/8655592872713647751/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fxapps.blogspot.com/2010/09/search-about-fish.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/8655592872713647751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/8655592872713647751'/><link rel='alternate' type='text/html' href='http://fxapps.blogspot.com/2010/09/search-about-fish.html' title='Search about Fish'/><author><name>William</name><uri>http://www.blogger.com/profile/12980844418405775676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176444344343404230.post-6246203164708808326</id><published>2010-08-26T19:00:00.000-07:00</published><updated>2010-08-26T19:00:39.564-07:00</updated><title type='text'>HttpRequester</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Hi!!!!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;First: thanks all guys for the ~200 visits since last week when I published "An app to search Images".&lt;br /&gt;&lt;br /&gt;Today I'm going to show you my new app which I created to test my RESTful WebServices. That's a simple solution to explore my services. Basically is a graphical interface for the great &lt;a href="http://download.oracle.com/docs/cd/E17802_01/javafx/javafx/1.2/docs/api/javafx.io.http/javafx.io.http.HttpRequest.html"&gt;HttpRequest&lt;/a&gt;&amp;nbsp;class. I'm working in a new app more complete perform my tests when working with &lt;a href="http://oreilly.com/catalog/9780596529260"&gt;RESTful and ROA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;&lt;!---&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" color="#274E13"&gt;The &lt;/font&gt;&lt;font class="Apple-style-span"&gt;&lt;b&gt;&lt;font class="Apple-style-span" color="#FF0000"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;JavaFX Script Language is great&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;font class="Apple-style-span" color="#274E13"&gt;. It helped me a lot to build it in a few hours (~2). I really do not know why some guys do not like this language. I feel powerful when using JFXScript because I can do what I want with a few lines of code... Of course, I like Java too...&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" color="#274E13"&gt;--&gt;&lt;/span&gt;&lt;br /&gt;Below you can see it working:&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/8y_ItRYLz3I?fs=1&amp;amp;hl=pt_BR"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/8y_ItRYLz3I?fs=1&amp;amp;hl=pt_BR" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;The main goal is see the response of your RESTful WEB Services. But you can test &lt;a href="http://apiwiki.twitter.com/Twitter-API-Documentation"&gt;services from Twitter&lt;/a&gt;, by instance. This app gives a good way to explore &lt;a href="http://www.programmableweb.com/apis/directory"&gt;REST APIs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can test the app in&amp;nbsp;&lt;a href="http://jfx-apps.freehostia.com/httpRequester/HttpRequester.html"&gt;applet mode&lt;/a&gt; or &lt;a href="http://jfx-apps.freehostia.com/httpRequester/HttpRequester.jnlp"&gt;download the JNLP&lt;/a&gt;. If someone wants the code, please, let's me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5176444344343404230-6246203164708808326?l=fxapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxapps.blogspot.com/feeds/6246203164708808326/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fxapps.blogspot.com/2010/08/httprequester.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/6246203164708808326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/6246203164708808326'/><link rel='alternate' type='text/html' href='http://fxapps.blogspot.com/2010/08/httprequester.html' title='HttpRequester'/><author><name>William</name><uri>http://www.blogger.com/profile/12980844418405775676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176444344343404230.post-3264204220568963759</id><published>2010-08-21T13:25:00.000-07:00</published><updated>2010-08-21T13:25:33.983-07:00</updated><title type='text'>An App to Search Images</title><content type='html'>Another app in JavaFX, this time to search images using Google, Bing, Flickr and Yahoo services. After search an image you can edit and save to your computer.&lt;br /&gt;&lt;br /&gt;You know, it was very easy to build it... JavaFX is easy and helped me a lot. With this &lt;a href="http://docs.google.com/View?id=dg22x7vj_159gbqgt5dq"&gt;api&lt;/a&gt; I'm working and some works from JavaFX community, it's turned more easier :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rakeshmenonp.wordpress.com/"&gt;&amp;nbsp;Rakesh Menon&lt;/a&gt; one more time helped me with their &lt;a href="http://rakeshmenonp.wordpress.com/2010/04/04/javafx-modal-dialog/"&gt;internal window&lt;/a&gt; and &lt;a href="http://rakeshmenonp.wordpress.com/2010/04/26/javafx-1-3-save-as-image/"&gt;Save as Image&lt;/a&gt;. I really miss their posts =/.&lt;br /&gt;&lt;br /&gt;I have a lot of small things to improve and finish in this app, but no time to... So I'm &lt;a href="http://jfx-apps.freehostia.com/PhotoSearch/PhotoSearch.7z"&gt;releasing the code&lt;/a&gt;, if you want you can improve the app, or you can do anything you want with it :D&lt;br /&gt;&lt;br /&gt;The video below show the app working:&lt;br /&gt;&lt;object height="385" style="clear: left; float: left;" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gYZger86Duk?fs=1&amp;amp;hl=pt_BR"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/gYZger86Duk?fs=1&amp;amp;hl=pt_BR" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well, I suggest you to &lt;a href="http://jfx-apps.freehostia.com/PhotoSearch/PhotoSearch.jnlp"&gt;launch the app&lt;/a&gt; and give you feedback :)&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5176444344343404230-3264204220568963759?l=fxapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxapps.blogspot.com/feeds/3264204220568963759/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fxapps.blogspot.com/2010/08/app-to-search-images.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/3264204220568963759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/3264204220568963759'/><link rel='alternate' type='text/html' href='http://fxapps.blogspot.com/2010/08/app-to-search-images.html' title='An App to Search Images'/><author><name>William</name><uri>http://www.blogger.com/profile/12980844418405775676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176444344343404230.post-4374017562023182367</id><published>2010-07-11T20:34:00.000-07:00</published><updated>2010-07-11T20:34:33.298-07:00</updated><title type='text'>Searching lyrics with this javafx app:  LyricsSearchFX</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://twitpic.com/24j45d" style="margin-left: 1em; margin-right: 1em;" title="Lyrics Search FX - With Translation!!! My new application see... on Twitpic"&gt;&lt;img alt="Lyrics Search FX - With Translation!!! My new application see... on Twitpic" height="150" src="http://twitpic.com/show/thumb/24j45d.png" width="150" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;This JavaFX app allows you to search lyrics using the &lt;a href="http://www.chartlyrics.com/api.aspx"&gt;Chart Lyrics API&lt;/a&gt;. There is a translation feature which uses the &lt;a href="http://code.google.com/intl/EN/apis/ajaxlanguage/documentation/"&gt;Google Translate API&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;The internal dialog was built with the great&amp;nbsp;&lt;a href="http://blogs.sun.com/rakeshmenonp/entry/javafx_modal_dialog"&gt;Modal Dialog&lt;/a&gt; from &lt;a href="http://rakeshmenonp.wordpress.com/"&gt;Rakesh Menon&lt;/a&gt;. All the HttpRequest are handled by this &lt;a href="http://docs.google.com/View?id=dg22x7vj_159gbqgt5dq"&gt;API&lt;/a&gt; I'm working.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;You can &lt;a href="http://www.4shared.com/file/2aaUsmO_/LyricsSearcherFXtar.html"&gt;download&lt;/a&gt; the code &amp;nbsp;and run in &lt;a href="http://jfx-apps.freehostia.com/LyricsSearchFX/"&gt;Applet&lt;/a&gt; or &lt;a href="http://jfx-apps.freehostia.com/LyricsSearchFX/LyricsSearcherFX.jnlp"&gt;JNLP&lt;/a&gt;&amp;nbsp;mode.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px;"&gt;Let me know your feelings about this app :D.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5176444344343404230-4374017562023182367?l=fxapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxapps.blogspot.com/feeds/4374017562023182367/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fxapps.blogspot.com/2010/07/searching-lyrics-with-this-javafx-app.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/4374017562023182367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/4374017562023182367'/><link rel='alternate' type='text/html' href='http://fxapps.blogspot.com/2010/07/searching-lyrics-with-this-javafx-app.html' title='Searching lyrics with this javafx app:  LyricsSearchFX'/><author><name>William</name><uri>http://www.blogger.com/profile/12980844418405775676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5176444344343404230.post-3545256741240201754</id><published>2010-07-09T05:59:00.000-07:00</published><updated>2010-07-09T07:23:13.630-07:00</updated><title type='text'>Presenting this blog!</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Apps! JavaFX! WEB! REST! *-*&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I like to spend my time with these things. I love REST. I love JavaFX. I like to show my apps to my mom, to my friends. I love to program all the night and wakeup another day with new ideas...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My prefered language are JavaFX, Java, Python, C. I like javascript libraries, like JQuery. SQL is great, sometimes i spend time creating schemas on database. I like a lot of things...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;I'm playing with JavaFX currently.&lt;/span&gt; &lt;i&gt;Will JavaFX die? Is Flash better than JavaFX? Will HTML5 destroy third part plugins on WEB?&lt;/i&gt;&lt;b&gt;I really don't care!&lt;/b&gt; I just like JavaFX... You should clean your mind of these questions and start programming in JavaFX, or Flash, Silverlight....Some guys are &lt;span class="Apple-style-span"  style="  line-height: 25px; font-family:arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;sensationalist&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"   style="  line-height: 25px; font-family:arial, sans-serif;font-size:19px;"&gt; &lt;/span&gt;and say things things they don't know... They are not God to preview the future...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;JavaFX&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt; is awesome!&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I work with database, &lt;b&gt;ETL&lt;/b&gt;, &lt;b&gt;ABAP&lt;/b&gt;, server monitoring,&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt; boring things&lt;/span&gt;. I already worked with C Programming Language( the best 3 months of my professional life, until now). Everybody knows me as a Java Programmer. So, I'm a Java freelancer programmer sometimes&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt; ;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Why I'm telling it in this post? Because it will clearier the objective of this blog.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And another goal is improve my english. English is important, even I'm in Brazil...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5176444344343404230-3545256741240201754?l=fxapps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxapps.blogspot.com/feeds/3545256741240201754/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fxapps.blogspot.com/2010/07/presenting-this-blog.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/3545256741240201754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5176444344343404230/posts/default/3545256741240201754'/><link rel='alternate' type='text/html' href='http://fxapps.blogspot.com/2010/07/presenting-this-blog.html' title='Presenting this blog!'/><author><name>William</name><uri>http://www.blogger.com/profile/12980844418405775676</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
