FX Experience Has Gone Read-Only

I've been maintaining FX Experience for a really long time now, and I love hearing from people who enjoy my weekly links roundup. One thing I've noticed recently is that maintaining two sites (FX Experience and JonathanGiles.net) takes more time than ideal, and splits the audience up. Therefore, FX Experience will become read-only for new blog posts, but weekly posts will continue to be published on JonathanGiles.net. If you follow @FXExperience on Twitter, I suggest you also follow @JonathanGiles. This is not the end - just a consolidation of my online presence to make my life a little easier!

tl;dr: Follow me on Twitter and check for the latest news on JonathanGiles.net.

I seem to be on a blogging / open source release roll at the moment, as I’ve got a new release of ControlsFX available today to go with the release of Scenic View I put out the other day. This release of ControlsFX is the first developer preview release of ControlsFX 8.0.2, and contains a number of bug fixes and new features (as always, note that 0.0.x releases in ControlsFX are major releases, despite what the number implies). For those of you playing along at home, ControlsFX is continuing to be developed at breakneck pace – we’ve so far had major releases in May, June, July and now August (we’re apparently marching at around a one-release-a-month beat).

This release was primarily driven due to changes in private API in JavaFX 8.0 b102 and later that causes ControlsFX to no longer work in these releases. Therefore, ControlsFX 8.0.0 and ControlsFX 8.0.1 releases are now effectively deprecated due to this, as they no longer work, and ControlsFX 8.0.2 developer preview 1 requires JavaFX 8.0 b102 or later.

On top of the numerous bug fixes and the resolution of the issue mentioned above, this release includes the following new features (among others):

Native Dialog TitleBars
When we first released dialogs in ControlsFX it was all based on a custom, cross-platform style (as shown in the first screenshot below). This was great as we didn’t need to deal with any issues with consistency issues across different operating systems. However, we’ve since received requests to support native titlebars in dialogs, so we’ve now done it! Here’s the required screenshots:

Default, cross-platform style:


Native Windows (Windows 8):

Native Linux (Ubuntu):

Native Mac OS X:

This is a control that I’ve always wanted but it has never seemed to have existed, so in a fit of frustration I quickly threw it together myself. Essentially, the use case is when you have a block of text in which you want to embed hyperlinks (kind of like what I just craftily did right there). In this situation you are left to painfully merge together Label and Hyperlink nodes, and hope everything works out. To save you this hassle, take HyperlinkLabel for a spin! This control takes a text string (like a Label), but you can annotate that string with text in [square braces]. By doing this, the text in square braces is automatically rendered as a hyperlink. You can then register a callback to be notified when a user clicks on the hyperlinks in the text (and then do the correct thing, based on the selected hyperlink). Here’s a thrilling screenshot of the control in action:


Of all the new features in ControlsFX 8.0.2 this is by far the most ‘in development’ feature (that is, most alpha and the control most likely to be totally overhauled before 8.0.2 is finally released). In fact, this code has not even had a code review yet – so consider yourself warned! 🙂 SpreadsheetView is, as you’d expect, a spreadsheet-like control for JavaFX, based on top of TableView. This control supports what you’d expect: cell spanning, fixed rows and columns, etc. Here’s a screenshot of the control in its very early development state:


Well, that’s all for now. If you’re keeping up with the ControlsFX releases, please go and download! Leave any comments of praise as comments in this blog post. If you have bugs or feature requests, then follow the links on the ControlsFX main site for the mailing list or bug tracker.