Open Source JavaFX Now!

Steve On Java

Hacking JavaFX and Java with Agility
  • rss
  • Home
  • About
  • Contact
  • SvJugFX
  • Open Source JavaFX Petition

Building Data Rich Interfaces with JavaFX

steveonjava | June 2, 2010

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 the benefit of folks who couldn’t make it out to Zurich this week. The agenda for the talk was as follows:

  • JavaFX Technology Stack
  • Data Binding
  • JavaFX 1.3 Controls
  • Control Styling
  • JavaFX 1.3 Layouts
  • Web Service Integration
  • JFXtras Data-driven ControlsApropos Demo

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.

Without further ado, here are the slides from today’s talk:

You can also download the slides as a PDF.

 
Comments
5 Comments »
Categories
JavaFX, jfxtras, presentation
Tags
controls, JavaFX, jazoon, jfxtras, layouts
Comments rss Comments rss
Trackback Trackback

JavaFX Talks Accepted

steveonjava | May 22, 2010

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 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.

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 “Zone”.  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:

I am fortunate enough to be able to co-present 2 Technical Sessions and 2 BOFs at JavaOne 2010:

Technical Session 1: Pro JavaFX: Developing Enterprise Applications
Co-presented with Jim Weaver

Technical Session 2: Take Control of JavaFX
Co-presented with Jonathan Giles from the JavaFX Control Team

Birds of a Feather Session 1: JFXtras: JavaFX Controls, Layouts, Services, and More
Co-presented with Dean Iverson and the rest of the JFXtras Team

Birds of a Feather Session 2: JavaFX Author JAM
Co-presented with Jim Weaver, Jim Clarke, Dean Iverson, and many other JavaFX authors (to be announced)

If you haven’t already, it is not too late to book your ticket for JavaOne.  This will definitely be a year you won’t want to miss!

 
Comments
2 Comments »
Categories
Announcements, Events, JavaFX, jfxtras
Tags
JavaFX, javaone, jazoon
Comments rss Comments rss
Trackback Trackback

Announcing the Apropos Project

steveonjava | May 3, 2010

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 corporate information.  The final release will include a test bed of public data, which can be used for display and testing.

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 JFXtras features, such as the XTableView.

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 Rally Community Edition, 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.

If you are interested in helping out with this project, please contact me.  I will have limited bandwidth until after the initial launch, but after that would love to scale up this project with interested parties.

Here is the full presentation, which includes additional screenshots of Apropos at the end (slides 15-19):

 
Comments
1 Comment »
Categories
Agile, Announcements, JavaFX, jfxtras, presentation
Tags
Agile, apropos, JavaFX, jfxtras, kanban, lean
Comments rss Comments rss
Trackback Trackback

JFXtras 0.6 Final Released

steveonjava | April 5, 2010

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 the very latest release (currently JavaFX 1.2.3), which can be downloaded from JavaFX.com.

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 follow my blog.

JFXtras Functionality

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.

Data-Driven Controls

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.

XTableView (browse demo source)

Read the rest of this entry »

 
Comments
39 Comments »
Categories
Announcements, JavaFX, jfxtras
Tags
JavaFX, jfxtras, open source, release
Comments rss Comments rss
Trackback Trackback

Launching Hyperlinks from JavaFX (including Mobile)

steveonjava | March 4, 2010

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 The Easy Way Out now).  Finally, I will show how you can do the same thing for JavaFX Mobile applications.

A Tale of 3 APIs

There are 3 different ways that you can launch hyperlinks in Java/JavaFX. It helps to have an internet connection such as broadband 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:

AppletStageExtensionWeb Start BasicServiceDesktop.browse
Works in AppletYesYesYes
Works in Web StartNoYesYes
Works in ApplicationNoNoYes
Works on Java 1.5YesYesNo
Can Set TargetYesNoNo
Default Target_self_blank_self

AppletStageExtension

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 AppletStageExtension javadocs):

Target ArgumentDescription
"_self"Show in the window and frame that contain the applet.
"_parent"Show in the applet’s parent frame. If the applet’s frame has no parent frame, acts the same as “_self”.
"_top"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”.
"_blank"Show in a new, unnamed top-level window.
nameShow 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.

Web Start BasicService

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 “_blank”.

Here is a small code excerpt showing how you would call the Web Start BasicService from your JavaFX code:

def basicService = ServiceManager.lookup("javax.jnlp.BasicService") as BasicService;
basicService.showDocument(new URL(url));

Desktop.browse

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’t work from JavaFX without a little hacking.

The quick and dirty hack is to modify your JavaFX distribution to include the rt.jar from Java 1.6 as explained in this earlier post.  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).

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!).

Since the code is easier to follow without reflection, I will show that first:

Desktop.getDesktop().browse(new URI(url));

And here is the munged version with reflection:

try {
    def desktopClazz = Class.forName("java.awt.Desktop");
    def desktop = desktopClazz.getMethod("getDesktop").invoke(null);
    def browseMethod = desktopClazz.getMethod("browse", [URI.class] as java.lang.Class[]);
    browseMethod.invoke(desktop, new URI(url));
} catch (e) {
    println("Upgrade to Java 6 or later to launch hyperlinks: {url}");
}

The Easy Way Out

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 JFXtras that takes care of all the plumbing for you.

There is a new JFXtras class called BrowserUtil that has a very simple API:

BrowserUtil.browse(url);

or

BrowserUtil.browse(url, target);

It is that simple…  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.

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:

XHyperlink {
    text: "Oracle's Homepage", url: "http://oracle.com/"}
}

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 repo.  Otherwise we are working on a release, which I will announce on this blog shortly which you can follow.

What about JavaFX mobile?

None of these desktop techniques actually work on a mobile device, so this is not a 100% solution yet.

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:

def midlet = com.sun.javafx.runtime.adapter.MIDletAdapter.getMidlet();

And then you can call platformRequest to launch a browser on the mobile device:

midlet.platformRequest(url);

Note: This requires use of private APIs, so this may not work in future JavaFX releases.

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.

 
Comments
6 Comments »
Categories
JavaFX, JavaFX Mobile, jfxtras
Tags
hyperlinks, JavaFX, JavaFX Mobile, jfxtras
Comments rss Comments rss
Trackback Trackback

JFXtras 0.6 Preview Available!

steveonjava | November 25, 2009

Happy Thanksgiving from the JFXtras team!  While everyone else is celebrating the holiday with friends and family, we are going to be busy finishing up the 0.6 release.

Wild turkey in LaConner, WA taken by stevevoght

In case you have some spare time between meals and celebration, you can join in the fun too by trying out the JFXtras 0.6 preview release, which can be downloaded here:

http://code.google.com/p/jfxtras/downloads/list

There is a whole slew of new functionality including the following under Common:

  • Layouts – Changes to the Grid API in preparation for inclusion in the JavaFX Soma release, and also added animation support to all the layouts.
  • Sphere – Pseudo 3D sphere created for the Groovy showdown with Andrey Almiray.
  • Gear – New shape from Steve Bixby.
  • ManualResizableRectangle – Very useful shape from Yannick’s post.
  • JXScene – Pedro’s improved API for Swing integration.
  • PaintUtil, HSBColor, new gradients – Liu’s magic paint classes
  • Custom Paints – From Jeff Friesen’s excellent article on Custom Paints.
  • Custom Cursors – From Jeff Friesen’s excellent article on Custom Cursors.
  • Wipe Library – A transition library from Simon Morris’ JavaFX in Action book.
  • XMap – A bindable Map implementation for JavaFX.
  • XStore – David Armitage’s simple persistence for JavaFX variables using dependency injection.
  • ImageCache – Caching of JavaFX images for building high performance applications contributed by Joshua Marinacci.
  • XEDT – Simplified event thread mangement for JavaFX infrastructure classes (Warning: Use the JavaFX Task API instead unless you know exactly what you are doing)

And the rest under a new Controls jar:

  • XTableView – I am still working on this, but it is very useful already as demonstrated by Jim Weaver’s SpeedReaderFX application.
  • XTreeView – Jim Clarke’s Tree Control.
  • XCalendarPicker – Tom’s excellent calendar control.
  • XPane – A titled region with rounded corners developed by Dean Iverson.
  • XPicker – David Armitage did some great work on this…  Check out his demo on the JFXtras website.
  • XShelfView – A high performance Display Shelf control implementation with support for reflection, titles, and a scrollbar as showcased on JFXStudio.
  • XSpinnerWheel – A prize spinner wheel that makes use of pseudo 3D effects as showcased in the JUG Prize Spinner application.
  • XMenu – Pure JavaFX Menu developed by Jonathan Giles (this version will be replaced by the official Sun Menu control when it becomes available).
  • XPasswordBox – Control from Liu to create a password field.
  • XMultiLineTextBox – Till’s control for editing multiple lines of text.
  • XSwingTable – From John Freeman, this gives you all the power of a JTable directly from JavaFX code.

For this release we decided to go with a new naming convention to differentiate our classes from the built-in JavaFX layouts and controls.  Most of the classes are now prefixed with an “X” for jfXtras.  This will make migration slightly more painful now, but prevent future collisions and name changes down the road.

There is also a new version of JFXtras Test.  This is the final version that will be released under this name (it is being merged with FEST-JavaFX), but it required an update to work with the new naming convention and to add some much-needed JUnit Runner support (see my Devoxx Conference Presentation for more details).

I probably missed a few things along the way here.  You can find the definitive list in the online JavaFXDoc:

http://jfxtras.googlecode.com/svn/site/javadoc/release-0.6/index.html

Please feel free to download the jars and give the preview release a try.  We are putting the finishing touches on several of the layouts and controls, so expect a final release in a week or so.

Happy Thanksgiving!

 
Comments
18 Comments »
Categories
Announcements, JavaFX, jfxtras
Tags
controls, JavaFX, jfxtras, layouts
Comments rss Comments rss
Trackback Trackback

Devoxx Conference Session Slides

steveonjava | November 24, 2009

Overall I was very impressed with Devoxx.  Everything including the movie theater venue, quality of the speakers, and professionalism of the attendees was top-notch.  Stephan Janssen definitely puts on quite an amazing show!

As a follow-up to my second Devoxx session, here is the full slide deck I presented:

Both this and the university session will be available on the Parleys.com beta site shortly, so you will be able to watch both sessions from the comfort of your home.

Now back to coding on the JFXtras 0.6 release with an announcement to be posted here very shortly…

 
Comments
2 Comments »
Categories
JavaFX, jfxtras, presentation
Tags
devoxx, JavaFX, jfxtras
Comments rss Comments rss
Trackback Trackback

Devoxx University Slides

steveonjava | November 18, 2009

My Devoxx university session yesterday was packed, which was awesome!  It was 3 hours of hard-core JavaFX knowledge, and almost everyone stayed for the duration.  Aaron Houston got a great shot of the venue (more on the Java Champions site):

JavaFX University Talk at Devoxx

I posted my slides on SlideShare, so check it out when you get a chance.  Special thanks to my co-authors, Jim, Weiqi, and Dean for help with the content.

For those of you at Devoxx, I also posted a new LearnFX question.  Please launch it with the link below and respond before or during my conference session tomorrow at 1:30PM to be eligable to win a prize!

More updates after my conference session tomorrow!

 
Comments
5 Comments »
Categories
Events, jfxtras, presentation, pro javafx, widgetfx
Tags
devoxx, learnfx, presentation
Comments rss Comments rss
Trackback Trackback

JUGSpinner Premieres at SVCodeCamp

steveonjava | October 7, 2009

Keith Combs and I did a presentation on JavaFX and WidgetFX at Silicon Valley Code Camp this past weekend to a packed room (see below for the slides).  This was my first time visiting SVCodeCamp and I was very impressed…  With a 2 day total of over 1700 attendees, it was the place to be in the Bay Area!

The highlight of our presentation was a new secret project I just finished (literally 1 hour before the presentation started).  It is called the JUG SpinnerWheel, and is a complete rewrite of Jim Weaver’s classic Java User Group Prize Wheel:

Clearly this is not rigged if I had to spin it 26 times!

Clearly this is not rigged if I had to spin it 26 times!

webstartsmall2

The revamped JUG SpinnerWheel includes a pseudo-3d rendered prize wheel, web service integration to meetup.com to retrieve event participants, and a winner display featuring the prototype JFXtras Table component.

We used this for the first time, and successfully gave away 3 copies of the Pro JavaFX Platform book to audience members eager to learn more about JavaFX!

You can find the full slides from the presentation (including details about the web service implementation of the JUG SpinnerWheel) on SlideShare:

Happy JavaFX hacking!

 
Comments
1 Comment »
Categories
Events, JavaFX, jfxtras, widgetfx
Tags
codecamp, JavaFX, jug, widgetfx
Comments rss Comments rss
Trackback Trackback

Watch WidgetFX and JFXtras at the SDForum

steveonjava | August 5, 2009

Last night I presented at the SDForum Java SIG to a very engaged and enthusiastic crowd.  This was the longest presentation to date, but the audience was great, and even stayed afterwards to ask questions.  Also, Rich Rein was an outstanding host, inviting us out to drink beers until midnight after the event (I hope his wife wasn’t upset!)

This is my last presentation gig until Devoxx at the end of the year, but I was able to get a great screencast recording of the session, which you can watch in full resolution on blip.tv:

Please enable Javascript and Flash to view this Blip.tv video.

Note: The end of the presentation got cut off due to a technical glitch in Camtasia, but to their credit it recovered the bulk of the recording on restart.

You can also browse the slide decks at your own pace in PDF format:

Part A (JFXtras): SuperchargingWithJFXtras-SDForum

Part B (WidgetFX): SuperchargingWithWidgetFX-SDForum

I hope you enjoy the video and slides!

 
Comments
1 Comment »
Categories
Events, JavaFX, jfxtras, widgetfx
Tags
JavaFX, jfxtras, presentation, sdforum, widgetfx
Comments rss Comments rss
Trackback Trackback

« Previous Entries

Publications


Upcoming Talks



Categories

  • Agile (1)
  • Announcements (15)
  • contest (3)
  • Events (17)
  • JavaFX (37)
  • JavaFX Mobile (1)
  • jfxtras (13)
  • Liferay (2)
  • presentation (7)
  • pro javafx (2)
  • SvJugFx (8)
  • Uncategorized (21)
  • Video (4)
  • widgetfx (9)

Affiliations

Awards

2009 JavaOne Rock Star!

rss Comments rss valid xhtml 1.1 design by jide powered by Wordpress get firefox