<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Steve On Java &#187; JavaFX</title>
	<atom:link href="http://steveonjava.com/category/javafx/feed/" rel="self" type="application/rss+xml" />
	<link>http://steveonjava.com</link>
	<description>Hacking JavaFX and Java with Agility</description>
	<lastBuildDate>Fri, 16 Jul 2010 16:52:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Petition to Open Source JavaFX</title>
		<link>http://steveonjava.com/petition-to-open-source-javafx/</link>
		<comments>http://steveonjava.com/petition-to-open-source-javafx/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 08:38:46 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[petition]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1261</guid>
		<description><![CDATA[


		
		
		
		At last night&#8217;s Silicon Valley JavaFX User Group event, I announced a petition to Open Source the JavaFX Platform.  This is a petition from the Java and JavaFX Community directed to the management of Oracle Corporation.  The goal of the petition is to increase the viability of the JavaFX platform to the benefit of [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsteveonjava.com%252Fpetition-to-open-source-javafx%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F99ZCHo%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Petition%20to%20Open%20Source%20JavaFX%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://steveonjava.com/petition-to-open-source-javafx/";
		var dzone_title = "Petition to Open Source JavaFX";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>At last night&#8217;s <a href="http://svjugfx.com/">Silicon Valley JavaFX User Group</a> event, I announced a petition to Open Source the JavaFX Platform.  This is a petition from the Java and JavaFX Community directed to the management of Oracle Corporation.  The goal of the petition is to increase the viability of the JavaFX platform to the benefit of both the community and Oracle.</p>
<blockquote><p>To the Leaders, Management, and Board of Directors at Oracle Corporation,</p>
<p>We the undersigned formally request that Oracle Corporation release the entire JavaFX Platform as open source software available for  modification and reuse by individuals, educators, and corporations.</p>
<p>&#8230;We believe that an essential part of the future success of this platform is to release it as open source software. &#8230; In our estimation, the increased adoption of JavaFX will make the  platform even more profitable for Oracle than it currently is as a  proprietary technology.</p></blockquote>
<p><a href="http://steveonjava.com/javafx-petition/">&#8230;read more</a></p>
<p>This petition has been embraced by community and industry leaders alike.  Here are some quotes from leaders in the JavaFX community:</p>
<p><a href="http://learnjavafx.typepad.com/"><img class="alignleft" style="margin-right: 10px;" title="Jim Weaver" src="../wp-content/uploads/2010/07/jim_weaver.gif" alt="" width="100" height="88" /></a><strong>Jim Weaver</strong><br />
JavaFX holds the potential of bringing back rich-client Java, after  fifteen years of force-fitting the Web to be an application execution  environment.   Open-sourcing JavaFX and related deployment technologies  will help rescue users and developers from continuing to settle for far  less than what could be experienced with rich-client Java.</p>
<p><a href="http://www.jroller.com/peter_pilgrim/"><img class="alignleft size-full wp-image-1288" style="margin-right: 10px;" title="Peter Pilgrim" src="http://steveonjava.com/wp-content/uploads/2010/07/Peter_Pilgrim_SFO_Cropped_bigger.jpg" alt="" width="73" height="73" /></a><strong>Peter Pilgrim</strong><br />
JavaFX is still a fantastic solution to be  portable, cross-platform, a technology which runs across multiple  deployment targets: desktop, mobile and other embedded devices and  across multiple operating systems. An Open JavaFX will allow innovation  to take place outside of Oracle completely and yet I also believe that  the repository, the service / provider owner, intellectual property must  be paid or monetised as well. I believe that people, individuals,  groups and companies will recognise the work of those who innovate. It  is possible to monetise JavaFX.</p>
<p>If you adding your name to the list of signatures, please visit the petition signatory page here:</p>
<p><a href="http://steveonjava.com/javafx-petition/"><img class="size-thumbnail wp-image-1263 alignleft" title="Signature" src="http://steveonjava.com/wp-content/uploads/2010/07/117053-matte-blue-and-white-square-icon-business-signature1-150x150.png" alt="" width="100" height="100" /></a></p>
<h2 style="text-align: left;"><span style="color: #ffffff;">.</span><a href="http://steveonjava.com/javafx-petition/"><br />
Sign the Petition</a></h2>
<p style="text-align: left;"><span style="color: #ffffff;">.</span></p>
<p style="text-align: left;">JavaFX was first announced three years ago at JavaOne 2007.  We would like to be able to present this petition to the management of Oracle at JavaOne on the 3rd event anniversary of this great technology.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 127px; width: 1px; height: 1px; overflow: hidden;">.</div>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/petition-to-open-source-javafx/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bay Area JUG Round-Up and Stuart&#8217;s Hands-on JavaFX Videos Available</title>
		<link>http://steveonjava.com/bay-area-jug-round-up-and-stuarts-hands-on-javafx-videos-available/</link>
		<comments>http://steveonjava.com/bay-area-jug-round-up-and-stuarts-hands-on-javafx-videos-available/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 12:50:28 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[SvJugFx]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[java posse]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[round-up]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1226</guid>
		<description><![CDATA[


		
		
		
		I am pleased to announce that we have a couple new videos available on the Silicon Valley JavaFX User Group (SvJugFx) video site.  Here is a link to the landing page where you can watch these videos as well as all our previous sessions:
http://web.ubivent.com/svjugfx.html
The first new video is a Hands-On JavaFX Lab given by [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsteveonjava.com%252Fbay-area-jug-round-up-and-stuarts-hands-on-javafx-videos-available%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F9dt08u%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Bay%20Area%20JUG%20Round-Up%20and%20Stuart%27s%20Hands-on%20JavaFX%20Videos%20Available%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://steveonjava.com/bay-area-jug-round-up-and-stuarts-hands-on-javafx-videos-available/";
		var dzone_title = "Bay Area JUG Round-Up and Stuart&#8217;s Hands-on JavaFX Videos Available";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>I am pleased to announce that we have a couple new videos available on the Silicon Valley JavaFX User Group (SvJugFx) video site.  Here is a link to the landing page where you can watch these videos as well as all our previous sessions:</p>
<p><a href="http://web.ubivent.com/svjugfx.html">http://web.ubivent.com/svjugfx.html</a></p>
<p>The first new video is a Hands-On JavaFX Lab given by Stuart Marks, core JavaFX team member, and regular SvJugFx attendee.  This was our most successful meeting so far for the local audience, because it filled in the gap between the very technical rich presentations we started with and the experience level of the attendees.  The entire flood tutorial was published as an <a href="http://www.smarks.org/svjugfx20100414/flood.html">HTML document</a>, but it is much more entertaining to see Stuart do it first hand:</p>
<p><a href="http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:210"><img class="alignnone size-large wp-image-1228" title="Stuart Hands-on" src="http://steveonjava.com/wp-content/uploads/2010/06/stuart-handson-650x339.png" alt="" width="650" height="339" /></a></p>
<p>Hands-on JavaFX:  <a href="http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:210">http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:210</a></p>
<p>The second was the wildly popular Bay Area JUG Round-Up event.  All the Bay Area user groups cooperated to host a massive event with a live recording of the Java Posse.  Oracle sponsored the event, with an introduction by Justin Kestelyn and update on Java.net from Sonya Barry.  And of course the <a href="http://javaposse.com/">Java Posse</a> did an amazing job working the crowd with some hilarious techie humor.</p>
<p><a href="http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:217"><img class="alignnone size-large wp-image-1229" title="Java Posse Round-up" src="http://steveonjava.com/wp-content/uploads/2010/06/posse-round-up-650x345.png" alt="" width="650" height="345" /></a></p>
<p>Justin Kestelyn:  <a href="http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:217,goto:v:-0">http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:217,goto:v:-0</a></p>
<p>Sonya Barry:  <a href="http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:217,goto:v:-1">http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:217,goto:v:-1</a></p>
<p>The Java Posse:  <a href="http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:217,goto:v:-2">http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:217,goto:v:-2</a></p>
<p>For our meeting next month we have the esteemed Max Katz coming to speak on Enterprise JavaFX.  He will demonstrate how to use the open-source Flamingo framework to connect a JavaFX application to an enterprise backend using JBoss Seam.  For those of you who don&#8217;t know, Exadel also develops an Eclipse plug-in for JavaFX, which he will be using for all his coding examples.  It should be an exciting event, so please sign-up to attend in person or online:</p>
<p><a href="http://www.svjugfx.org/calendar/13605800/"><img class="alignnone size-full wp-image-1227" title="Max Katz" src="http://steveonjava.com/wp-content/uploads/2010/06/0_mkatz.png" alt="" width="103" height="125" /></a></p>
<p>Enterprise JavaFX with Max Katz:  <a href="http://www.svjugfx.org/calendar/13605800/">http://www.svjugfx.org/calendar/13605800/</a></p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/bay-area-jug-round-up-and-stuarts-hands-on-javafx-videos-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Building Data Rich Interfaces with JavaFX</title>
		<link>http://steveonjava.com/building-data-rich-interfaces-with-javafx/</link>
		<comments>http://steveonjava.com/building-data-rich-interfaces-with-javafx/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 15:19:54 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[jfxtras]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[controls]]></category>
		<category><![CDATA[jazoon]]></category>
		<category><![CDATA[layouts]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1214</guid>
		<description><![CDATA[


		
		
		
		I had my Jazoon talk this morning on building data rich user interfaces with JavaFX.  In an informal poll before the start, it seemed like many of the attendees had not yet tried JavaFX, so hopefully this has encouraged them to give it a spin.
I posted the slides from the talk on Slideshare for [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsteveonjava.com%252Fbuilding-data-rich-interfaces-with-javafx%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F98pCPE%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Building%20Data%20Rich%20Interfaces%20with%20JavaFX%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://steveonjava.com/building-data-rich-interfaces-with-javafx/";
		var dzone_title = "Building Data Rich Interfaces with JavaFX";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>I had my Jazoon talk this morning on building data rich user interfaces with JavaFX.  In an informal poll before the start, it seemed like many of the attendees had not yet tried JavaFX, so hopefully this has encouraged them to give it a spin.</p>
<p>I posted the slides from the talk on Slideshare for the benefit of folks who couldn&#8217;t make it out to Zurich this week.  The agenda for the talk was as follows:</p>
<ul>
<li>JavaFX Technology Stack</li>
<li>Data Binding</li>
<li>JavaFX 1.3 Controls</li>
<li>Control Styling</li>
<li>JavaFX 1.3 Layouts</li>
<li>Web Service Integration</li>
<li>JFXtras Data-driven ControlsApropos Demo</li>
</ul>
<p>There is a lot of new information here on CSS styling and layouts in JavaFX 1.3 as well as some pre-announcements on some new bind functionality we are working on in the JFXtras project.  If you are interested in more details, please let me know in the comments section and I can follow up with subsequent blog posts.</p>
<p>Without further ado, here are the slides from today&#8217;s talk:<br />
<object id="__sse4391311" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jazoon-buildingdatarichinterfaceswithjavafx-100602100305-phpapp02&amp;stripped_title=building-data-rich-interfaces-with-javafx" /><param name="name" value="__sse4391311" /><param name="allowfullscreen" value="true" /><embed id="__sse4391311" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jazoon-buildingdatarichinterfaceswithjavafx-100602100305-phpapp02&amp;stripped_title=building-data-rich-interfaces-with-javafx" name="__sse4391311" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>You can also download the <a href="http://jfxtras.org/presentations/Jazoon%20-%20Building%20Data%20Rich%20Interfaces%20with%20JavaFX.pdf">slides as a PDF</a>.</p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/building-data-rich-interfaces-with-javafx/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>JavaFX Talks Accepted</title>
		<link>http://steveonjava.com/javafx-talks-accepted/</link>
		<comments>http://steveonjava.com/javafx-talks-accepted/#comments</comments>
		<pubDate>Sun, 23 May 2010 06:46:25 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[jfxtras]]></category>
		<category><![CDATA[javaone]]></category>
		<category><![CDATA[jazoon]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1192</guid>
		<description><![CDATA[


		
		
		
		I am honored to be accepted by some great conferences to speak on JavaFX.  Each of the talks I am giving is unique, which means more work for me, but is a great opportunity to talk about some different topics that I think are important for folks using JavaFX.
First up is Jazoon in Zurich, Switzerland [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsteveonjava.com%252Fjavafx-talks-accepted%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FbeZoei%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaFX%20Talks%20Accepted%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://steveonjava.com/javafx-talks-accepted/";
		var dzone_title = "JavaFX Talks Accepted";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>I am honored to be accepted by some great conferences to speak on JavaFX.  Each of the talks I am giving is unique, which means more work for me, but is a great opportunity to talk about some different topics that I think are important for folks using JavaFX.</p>
<p><a href="http://jazoon.com/"><img class="alignright size-full wp-image-1174" title="jazoon" src="http://steveonjava.com/wp-content/uploads/2010/04/jazoon.png" alt="" width="140" height="35" /></a>First up is <a href="http://jazoon.com/">Jazoon</a> in Zurich, Switzerland on June 1-3.  I have heard great things about this conference from folks who have attended in past years, and have already heard from some folks who will be attending my talk.  The topic for my session will be Building Data Rich Interfaces with JavaFX.  I have some good content lined up from my open source projects (actually too much content), so it should be a great session.</p>
<p>Next I will be speaking at JavaOne in my hometown of San Francisco on September 19-23.  Oracle is pulling out all the stops for this conference, taking over a full block of Mason Street as the JavaOne &#8220;Zone&#8221;.  They will be putting up a big tent with videostreaming and other festivities, in addition to the 4,000 square feet of space dedicated to talks and sessions.  For those of you who are not aware of the magnitude of Oracle, here is a shot of what they have done in past years for Oracle Open World:</p>
<p><a rel="attachment wp-att-1196" href="http://steveonjava.com/javafx-talks-accepted/oracle-tent/"><img class="alignnone size-full wp-image-1196" title="Oracle Moscone Tent" src="http://steveonjava.com/wp-content/uploads/2010/05/Oracle-Tent.jpg" alt="" width="600" height="400" /></a></p>
<p>I am fortunate enough to be able to co-present 2 Technical Sessions and 2 BOFs at JavaOne 2010:</p>
<p><strong>Technical Session 1</strong>: Pro JavaFX: Developing Enterprise Applications<br />
Co-presented with Jim Weaver</p>
<p><strong>Technical Session 2</strong>: Take Control of JavaFX<br />
Co-presented with Jonathan Giles from the JavaFX Control Team</p>
<p><strong>Birds of a Feather Session 1</strong>: JFXtras: JavaFX Controls, Layouts, Services, and More<br />
Co-presented with Dean Iverson and the rest of the JFXtras Team</p>
<p><strong>Birds of a Feather Session 2</strong>: JavaFX Author JAM<br />
Co-presented with Jim Weaver, Jim Clarke, Dean Iverson, and many other JavaFX authors (to be announced)</p>
<p>If you haven&#8217;t already, it is not too late to <a href="http://www.oracle.com/us/javaonedevelop/index.html">book your ticket</a> for JavaOne.  This will definitely be a year you won&#8217;t want to miss!</p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/javafx-talks-accepted/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Announcing the Apropos Project</title>
		<link>http://steveonjava.com/announcing-the-apropos-project/</link>
		<comments>http://steveonjava.com/announcing-the-apropos-project/#comments</comments>
		<pubDate>Tue, 04 May 2010 01:06:52 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[jfxtras]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[apropos]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1177</guid>
		<description><![CDATA[


		
		
		
		At the Lean Software and Systems Conference a week ago, Israel Gat, Erik Huddleston, and I did a presentation on Reformulating the Product Delivery Process.  At the end of this talk, we unveiled an open-source, JavaFX tool called Apropos that we use for Product Portfolio Planning at Inovis.

Note: The data has been blurred to hide [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsteveonjava.com%252Fannouncing-the-apropos-project%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FdoIKuw%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Announcing%20the%20Apropos%20Project%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://steveonjava.com/announcing-the-apropos-project/";
		var dzone_title = "Announcing the Apropos Project";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>At the <a href="http://atlanta2010.leanssc.org/">Lean Software and Systems Conference</a> a week ago, Israel Gat, Erik Huddleston, and I did a presentation on <a href="http://theagileexecutive.com/2010/04/26/apropos-the-inovis-end-to-end-kanban-system/">Reformulating the Product Delivery Process</a>.  At the end of this talk, we unveiled an open-source, JavaFX tool called <a href="http://code.google.com/p/apropos/">Apropos</a> that we use for Product Portfolio Planning at <a href="http://inovis.com/">Inovis</a>.</p>
<p><a href="http://code.google.com/p/apropos/"><img class="alignnone size-large wp-image-1178" title="apropos-portfolio" src="http://steveonjava.com/wp-content/uploads/2010/05/apropos-portfolio-650x430.png" alt="" width="650" height="430" /></a></p>
<p class="note">Note: The data has been blurred to hide corporate information.  The final release will include a test bed of public data, which can be used for display and testing.</p>
<p>What you are seeing in the above screenshot is the Portfolio Kanban View that we use for tracking features through their full lifecycle from proposal through validation.  It is backed by the Rally Agile Lifecycle Management tool, which exposes Web Services for accessing all of our planning data.  The entire UI was written in JavaFX, and makes heavy use of <a href="http://jfxtras.org/">JFXtras</a> features, such as the XTableView.</p>
<p>The plan for this tool is to do the initial launch of a BSD-licensed open-source version on May 22nd.  This will include support for the <a href="http://www.rallydev.com/agile_products/editions/community/signup/">Rally Community Edition</a>, which is free for up to 10 users.  In future releases we plan to support other Agile Lifecycle Management tools, both commercial and open-source, but will need assistance from the community to do this.</p>
<p>If you are interested in helping out with this project, please <a href="http://steveonjava.com/contact/">contact me</a>.  I will have limited bandwidth until after the initial launch, but after that would love to scale up this project with interested parties.</p>
<p>Here is the full presentation, which includes additional screenshots of <a href="http://code.google.com/p/apropos/">Apropos</a> at the end (slides 15-19):</p>
<div id="__ss_3853287" style="width: 425px;"><object id="__sse3853287" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=lssc10v5-100425212336-phpapp02&amp;stripped_title=reformulating-the-product-delivery-process-3853287" /><param name="name" value="__sse3853287" /><param name="allowfullscreen" value="true" /><embed id="__sse3853287" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=lssc10v5-100425212336-phpapp02&amp;stripped_title=reformulating-the-product-delivery-process-3853287" name="__sse3853287" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/announcing-the-apropos-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JavaFX 1.3 Top 10</title>
		<link>http://steveonjava.com/javafx-1-3-top-10/</link>
		<comments>http://steveonjava.com/javafx-1-3-top-10/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 21:45:40 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[javafx 1.3]]></category>
		<category><![CDATA[top-10]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1112</guid>
		<description><![CDATA[


		
		
		
		JavaFX 1.3 has just gone live on JavaFX.com.  This release is deceptively small, but has an enormous number of changes under the hood.  In this post I will take you through the Top 10 major features, giving you background information I learned from working with the JavaFX team, and flooding you with details on interesting [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsteveonjava.com%252Fjavafx-1-3-top-10%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F9AVafu%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaFX%201.3%20Top%2010%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://steveonjava.com/javafx-1-3-top-10/";
		var dzone_title = "JavaFX 1.3 Top 10";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>JavaFX 1.3 has just gone live on <a href="http://javafx.com/">JavaFX.com</a>.  This release is deceptively small, but has an enormous number of changes under the hood.  In this post I will take you through the Top 10 major features, giving you background information I learned from working with the JavaFX team, and flooding you with details on interesting tidbits you might otherwise miss.</p>
<h2>JavaFX 1.3 Top 10 Features</h2>
<p><a rel="attachment wp-att-1113" href="http://steveonjava.com/javafx-1-3-top-10/javafx1-3-top-ten/"><img class="alignnone size-full wp-image-1113" title="javafx1.3-top-ten" src="http://steveonjava.com/wp-content/uploads/2010/04/javafx1.3-top-ten.jpg" alt="" width="449" height="404" /></a></p>
<h4>1. New Controls</h4>
<p><span id="more-1112"></span>JavaFX 1.3 comes with several new controls that are extremely useful when designing user interfaces.  For building forms you have the new PasswordBox, ChoiceBox, and Separator classes.  The PasswordBox is similar to the TextBox control, except it automatically hides input as it is typed.  The ChoiceBox control is long overdue, but surprisingly simple to use.  The interface is similar to the ListView control, both of which take a sequence of items.</p>
<p>Speaking of the ListView, this control has received a serious upgrade.  This includes the ability to render horizontally or vertically as well as customizable cell renderers via a cellFactory closure.</p>
<p>In addition, there is a new ScrollView class that simplifies the task of creating a simple scrollable viewport surrounding a collection of nodes.  This has been a feature in <a href="http://jfxtras.org/">JFXtras</a> for a while, so it is nice to see that the JavaFX team thought it was useful enough to add to the core libraries.</p>
<p>Finally, all controls now take a Tooltip that will be displayed on rollover.</p>
<p>To bring it all together, here is a simple example that demonstrates all the new controls in action:</p>
<p><a rel="attachment wp-att-1150" href="http://steveonjava.com/javafx-1-3-top-10/controldemo/"><img class="alignnone size-full wp-image-1150" title="Control Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/ControlDemo.png" alt="" width="266" height="288" /></a></p>
<p>And here is the source code:</p>
<pre class="brush: javafx;">

import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.geometry.Insets;

var list = [&quot;apples&quot;, &quot;bananas&quot;, &quot;oranges&quot;, &quot;pears&quot;, &quot;cabbage&quot;];

ScrollView {
  width: 250
  height: 250
  managed: false
  node: VBox {
    padding: Insets {top: 10, left: 10, bottom: 10, right: 10}
    spacing: 10
    content: [
      PasswordBox {promptText: &quot;enter password&quot;}
      Separator {}
      ChoiceBox {
        items: list
      }
      ListView {
        vertical: false
        items: list
      }
    ]
  }
}
</pre>
<h4>2. Layout Enhancements</h4>
<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--> <!--[if gte mso 10]><br />
<mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin-top:0in; 	mso-para-margin-right:0in; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} --></p>
<p><!--[endif]--></p>
<p class="MsoNormal">Layout has undergone some serious changes as a result of this release, including the following:</p>
<ul>
<li>LayoutInfo and Resizable now include settings for fill, grow, and shrink.  Fill will allow you to specify whether the contents of a layout stop at their preferredSize or take up the maximum allowable space.  Grow and shrink are hints to the container about the relative priority for different nodes to get the available space.</li>
<li>LayoutInfo also includes a new margin feature, which makes it very easy to add visual padding around your Nodes in a layout!  This is in addition to padding, which appears on all the built-in layouts.</li>
<li>Container has a new snapToPixel boolean that allows you to create pixel-perfect alignments to avoid unwanted aliasing effects.</li>
<li>There is a new autoSize feature on Groups.<span> </span>Children will be automatically resized to their preferred width and height, preventing layout bugs when uninitialized components return the wrong bounds initially.<span> </span>You can still disable this feature, but it is strongly recommended that you fix your application to make use of preferred widths and heights instead of setting Node width and height manually.</li>
<li>Resizable classes automatically have layoutBounds set to [0, 0, width, height], avoiding an additional required declaration.</li>
<li>New support for baseline layouts via the TextOrigin class.</li>
<li>The Tile class now automatically sizes the tileWidth and tileHeight by default.</li>
<li>HPos and VPos have boolean for fillHeight and fillWidth, which rarely should be changed, but allow you to default back to the pre 1.3 behavior.</li>
</ul>
<p>For the most part, the JavaFX team has done an amazing job of keeping the layout changes backwards compatible.  However, to fully take advantage of the new layout features you will have to update your code.</p>
<p>The layout changes are significant enough that I can&#8217;t do them justice in this short blurb.  However, either myself or <a href="http://www.java.net/blogs/aim/">Amy Fowler</a> (whoever makes it first) will do an in depth article on just this one topic!</p>
<h4>3. Performance</h4>
<p>There have been some very significant changes in performance in the JavaFX 1.3 release all the way down to the compiler generated code.</p>
<p>Some areas you will notice the largest performance improvement in include:</p>
<ul>
<li>Bind performance &#8211; All binds in the language are now lazy by default, which means that they will get marked as dirty immediately, but only get re-evaluated when needed (if at all).</li>
<li>General code performance &#8211; With the compiler rewrite, a level of indirection on variable access has been removed, which will significantly improve the overall performance of any application.</li>
<li>Layout performance &#8211; The layout code has been optimized to reduce the number of passes required on each layout cycle, greatly improving the perceived responsiveness of applications.</li>
<li>Text performance &#8211; With the change to logical rather than physical layout bounds, any applications that heavily use Text elements will see a dramatic improvement in overall performance.</li>
<li>CSS performance &#8211; The CSS support has been rewritten from the ground up, greatly improving performance of applied styles.</li>
</ul>
<h4>4. Enhanced CSS</h4>
<p>The CSS support in JavaFX 1.3 has been rewritten from the ground up.  This includes some greatly enhanced functionality, especially for the Control classes, and also has a dramatic improvement on performance.</p>
<p>Because the changes are so significant, you may find that a lot of your previous styles do not work correctly on the 1.3 release.  The full set of CSS changes and supported tags is such a large topic that I will provide a link to the full JavaFX CSS specification once it is made available.</p>
<p>Dean Iverson has done an excellent writeup of some of the new CSS capabilties here: <a href="http://pleasingsoftware.blogspot.com/2010/04/advanced-javafx-control-styling.html">Advanced  JavaFX Control Styling</a></p>
<h4>5. 3D Support</h4>
<p>Via the new, experimental Prism graphics stack you can start experimenting with 3D graphics in your JavaFX applications.  Some of the new APIs that you will see throughout the JavaFX documentation for working with 3D graphics include:</p>
<ul>
<li>New Camera classes for changing the viewing perspective of the Scene, including a ParallelCamera that does orthographic projections and a PerspectiveCamera that can be used to see things in full 3D</li>
<li>Transition changes to accept a three dimensional axis on RotationTransition, ScaleTransition, and TranslateTransition</li>
<li>A completely revamped set of transform classes that accept z coordinates</li>
<li>A new Point3D class as well as changes to BoundingBox and Bounds to accept a third dimension</li>
<li>The addition of rotationAxis, scaleZ, and translateZ on all scene graph Nodes</li>
</ul>
<p>To use 3D in your applications you will need to enable the prism graphics stack with the following JVM argument:</p>
<pre class="brush: plain;">

-Xtoolkit prism
</pre>
<p>Runtime you can validate whether 3D is enabled or not using the new Platform and ConditionalFeature classes like this:</p>
<pre class="brush: javafx;">

Platform.isSupported(ConditionalFeature.3D);
</pre>
<p>The best example of JavaFX 3D in action is Jim Weaver&#8217;s new <a href="http://learnjavafx.typepad.com/weblog/2010/04/your-calendar-pwn3d-leveraging-the-javafx-scene3d-conditionalfeature.html">3D Calendar Cube post</a>.</p>
<p><a href="http://learnjavafx.typepad.com/weblog/2010/04/your-calendar-pwn3d-leveraging-the-javafx-scene3d-conditionalfeature.html"><img class="alignnone size-thumbnail wp-image-1122" title="CalendarCube3D" src="http://steveonjava.com/wp-content/uploads/2010/04/CalendarCube3D-150x150.png" alt="" width="150" height="150" /></a></p>
<h4>6. TV Emulator</h4>
<p>For the first time, JavaFX 1.3 includes a TV Emulator as part of the distribution.  This gives you the chance to compile and test your applications against the new TV profile, and sometime in the near future deploy it to the big screen!</p>
<p>The easiest way to change your application to run against the TV profile is to select the &#8220;Run in TV Emulator&#8221; option in the NetBeans Properties dialog.  From the command line you can accomplish the same thing by passing in &#8220;-profile TV&#8221; to both the compiler and JavaFX runtime.</p>
<p>Here is a screenshot of the TV Emulator in action:</p>
<p><a rel="attachment wp-att-1116" href="http://steveonjava.com/javafx-1-3-top-10/displayshelftv/"><img class="alignnone size-full wp-image-1116" title="DisplayShelfTV" src="http://steveonjava.com/wp-content/uploads/2010/04/DisplayShelfTV.png" alt="" width="340" height="260" /></a></p>
<p>The biggest change you will notice is the different icon in the upper-left hand corner of the screen.  From a development perspective, it feels very similar to the desktop experience, but you need to keep in mind the following constraints:</p>
<ul>
<li>Screen Distance &#8211; Your end users will be sitting 5 to 6 feet away from the screen, so your entire application has to be designed to be visually distinctive at a distance.</li>
<li>Remote Interaction &#8211; TV viewers do not typically sit on their couches with full QWERTY keyboards, so your UI will need to be designed to be fully operational from a common remote control.  This can make navigation, selection, and text input much more challenging.</li>
</ul>
<p>If you are interested to see a live demonstration of JavaFX TV, join us in person or for the live web stream of our <a href="http://www.svjugfx.org/calendar/13260637/">June SvJugFX meeting</a> with Mikhail Gorshenev from the JavaFX TV development team.</p>
<h4>7. Conditional Features</h4>
<p>I mentioned a little bit about conditional features in the 3D section above.  However, having conditional features is itself an extremely important feature.</p>
<p>In previous release of JavaFX if you wanted to make use of certain features, such as effects, that were only in the desktop profile, you were required to remove these from your code to compile against mobile.  With the addition of conditional features you can now safely include these features in your application and they will be silently ignored if they are not supported on your platform.</p>
<p>This takes the concept of write once, run anywhere to a new level in JavaFX, greatly simplifying development on platforms that only support the common profile!</p>
<p>Here is a short program that will print out whether or not each of the conditional features is enabled for your platform:</p>
<pre class="brush: javafx;">
import javafx.runtime.*;

println(&quot;Effect enabled: {Platform.isSupported(ConditionalFeature.EFFECT)}&quot;);
println(&quot;Input Method enabled: {Platform.isSupported(ConditionalFeature.INPUT_METHOD)}&quot;);
println(&quot;Scene 3D enabled: {Platform.isSupported(ConditionalFeature.SCENE3D)}&quot;);
println(&quot;Shape Clip enabled: {Platform.isSupported(ConditionalFeature.SHAPE_CLIP)}&quot;);
</pre>
<h4>8. Custom Cursors</h4>
<p>You are no longer limited to the set of default cursors defined on the Cursor class.  Using the new ImageCursor class you can take any JavaFX Image and turn it into a mouse cursor.</p>
<p>This capability was recently released as a part of the <a href="http://steveonjava.com/jfxtras-0-6-final-released/">JFXtras 0.6 Release</a> thanks to the hard work of Jeff Friesen, but is a very welcome addition to the core API!  Now all that is needed is an implementation of Jeff&#8217;s <a href="http://today.java.net/article/2009/07/27/introducing-custom-paints-javafx">custom paints</a>.</p>
<h4>9. Faster Animation</h4>
<p>JavaFX 1.3 has a new cacheHint option on Nodes that allows you to degrade performance while animations are taking place.  Perceptually it is hard for the user to notice the loss of quality, but it can have a very big difference in performance of your application.  This is a staple of other JavaFX scene graph technologies like <a href="http://piccolo2d.org/">Piccolo2D</a>, so it is good to see progress on this in the JavaFX 1.3 release.</p>
<p>There is a great example of how to use this new capability right in the <a href="http://java.sun.com/javafx/1.3/docs/api/javafx.scene/javafx.scene.Node.html">JavaFX Node API docs</a> (duplicated here for convenience):</p>
<pre class="brush: javafx;">
 expensiveNode.cache = true;
 expensiveNode.cacheHint = CacheHint.QUALITY;
 ...
 // Do an animation
 expensiveNode.cacheHint = CacheHint.SPEED;
 Timeline {
     keyFrames: [
         KeyFrame {
             time: 2s
             values: [
                 expensiveNode.scaleX =&gt; 2.0,
                 expensiveNode.scaleY =&gt; 2.0,
                 expensiveNode.rotate =&gt; 360,
                 expensiveNode.cacheHint =&gt; CacheHint.QUALITY
             ]
        }
     ]
 }.play();
</pre>
<h4>10. Preview Features</h4>
<p>In addition to the public API, JavaFX 1.3 contains a number of top secret new features!  These are features that are not final, but are very usable if you are willing to live with future API changes.  All of the preview features are grouped under the com.javafx.preview package, and include the following:</p>
<ul>
<li>Grid &#8211; A Grid layout that makes it much simpler to layout nodes in perfectly aligned rows and columns.  The original layout code was donated by the <a href="http://jfxtras.org/">JFXtras team</a>, and productized by the amazing layout skills of Amy Fowler.</li>
<li>MenuBar/PopupMenu &#8211; This is the completed version of Jonathan Giles very popular <a href="http://jonathangiles.net/blog/?p=566">Menu control</a>.  He is now a core member of the JavaFX Control Team, and plugging away at bringing this and other great controls to the hands of JavaFX developers.</li>
<li>TreeView &#8211; A full implementation of a hierarchical tree in JavaFX complete with TreeItems and TreeCells.</li>
<li>ToolBar &#8211; A palette-like control that lets you create rows of tool buttons with icons and text.  This is the handiwork of Paru Somashekar.</li>
</ul>
<p>In a future post I will go into more detail on usage of these preview features, which greatly extend the power of JavaFX!</p>
<h2>Other Noteworthy Features</h2>
<p>Besides the major features mentioned above, there are also thousands of little changes that have made it in to the 1.3 release.  While I don&#8217;t have time (or room) to cover all of them in detail, here are some other noteworthy features that you can take advantage of in your applications:</p>
<ul>
<li>New Amble font &#8211; JavaFX now includes its own high fidelity fonts that are consistent across all platforms.  Since this is the new default font, you may notice that the spacing and alignment of your existing applications may be slightly off.</li>
<li>Timelines can now be paused.  There is also an evaluateKeyValues that allows you to reevaluate the value portion of your animation (whatever is on the right side of the =&gt;) on demand (normally the value is evaluated once before the first Timeline execution).</li>
<li>You can get exceptions that occur while processing JSON/XML via the new exception variable on Event.</li>
<li>PullParsers can now be run asynchronously using the new ParserTask class.</li>
<li>FXD now supports node selection via an XPath-like syntax and has metadata support on nodes, which is exposed as a map to the application.</li>
<li>There is a new Bounds class for representing widths and heights.</li>
<li>Builtins has a new isReadOnly function, which tells you if a variable is bound.  No more catching AssignToBoundException!</li>
<li>Durations are now Comparable, have new constants for one and zero, and a new static TYPE_INFO variable.</li>
<li>CustomNode now has a publicly exposed children sequence.  This makes it much easier to work with scenegraph navigation.  It also solves a potentially perplexing issue with object initialization order.  You should definitely make use of the new children sequence rather than overriding the old create function.</li>
<li>The infernal scene graph warning is gone!  You can now move a node around the scenegraph without worrying about removing it from the previous parent.  Stuart Marks has a <a href="http://stuartmarks.wordpress.com/2009/12/04/that-infernal-scene-graph-warning-message-ii/">great blog post</a> about this.</li>
<li>Node has a new pickOnBounds variable that lets you change the active hit region to be the logical rather than the physical bounds.</li>
<li>All container nodes (Group, CustomNode, Container, Control) now extend Parent and have a children sequence, greatly simplifying scene graph traversal.</li>
<li>Text supports logical and physical bounds.  Big performance improvement with the new default of logical!</li>
<li>Improved charts…  background lines, shading, and cleaner text.  Here is a before and after picture:</li>
</ul>
<p><a rel="attachment wp-att-1131" href="http://steveonjava.com/javafx-1-3-top-10/chartbeforeandafter/"><img class="alignnone size-full wp-image-1131" title="Chart Before and After" src="http://steveonjava.com/wp-content/uploads/2010/04/chartBeforeAndAfter.png" alt="" width="626" height="327" /></a></p>
<h2>Additional Resources</h2>
<p>The JavaFX team did a great job of documenting the new features and migration to JavaFX 1.3 in the following articles:</p>
<ul>
<li><a href="http://javafx.com/docs/articles/javafx1-3.jsp">What&#8217;s New in  JavaFX 1.3</a></li>
<li><a href="http://javafx.com/docs/articles/porting-guide-javafx1-3.jsp">JavaFX  1.3 Migration Guide</a></li>
</ul>
<p>And not to be outdone, Jim Weaver had the very first external post about the 1.3 release emphasizing the new 3D capabilities:</p>
<ul>
<li><a href="http://learnjavafx.typepad.com/weblog/2010/04/your-calendar-pwn3d-leveraging-the-javafx-scene3d-conditionalfeature.html">Your Calendar PWN3D: Leveraging the JavaFX SCENE3D ConditionalFeature</a></li>
</ul>
<p>Since this post first appeared, some excellent resources have come up:</p>
<ul>
<li><a href="http://pleasingsoftware.blogspot.com/2010/04/advanced-javafx-control-styling.html">Advanced JavaFX Control Styling</a> by Dean Iverson</li>
<li></li>
</ul>
<p>As additional resource become available, I will continue to update this section.</p>
<h2>Conclusion</h2>
<p>I hope you enjoyed this whirlwind tour through all the new features of the JavaFX 1.3 release.  There is a lot of goodness here, some of which I might have missed, so please comment on any features of the 1.3 release that you enjoy using!</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 4976px; width: 1px; height: 1px; overflow: hidden;">
<h3 class="entry-header">Your Calendar PWN3D: Leveraging the JavaFX  SCENE3D ConditionalFeature</h3>
</div>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/javafx-1-3-top-10/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>JFXtras 0.6 Final Released</title>
		<link>http://steveonjava.com/jfxtras-0-6-final-released/</link>
		<comments>http://steveonjava.com/jfxtras-0-6-final-released/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 06:18:37 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[jfxtras]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=1011</guid>
		<description><![CDATA[


		
		
		
		I am pleased to announce the 0.6 release of the open-source JFXtras project, the largest 3rd party library of JavaFX add-ons.  This release is a very large undertaking that represents the work of several dozen contributors over the past 6 months.
JFXtras 0.6 will work with any JavaFX release in the 1.2 family.  We recommend using [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsteveonjava.com%252Fjfxtras-0-6-final-released%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2F9yUS14%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JFXtras%200.6%20Final%20Released%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://steveonjava.com/jfxtras-0-6-final-released/";
		var dzone_title = "JFXtras 0.6 Final Released";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p><a href="http://code.google.com/p/jfxtras/downloads/list"><img class="alignright size-full wp-image-1041" title="Download JFXtras 0.6" src="http://steveonjava.com/wp-content/uploads/2010/04/download-button1.png" alt="" width="175" height="174" /></a>I am pleased to announce the 0.6 release of the open-source JFXtras project, the largest 3rd party library of JavaFX add-ons.  This release is a very large undertaking that represents the work of several dozen contributors over the past 6 months.</p>
<p>JFXtras 0.6 will work with any JavaFX release in the 1.2 family.  We recommend using the very latest release (currently JavaFX 1.2.3), which can be downloaded from <a href="http://javafx.com/">JavaFX.com</a>.</p>
<p>Starting immediately, we will be focusing on developing a JavaFX 1.3 compatible JFXtras release.  Our plan is to release a 1.3 compatible version of JFXtras within 1 week of the official release announcement from Oracle.  To hear about future JFXtras release announcements, make sure to <a href="http://twitter.com/steveonjava">follow my blog</a>.</p>
<h3>JFXtras Functionality</h3>
<p>To make it easier to see some of the JFXtras capabilities in action, I have included Web Start demos from our component test library.  It may take a minute or two to load the first demo, but after that the rest should launch instantaneously.</p>
<h4>Data-Driven Controls</h4>
<p>The JFXtras controls include a Table, Tree, Shelf, Calendar, PasswordBox, Picker, Spinner, MultiLineTextBox, ScoreBoard, and Menu.  Many of these controls can be driven off a dynamic data provider that gives back incremental results from an asynchronous operation, such as a Web Service call.</p>
<p>XTableView (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/controls/test/org/jfxtras/scene/control/XTableViewDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XTableViewDemo.jnlp"><img class="alignnone size-full wp-image-1062" title="JFXtras XTableView Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/table.png" alt="" width="649" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XTableViewDemo.jnlp"><img class="alignnone size-full wp-image-642" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<p><span id="more-1011"></span>XShelfView (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/controls/test/org/jfxtras/scene/control/XShelfViewDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XShelfViewDemo.jnlp"><img class="alignnone size-full wp-image-1082" title="JFXtras Shelf Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/shelf1.png" alt="" width="574" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XShelfViewDemo.jnlp"><img class="alignnone size-full wp-image-642" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<p>XPicker (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/controls/test/org/jfxtras/scene/control/XPickerDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XPickerDemo.jnlp"><img class="alignnone size-full wp-image-1083" title="JFXtras XPicker Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/xpicker.png" alt="" width="640" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XPickerDemo.jnlp"><img class="alignnone size-full wp-image-642" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<h4>Advanced Layouts</h4>
<p>The JFXtras layouts include the XGrid, XMigLayout, and Resizable versions of Stack, HBox, and VBox.  All of these layouts support dynamic animation and a powerful defaults system.  The JFXtras XGrid has been contributed back to Oracle and will be included in the JavaFX 1.3 release.</p>
<p>XGrid (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/common/test/org/jfxtras/scene/layout/XGridEricDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XGridEricDemo.jnlp"><img class="alignnone size-full wp-image-1088" title="JFXtras Grid Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/grid.png" alt="" width="626" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XGridEricDemo.jnlp"><img class="alignnone size-full wp-image-642" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<h3>Wipe Library</h3>
<p>Wipe transitions including: blind, fade-out, fade-reveal, fade, fade-zoom, flip-180, reveal, shape, slide-over, slide, and swing-in as featured in Simon Morris&#8217; <a href="http://www.manning.com/morris/">JavaFX in Action</a> book.</p>
<p>Wide Demo (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/common/test/org/jfxtras/animation/wipe/WipeDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/WipeDemo.jnlp"><img class="alignnone size-full wp-image-1089" title="JFXtras Wipe Library" src="http://steveonjava.com/wp-content/uploads/2010/04/wipe.png" alt="" width="528" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/WipeDemo.jnlp"><img class="alignnone size-full wp-image-642" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<h4>Shapes</h4>
<p>JFXtras includes a wide selection of skinnable shapes including: Almond, Arrow, Asterisk, Astroid, Balloon, Cross, Donut, ETriangle, Gear, ITriangle, Lauburu, RTriangle, Rays, RegularPolygon, ResizableEllipse, ResizableRectangle, ReuleauxTriangle, RoundPin, Sphere, and Star.</p>
<p>Shapes Demo (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/common/test/org/jfxtras/scene/shape/ShapesDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/ShapesDemo.jnlp"></a><a href="http://jfxtras.org/jfxtras-0.6/ShapesDemo.jnlp"><img class="size-full wp-image-1056 alignnone" title="JFXtras Shapes Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/shape-demo2.png" alt="" width="367" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/ShapesDemo.jnlp"><img class="size-full wp-image-642  alignnone" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<h4>Borders</h4>
<p>We also have a large set of skinnable borders including: bevel, ellipse, empty, etched, frame, image, line, metallic, pipe, raised, rounded, shape, soft, and titled.</p>
<p>Borders Demo (<a href="http://code.google.com/p/jfxtras/source/browse/jfxtras.core/tags/release-0.6/common/test/org/jfxtras/scene/border/XGridBordersDemo.fx">browse demo source</a>)</p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XGridBordersDemo.jnlp"></a><a href="http://jfxtras.org/jfxtras-0.6/XGridBordersDemo.jnlp"><img class="alignnone size-full wp-image-1057" title="JFXtas Borders Demo" src="http://steveonjava.com/wp-content/uploads/2010/04/borders-demo1.png" alt="" width="636" height="120" /></a></p>
<p><a href="http://jfxtras.org/jfxtras-0.6/XGridBordersDemo.jnlp"><img class="size-full wp-image-642 alignnone" title="webstartsmall2" src="http://steveonjava.com/wp-content/uploads/2009/10/webstartsmall2.gif" alt="" width="88" height="34" /></a></p>
<h4>And a Whole Lot More</h4>
<p>Here are some of the other features JFXtras has to offer:</p>
<ul>
<li>XStore Data Storage &#8211; Simple persistence of JavaFX primitives and sequences with defaults,  auto-save, and save-on-exit.</li>
<li>Asynchronous JavaFX Support (for experts only) &#8211; Allows invocation  of JavaFX code off the EDT either via a SwingWorker-style callback or a  set of closure-driven primitives.</li>
<li>Swing Integration &#8211; Via the original SceneToJComponent wrapper or  the new, easier to use, JXScene class.</li>
<li>Custom Cursors and Paints &#8211; Allows you to use <a href="http://today.java.net/pub/a/today/2009/07/14/custom-cursors-javafx.html">custom cursors</a> and <a href="http://today.java.net/article/2009/07/27/introducing-custom-paints-javafx"> custom paints</a> within your JavaFX application via a special Toolkit as featured in Jeff Friesen&#8217;s articles.</li>
<li>Interpolatable and HSB Gradients &#8211; Ever wanted to animate a color?   This is the perfect solution, complete with support for an HSB color  palette.</li>
<li>Bindable XMap &#8211; A simplified map syntax for use with JavaFX that  includes bind support on gets.</li>
<li>Image Caching &#8211; An image caching library that supports high  performance, asynchronous loading and sizing of images from URLs.</li>
</ul>
<h3>Documentation</h3>
<p>The full API is documented online here:</p>
<p><a href="http://jfxtras.googlecode.com/svn/site/javadoc/release-0.6/index.html">http://jfxtras.googlecode.com/svn/site/javadoc/release-0.6/index.html</a></p>
<p>We also have a new documentation wiki on the JFXtras website.  Please  browse it for ideas on how to use the JFXtras components and feel free  to comment or contribute back to the docs to make them better:</p>
<p><a href="http://jfxtras.org/portal/core"><img class="alignnone size-full wp-image-1095" title="JFXtras Documentation Wiki" src="http://steveonjava.com/wp-content/uploads/2010/04/wiki1.png" alt="" width="500" height="136" /></a></p>
<p><a href="http://jfxtras.org/portal/core">http://jfxtras.org/portal/core</a></p>
<h3>Migrating from Previous Releases</h3>
<p>In order to avoid name collisions with the built-in JavaFX classes, we have undergone a fairly aggressive renaming strategy on all scene graph classes.  If you have been using an earlier version of JFXtras, you will have to rename your usages by pre-pending an X before the class name.  Going forward this will reduce the likelihood of collisions with JavaFX built-in classes and make it easier to visually inspect code that uses a mix of JavaFX and JFXtras classes.</p>
<p>Some other migration changes that you need to take into account include:</p>
<ul>
<li>The fill layout constraint has been changed from an enumeration to two booleans (hfill, vfill).</li>
<li>The Grid border feature has been replaced with a general purpose margin on XLayoutInfo</li>
<li>The Deck class has been renamed to XStack</li>
<li>All the layout classes starting with Resizable* have changed to X* (when in doubt try the JavaFX class name prepended with an X)</li>
</ul>
<h3>JFXtras Test</h3>
<p>There is also a matching release of JFXtras Test so you can do behavior-driven development with a declarative JavaFX syntax.  We use this for all the unit tests in JFXtras and encourage you to do the same on your projects.  Some of the new JFXtras Test features include:</p>
<ul>
<li>Asynchronous Testing Support &#8211; Test background processes such as HttpRequests</li>
<li>JUnit Integration &#8211; Integrate JFXtras Test in your Ant or Maven build using a standard JUnit runner</li>
</ul>
<p><a href="http://code.google.com/p/jfxtras/downloads/list">Download</a> it and give it at try!</p>
<h3>Credits</h3>
<p>Some of the folks I would like to thank for making this release possible include:</p>
<ul>
<li>Jim Weaver for inspiring me to start this project and being a great mentor.</li>
<li>Keith Combs for assisting me on various bits and putting up with my perfectionism on everything.</li>
<li>Jim Clarke for being the most productive JavaFX coder at Oracle who is not on the core team.</li>
<li>Dean Iverson for bringing MigLayout to JFXtras and being the clean code guru (see his article on <a href="http://jfxtras.org/portal/core/-/wiki/JFXtras/Style_guidelines">code conventions</a>).</li>
<li>David Armitage for contributing some great controls and making sure our documentation was top notch.</li>
<li>Tom Eugelink for being our voice of sanity on the mailing list and being polite about my past mistakes in misattributing his work.</li>
<li>Pedro Duque Vieira for making the world a safer place for Swing developers with JXScene.</li>
<li>John Freeman for contributing a very high quality JTable wrapper that I always underpromote.</li>
<li>And also: Peter Pilgrim, Christophe DUFOUR, Joshua Marinacci, Simon Morris, Andres Almiray, Jeff Friesen, Andrew Hughes, and Liu Huasong.</li>
</ul>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/jfxtras-0-6-final-released/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>JavaFX Store and JFrog Artifactory Videos on Ubivent</title>
		<link>http://steveonjava.com/javafx-store-and-jfrog-artifactory/</link>
		<comments>http://steveonjava.com/javafx-store-and-jfrog-artifactory/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 12:50:09 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[SvJugFx]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[artifactory]]></category>
		<category><![CDATA[gradle]]></category>
		<category><![CDATA[ivy]]></category>
		<category><![CDATA[java store]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=958</guid>
		<description><![CDATA[


		
		
		
		This past month we had a great combined meeting of the Silicon Valley JavaFX User Group (SvJugFx) together with the Silicon Valley Web User Group.  The presenters included Richard Hyde and James Allen from Oracle on the Java Store and Yoav Landman and Fred Simon from JFrog on repository management with Artifactory.
Our April SvJugFx presentation [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsteveonjava.com%252Fjavafx-store-and-jfrog-artifactory%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FarrtAQ%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22JavaFX%20Store%20and%20JFrog%20Artifactory%20Videos%20on%20Ubivent%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://steveonjava.com/javafx-store-and-jfrog-artifactory/";
		var dzone_title = "JavaFX Store and JFrog Artifactory Videos on Ubivent";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>This past month we had a great combined meeting of the <a href="http://svjugfx.org/">Silicon Valley JavaFX User Group (SvJugFx)</a> together with the <a href="http://www.meetup.com/sv-web-jug/">Silicon Valley Web User Group</a>.  The presenters included Richard Hyde and James Allen from Oracle on the <a href="http://www.java.com/en/store/index.jsp">Java Store</a> and Yoav Landman and Fred Simon from <a href="http://www.jfrog.org/">JFrog</a> on repository management with Artifactory.</p>
<p class="note">Our April SvJugFx presentation will feature Stuart Marks from the JavaFX  Team in Hands on JavaFX &#8211; Scripting the Scene Graph.  To attend in  person or via our live web stream (and be eligible for great prizes!),  please sign-up here: <a href="http://www.svjugfx.org/calendar/12863551/">http://www.svjugfx.org/calendar/12863551/</a></p>
<p>We were also fortunate enough to be contacted by the folks at <a href="http://web.ubivent.com/index.html">Ubivent</a> who have developed a JavaFX-based event platform.  Their platform is used by large corporations like SAP, and they have generously offered to host our videos going forward.  Therefore, you can now watch all the SvJugFx videos using JavaFX technology!</p>
<p>To watch the latest videos, you can go to the landing page for the new <a href="http://web.ubivent.com/svjugfx.html">SvJugFX Video Site</a>:</p>
<p><a href="http://web.ubivent.com/svjugfx.html"><img class="alignnone size-full wp-image-960" title="SvJugFx Video Landing Page" src="http://steveonjava.com/wp-content/uploads/2010/03/SvJugFxVideoLanding.png" alt="" width="411" height="278" /></a></p>
<p>Registration is optional, but will allow you to comment on the presentations.  Once you launch the application you will be taken to an event hall that lets you choose which presentation you want to watch:</p>
<p><a href="http://steveonjava.com/wp-content/uploads/2010/03/Ubivent.png"></a><a rel="attachment wp-att-961" href="http://steveonjava.com/2010/03/29/javafx-store-and-jfrog-artifactory/ubivent/"></a><a href="javascript:if%20(!deployJava.isWebStartInstalled(&quot;1.6+&quot;))%20{if%20(deployJava.installLatestJRE())%20{if%20(deployJava.launch(&quot;http://jnlp.ubivent.com/jnlp/eventid=10/guest=1&quot;))%20{}}}%20else%20{if%20(deployJava.launch(&quot;http://jnlp.ubivent.com/jnlp/eventid=10/guest=1&quot;))%20{}}"></a><a href="javascript:if%20(!deployJava.isWebStartInstalled(&quot;1.6+&quot;))%20{if%20(deployJava.installLatestJRE())%20{if%20(deployJava.launch(&quot;http://jnlp.ubivent.com/jnlp/eventid=10/guest=1&quot;))%20{}}}%20else%20{if%20(deployJava.launch(&quot;http://jnlp.ubivent.com/jnlp/eventid=10/guest=1&quot;))%20{}}"></a><a href=": http://web.ubivent.com/svjugfx.html"></a><a href="http://web.ubivent.com/svjugfx.html"><img class="alignnone size-full wp-image-961" title="SvJugFx Ubivent Lobby" src="http://steveonjava.com/wp-content/uploads/2010/03/Ubivent.png" alt="" width="618" height="401" /></a></p>
<p>Finally, when you click on a presentation you will be given a virtual theater experience with side-by-side slides and video.  You can click on the double arrows to expand it to full screen, skip around by chapter, and comment on the video as you are watching.</p>
<p><a href="http://steveonjava.com/wp-content/uploads/2010/03/JavaStore.png"></a><a rel="attachment wp-att-962" href="http://steveonjava.com/2010/03/29/javafx-store-and-jfrog-artifactory/javastore/"></a><a href="http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:124"><img class="alignnone size-full wp-image-962" title="JavaStore Presentation" src="http://steveonjava.com/wp-content/uploads/2010/03/JavaStore.png" alt="" width="618" height="401" /></a></p>
<p>For convenience, here are some links that will take you directly to the two videos and their associated slide shows:</p>
<p><a href="http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:124">Java Store &amp; Java Warehouse Overview (video)</a> (<a href="http://www.slideshare.net/steveonjava/java-store-java-warehouse-overview-3584515">slides</a>)</p>
<p><a href="http://jnlp.ubivent.com/jnlp/eventid=10/guest=1/path=doc:129,doc:128,doc:125">Repository Management with JFrog Artifactory (video)</a> (<a href="http://www.slideshare.net/steveonjava/repository-management-with-jfrog-artifactory">slides</a>)</p>
<p>Also, we have posted the videos on our <a href="http://parleys.com/#st=4&amp;id=99975">Parleys SvJugFx Space</a> and will continue to do that for folks who like using this excellent presentation platform.</p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/javafx-store-and-jfrog-artifactory/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Launching Hyperlinks from JavaFX (including Mobile)</title>
		<link>http://steveonjava.com/launching-hyperlinks-from-javafx-including-mobile/</link>
		<comments>http://steveonjava.com/launching-hyperlinks-from-javafx-including-mobile/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 19:52:27 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JavaFX Mobile]]></category>
		<category><![CDATA[jfxtras]]></category>
		<category><![CDATA[hyperlinks]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=814</guid>
		<description><![CDATA[


		
		
		
		Creating hyperlinks in JavaFX should be in the category of things that are trivially easy, but is complicated by various factors, such as deployment mode and Java version.  First I will go into detail on all the different permutations of how you can launch links in a browser and under what circumstances each will [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsteveonjava.com%252Flaunching-hyperlinks-from-javafx-including-mobile%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fbc4SAe%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Launching%20Hyperlinks%20from%20JavaFX%20%28including%20Mobile%29%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://steveonjava.com/launching-hyperlinks-from-javafx-including-mobile/";
		var dzone_title = "Launching Hyperlinks from JavaFX (including Mobile)";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p><a href="http://steveonjava.com/wp-content/uploads/2010/02/image_gallery.jpg"><img class="size-full wp-image-831 alignright" title="link" src="http://steveonjava.com/wp-content/uploads/2010/02/image_gallery.jpg" alt="" width="260" height="215" /></a>Creating hyperlinks in JavaFX should be in the category of things that are trivially easy, but is complicated by various factors, such as deployment mode and Java version.  First I will go into detail on all the different permutations of how you can launch links in a browser and under what circumstances each will work. Next I will give you a nice packaged solution that you can use as a library (if you are impatient, just skip to <a href="#out">The Easy Way Out</a> now).  Finally, I will show how you can do the same thing for <a href="#mobile">JavaFX Mobile applications</a>.</p>
<h2>A Tale of 3 APIs</h2>
<p>There are 3 different ways that you can launch hyperlinks in Java/JavaFX. It helps to have an internet connection such as <a href="http://www.o2.co.uk/">broadband</a> to be able to launch this. Unfortunately, none of them work in all circumstances, so you need to know when to call each.  Here is a quick reference table:</p>

<table id="wp-table-reloaded-id-3-no-1" class="wp-table-reloaded wp-table-reloaded-id-3">
<thead>
	<tr class="row-1 odd">
		<th class="column-1"></th><th class="column-2">AppletStageExtension</th><th class="column-3">Web Start BasicService</th><th class="column-4">Desktop.browse</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">Works in Applet</td><td class="column-2">Yes</td><td class="column-3">Yes</td><td class="column-4">Yes</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">Works in Web Start</td><td class="column-2">No</td><td class="column-3">Yes</td><td class="column-4">Yes</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">Works in Application</td><td class="column-2">No</td><td class="column-3">No</td><td class="column-4">Yes</td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">Works on Java 1.5</td><td class="column-2">Yes</td><td class="column-3">Yes</td><td class="column-4">No</td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">Can Set Target</td><td class="column-2">Yes</td><td class="column-3">No</td><td class="column-4">No</td>
	</tr>
	<tr class="row-7 odd">
		<td class="column-1">Default Target</td><td class="column-2">_self</td><td class="column-3">_blank</td><td class="column-4">_self</td>
	</tr>
</tbody>
</table>

<h3>AppletStageExtension</h3>
<p>The first option is to use the JavaFX AppletStageExtension.  This is only available if you are running as an Applet, but also gives you the most control over how the hyperlink is launched.  In addition to a URL you can also specify a target, which can be any of the standard HTML targets including the following (excerpted from the <a href="http://java.sun.com/javafx/1.2/docs/api/javafx.stage/javafx.stage.AppletStageExtension.html">AppletStageExtension javadocs</a>):</p>

<table id="wp-table-reloaded-id-1-no-1" class="wp-table-reloaded wp-table-reloaded-id-1">
<thead>
	<tr class="row-1 odd">
		<th class="column-1">Target Argument</th><th class="column-2">Description</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">"_self"</td><td class="column-2">Show in the window and frame that contain the applet.</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">"_parent"</td><td class="column-2">Show in the applet’s parent frame. If the applet’s frame has no parent frame, acts the same as “_self”.</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">"_top"</td><td class="column-2">Show in the top-level frame of the applet’s window. If the applet’s frame is the top-level frame, acts the same as “_self”.</td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">"_blank"</td><td class="column-2">Show in a new, unnamed top-level window.</td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">name</td><td class="column-2">Show in the frame or window named name. If a target named name  does not already exist, a new top-level window with the specified name is created, and the document is shown there.</td>
	</tr>
</tbody>
</table>

<h3>Web Start BasicService</h3>
<p>The second option is to use the Web Start BasicService.  This works from both JavaFX Applets and Web Start applications, but does not let you specify the HTML target.  It is effectively the same as using the AppletStageExtension with a target of &#8220;_blank&#8221;.</p>
<p>Here is a small code excerpt showing how you would call the Web Start BasicService from your JavaFX code:</p>
<pre class="brush: javafx;">
def basicService = ServiceManager.lookup(&quot;javax.jnlp.BasicService&quot;) as BasicService;
basicService.showDocument(new URL(url));
</pre>
<h3>Desktop.browse</h3>
<p>The third option is to use the new Desktop class introduced in Java 1.6.  This works from Applet, Web Start applications, and Standard Execution (within a desktop Frame).  Unfortunately, it did not exist in Java 1.5, so it won&#8217;t work from JavaFX without a little hacking.</p>
<p>The quick and dirty hack is to modify your JavaFX distribution to include the rt.jar from Java 1.6 as explained in this <a href="http://steveonjava.com/2009/01/02/hacking-javafx-10-to-use-java-16-features/">earlier post</a>.  The only problem with this is you also have to get all the other developers on your project to do the same (and redo this on every upgrade).</p>
<p>The friendlier approach is to use reflection to check and see if the Desktop class is available, and then invoke the methods dynamically.  There is quite a bit more boilerplate code, but it will allow you to compile with a plain vanilla JavaFX installation, and also handle the odd case where someone is trying to run JavaFX under 1.5.  (Which is unsupported on Windows/Unix, and is now even supported on 32-bit Mac systems with the release of Snow Leopard!).</p>
<p>Since the code is easier to follow without reflection, I will show that first:</p>
<pre class="brush: javafx;">
Desktop.getDesktop().browse(new URI(url));
</pre>
<p>And here is the munged version with reflection:</p>
<pre class="brush: javafx;">
try {
    def desktopClazz = Class.forName(&quot;java.awt.Desktop&quot;);
    def desktop = desktopClazz.getMethod(&quot;getDesktop&quot;).invoke(null);
    def browseMethod = desktopClazz.getMethod(&quot;browse&quot;, [URI.class] as java.lang.Class[]);
    browseMethod.invoke(desktop, new URI(url));
} catch (e) {
    println(&quot;Upgrade to Java 6 or later to launch hyperlinks: {url}&quot;);
}
</pre>
<h2><a name="out">The Easy Way Out</a></h2>
<p>When things are easy to do, they will get done right.  To make sure that JavaFX applications do not fall prey to broken and inconsistent linking, I put together a library for <a href="http://jfxtras.org/">JFXtras</a> that takes care of all the plumbing for you.</p>
<p>There is a new JFXtras class called BrowserUtil that has a very simple API:</p>
<pre class="brush: javafx;">
BrowserUtil.browse(url);
</pre>
<p>or</p>
<pre class="brush: javafx;">
BrowserUtil.browse(url, target);
</pre>
<p>It is that simple&#8230;  Conversion of string URLs to URL or URI objects, selection of the correct API based on your deployment mode, and failover modes based on the Java version are all included.</p>
<p>In addition, I created an extended Hyperlink called the XHyperlink.  This behaves identically to the built-in control, with the addition of simple configuration of URL navigation (this is what hyperlinks are designed for, right?)  The usage of the XHyperlink class is as follows:</p>
<pre class="brush: javafx;">
XHyperlink {
    text: &quot;Oracle's Homepage&quot;, url: &quot;http://oracle.com/&quot;}
}
</pre>
<p>All of this functionality will be included in the JFXtras 0.6 release.  If you need it now, you can build off the head of our <a href="http://code.google.com/p/jfxtras/source/browse/">repo</a>.  Otherwise we are working on a release, which I will announce on this blog shortly which you can <a href="http://twitter.com/steveonjava">follow</a>.</p>
<h2><a name="mobile">What about JavaFX mobile?</a></h2>
<p>None of these desktop techniques actually work on a mobile device, so this is not a 100% solution yet.</p>
<p>Fortunately, there is also a solution for JavaFX Mobile if you are willing to delve in to the Java ME APIs.  To do this you first need to get a handle to the MIDlet like this:</p>
<pre class="brush: javafx;">
def midlet = com.sun.javafx.runtime.adapter.MIDletAdapter.getMidlet();
</pre>
<p>And then you can call platformRequest to launch a browser on the mobile device:</p>
<pre class="brush: javafx;">
midlet.platformRequest(url);
</pre>
<p class="note">Note: This requires use of private APIs, so this may not work in future JavaFX releases.</p>
<p>It is not possible to merge this in with the desktop solution, because the JavaFX Mobile libraries do not exist on the desktop platform (and vice versa), but it is relatively easy to use this technique yourself by copying and pasting the above code sample into a helper function in your application.</p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/launching-hyperlinks-from-javafx-including-mobile/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Hinkmond&#8217;s JavaFX Mobile Dojo</title>
		<link>http://steveonjava.com/hinkmonds-javafx-mobile-dojo/</link>
		<comments>http://steveonjava.com/hinkmonds-javafx-mobile-dojo/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 20:19:19 +0000</pubDate>
		<dc:creator>steveonjava</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[SvJugFx]]></category>
		<category><![CDATA[hinkmond wong]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://steveonjava.com/?p=819</guid>
		<description><![CDATA[


		
		
		
		In case you missed the big event last week, I have finished post-processing and uploading the video.  We took the quality up a notch by getting a direct screen capture from the presenter laptop.  This means that you will not only get crystal clear slides, but also full-screen demos and a nice tight head-shot of [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-right: 0.75em;; margin-top: 4px; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsteveonjava.com%252Fhinkmonds-javafx-mobile-dojo%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fc9WL9m%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Hinkmond%27s%20JavaFX%20Mobile%20Dojo%22%20%7D);"></div>
<!--S-ButtonZ 1.1.5 Start--><div style="float: left; width: 42px; padding-right: 10px; margin: 0 10px 0 0;">
		<script type="text/javascript">
		<!--
		var dzone_url = "http://steveonjava.com/hinkmonds-javafx-mobile-dojo/";
		var dzone_title = "Hinkmond&#8217;s JavaFX Mobile Dojo";
		var dzone_style = "1";
		var dzone_blurb = "";
		//-->
		</script>
		<script language="javascript" src="http://widgets.dzone.com/widgets/zoneit.js"></script></div><!--S-ButtonZ 1.1.5 End--><p>In case you missed the big event last week, I have finished post-processing and uploading the video.  We took the quality up a notch by getting a direct screen capture from the presenter laptop.  This means that you will not only get crystal clear slides, but also full-screen demos and a nice tight head-shot of the presenter.  This moves our video setup firmly up from a Level 4 to a premium Level 1 operation as detailed in <a href="http://blog.parleys.com/?p=211">Stephan Janssen&#8217;s blog</a>.</p>
<p>Without further ado, here is the Parleys version of Hinkmond&#8217;s JavaFX Mobile Dojo talk:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="381" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="pageId" value="1870" /><param name="src" value="http://www.parleys.com/share/parleysshare2.swf?pageId=1870" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="500" height="381" src="http://www.parleys.com/share/parleysshare2.swf?pageId=1870" pageid="1870" allowfullscreen="true"></embed></object></p>
<p>I got a lot of requests for just the slides last time, so I am also making them available here:</p>
<div id="__ss_3227800" style="text-align: left; width: 425px;"><object style="margin: 0px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=svjfugjavafxmobilev10-100219135855-phpapp01&amp;stripped_title=hinkmonds-javafx-mobile-dojo" /><param name="allowfullscreen" value="true" /><embed style="margin: 0px;" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=svjfugjavafxmobilev10-100219135855-phpapp01&amp;stripped_title=hinkmonds-javafx-mobile-dojo" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>Finally, a quick plug for our next SvJugFx event.  We will be doing a double feature with folks from the Java Store and JFrog Artifactory presenting back-to-back.  Even if you plan to attend online, make sure to sign-up here:<br />
<a href="http://www.svjugfx.org/calendar/12559455/">http://www.svjugfx.org/calendar/12559455/</a></p>
<div style="clear:both;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://steveonjava.com/hinkmonds-javafx-mobile-dojo/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
