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.

Announcing ControlsFX 8.0.5

Announcing ControlsFX 8.0.5

It’s time for another ControlsFX release, this time taking the version number to 8.0.5. As always, ignore the minor version increment – this is a massive release. This release has new controls and a number of bug fixes, so it is recommended that everyone upgrade as soon as possible. As per usual, the latest version is always available in maven central (as well as snapshot versions of the next release), and you can download the release directly from the ControlsFX website.

This release was developed by Eugene Ryzhikov, Samir Hadzic, Dirk LemmermannDavid Grieve, IsNull, Dennis Fischer, Paul Jonas, Kouchuu, and I. It is because of these fine folks you can use ControlsFX, so be sure to give them a high-five if you pass them in the street.

If you aren’t familiar with ControlsFX, you should check out the main ControlsFX website, and more importantly, the ControlsFX features page. Once you’re done there you should take a look at our sample app and javadocs.

With that out of the way, here is what is new in ControlsFX 8.0.5:

AutoComplete TextField
With this you can provide suggestions to users as they type into a TextField. The popup will only show options based on the currently typed input.

autoCompletion


BreadCrumbBar
The BreadCrumbBar control is designed to allow people to easily navigate back up a hierarchical page structure. It’s based on the same API as the TreeView control (that is, it uses the TreeItem structure). This control is useful to visualize and navigate a hierarchical path structure, such as file system. Here’s what it currently looks like:

The BreadCrumbBar UI control.

The BreadCrumbBar UI control


HiddenSidesPane
A pane used to display a full-size content node and four initially hidden nodes on the four sides. The hidden nodes can be made visible by moving the mouse cursor to the edges of the pane. The hidden node will appear (at its preferred width or height) with a short slide-in animation. The node will disappear again as soon as the mouse cursor exits it. A hidden node / side can also be pinned, and it will remain visible as long as it stays pinned.

hiddenSidesPane

The HiddenSidesPane, with a node at the bottom that has animated into view.


InfoOverlay
This control was initially developed by my colleague David Grieve before being integrated into ControlsFX. It is designed to show a small blurb of text above a node (most commonly an ImageView, but it will work with any Node). The text can be collapsed down to a single line, or expanded to show the entire text. In some ways, it can be thought of as a always visible tooltip (although by default it is collapsed so only the first line is shown – hovering over it (or clicking on it if the showOnHover functionality is disabled) will expand it to show all text). Shown below is a screenshot of the InfoOverlay control in both its collapsed and expanded states:

The InfoOverlay control

The InfoOverlay control


MasterDetailPane
A master / detail pane is used to display two nodes with a strong relationship to each other. Most of the time the user works with the information displayed in the master node but every once in a while additional information is required and can be made visible via the detail node. By default the detail appears with a short slide-in animation and disappears with a slide-out. This control allows the detail node to be positioned in four different locations (top, bottom, left, or right).

masterDetailPane

A (rather ugly!) screenshot of a master pane (a green rectangle) with a detail pane (the red rectangle) expanded from the bottom. Hopefully your use case might be a bit prettier!


Notifications
ControlsFX has had the NotificationPane feature for a release or two now, but that required that the notification appear within the window. Some use cases are to simply inform the user of an event, even when the main window itself is not visible (or focused) – think email notifications, for example. This is where the Notifications class comes in – it will show a notification message to users in one of nine locations on the screen, and even supports stacking multiple notifications, and showing complex scenegraphs. After a set duration, the notification will fade out.

notifications


PlusMinusSlider
A plus minus slider allows the user to continuously fire an event carrying a value between -1 and +1 by moving a thumb from its center position to the left or right (or top and bottom) edge of the control. The thumb will automatically center itself again on the zero position when the user lets go of the mouse button. Scrolling through a large list of items at different speeds is one possible use case for a control like this. You may be familiar with Google Picasa, which has a similar control for scrolling through the image list.

The PlusMinusSlider in both horizontal and vertical states

The PlusMinusSlider in both horizontal and vertical states


FXSampler Source Code Tab
FXSampler (the sample app we wrote for demonstrating ControlsFX, and which is open source to allow for third parties to use it to demonstrate their own software samples) now allows for displaying the source code for samples, making it even easier to teach people how to use new API. Here’s a screenshot:

Source code in FXSampler

Source code in FXSampler


Miscellaneous Improvements
There are always a number of improvements that fall under the radar for each release, but some of the more notable improvements include:

  • Support for row resizing in the SpreadsheetView control.
  • Glyph font loading is now lazy (which is important for FontAwesome as we download the font from the web when it is used).
  • Support for CSS styling dialogs.
  • There is now much better numeric field support in PropertySheet. It includes automatic support for editing integer and floating point values.
  • ControlsFX dialogs are now about to be internationalized, and we’re planning to extend this internationalization support through to all controls in the next release. We already have English and Russian translations, and would happily accept other translations if people are willing.

That’s all for this release. Go forth, download and enjoy! 🙂

JavaFX links of the week, March 3

A relatively quiet week this week, but what we do have is great – new releases and new open source projects – great stuff!

Catch you all next week 🙂

JavaFX links of the week, February 24

More days. Much work. Such links. Wow.

Catch you all again next week! 🙂

JavaFX links of the week, February 17

Another week, another batch of links. Enjoy!

That’s all folks! Catch you again next week.

JavaFX links of the week, February 10

Another week, more links – enjoy 🙂

  • Tomas Mikula is working on two interesting projects that you should keep an eye on (on top of his excellent CodeAreaFX): ReactFX and UndoFX. The ReactFX “project is an exploration of reactive programming techniques for JavaFX” – and I highly recommend you look at the code examples to understand how it might be useful in your projects. UndoFX is “a general-purpose undo manager for JavaFX (or Java applications in general).” Again, something that could be very useful in your applications! 🙂
  • Jens Deters has posted code to make it easy to animate a SplitPane divider.
  • Daniele Renda has a post on “Real World JavaFX with GraniteDS : the ACI Ticketing and Booking System”.
  • Dirk Lemmermann has blogged about another control coming in the soon-to-be-released ControlsFX 8.0.5: MasterDetailPane.
  • Thierry Wasyl has posted a handy tip on how to more cleanly ensure your code is running on the JavaFX Application Thread.
  • Steven Schwenke has blogged about an extendable search pane he has created in JavaFX, which may be useful for other developers.
  • Thomas Bolz has published his project ‘renamerFX‘ which is a utility to “batch rename your pictures and movies after taking them from the camera from cryptic to meaningful file names.”
  • Jan Kovar has started work on FXUtils, whose stated goal is to “develop set of components for easier development of JavaFX 8 applications using FXML.”

See you all next week for another round.

JavaFX links of the week, February 3

This year is going so fast! It’s February already?! Time to slow down and check out the latest JavaFX news I reckon! Enjoy 🙂

  • Dirk Lemmermann has posted about a new control he has developed for JavaFX 8.0 and has contributed to the ControlsFX project. It is called PlusMinusSlider, and for anyone familiar with Google’s Picasa software, you may be familiar with the control. In Picasa it allows for scrolling through the images at a speed related to how far the slider thumb is from the center. When the mouse is released the thumb goes back to the middle and scrolling stops. A very specialised control for sure, but I’m certain people will find use cases for it in their own projects!
  • Tomas Mikula continues to improve his CodeAreaFX project for JavaFX. This library is a rich text editor, code highlighter and more – Tomas is doing an excellent job!
  • A video of Sven Efftinge and Tom Schindl presenting at W-JAX in Munich in 2013 about ‘Xtended JavaFX’ is now available online. From the summary page: “Xtend is a statically typed programming language which translates to readable Java source code. JavaFX is the new shiny way to develop desktop applications in Java. JavaFX applications written with Xtend are much less cluttered and more readable at the same time, hence it increases developer productivity significantly.”
  • Speaking of Tom, he has announced the release of e(fx)clipse 0.9.0, which looks to include a heap of new features.
  • Mario Voigt has posted a new project on Github that he is calling ScreenFX. It is a tool that “adds features to resize and arrange stage windows for multiple screens”.
  • Jens Deters has posted two videos of his SplitPaneSlider project, which I think is a nice feature for many user interfaces to consider using.
  • Tomas Brandalik has posted a video of his work on supporting JavaFX projects on Android from within a NetBeans environment.

That’s that for another week. Catch you all later 🙂

JavaFX links of the week, January 27

Another week of great links – enjoy! 🙂

Catch you all next week!

JavaFX links of the week, January 20

Hi all. It’s a public holiday where I am in New Zealand today, so I’m going to keep this post brief as my todo list is long. Enjoy! 🙂

That’s all folks. Catch you next week!

JavaFX links of the week, January 13

Today is a special milestone for the Java desktop links of the week posts – quite by accident I just realised that my first post (then titled ‘Swing links of the week’) was published on this day five years ago! It feels like an age ago – and given that I do one post a week that means I’ve done roughly 260 posts. Each post takes at least an hour to write up (and often much more), which suggests I’ve spent around 6.5 weeks of full-time equivalent work providing these weekly posts. That’s just plain scary! 🙂 Who knows where these posts will go in the future, but for now I hope you continue to enjoy and appreciate both what the community is doing, and my effort in highlighting everyone’s wonderful contributions!

Ok, that’s enough – let’s get on with the news 🙂

  • Angela Caicedo has presented at the Silicon Valley JavaFX Users Group on “Beyond Beauty: JavaFX, Parallax, Touch, Raspberry Pi, Gyroscopes and much more“.
  • Speaking of the Silicon Valley JavaFX Users Group, the next meetup is being held on January 23rd with Ryan Cuprak on HTML5 and JavaFX. The summary says the presentation will talk about how “The HTML5 juggernaut is radically changing client-side development on mobile devices as well as the desktop. Given the pervasiveness of HTML5, where does JavaFX fit in the picture? This presentation examines both HTML5 and JavaFX, covering the technical strengths and weaknesses of each.” As always the session will be live broadcast – check the link for the details.
  • Dirk Lemmermann has been working on a (commercial) JavaFX-based gantt chart control. It looks very polished, and he is planning to start up an early adopter program around March. It would be great to see it in an open source library, but I guess at the end of the day it is better that a gantt chart option exist than not!
  • Kunas Ramazan has a post on enterprise app development with JavaFX and pm4j.
  • William has announced the release of GraniteDS 3.0.1.GA. It comes with a few important bug fixes and some improvements in the documentation.
  • Christoph Nahr has blogged about JavaFX text icons as images and files. In other words, he is converting scalable glyph fonts to pixel images.
  • Andi has created a TextFlow-like container for JavaFX 2.x.  TextFlow is new API in JavaFX 8.0 that (unsurprisingly) deals with layout of text in an intelligent way. It is a very nice feature of JavaFX 8.0.
  • William Antônio Siqueira has two posts this week, as he is developing a JavaFX-based client to control the RedHat Business Rule Management System. The first post explores the code to connect to the rest endpoint, whilst the second post covers the construction of the client side code.
  • Sven Ruppert has posted part one of a series of posts on creating an FXController with CDI managed DynamicObjectAdapter.
  • Steven Van Impe has posted part one of a two-part series on game loops and applying them to JavaFX. The first post covers the general theory around game loops, whilst the next post will cover applying this to JavaFX specifically.

That’s all for this week. Catch you all again next week! 🙂

JavaFX links of the week, January 6

Another weeks worth of links, posted whilst I’m on vacation, so pardon the brevity! 🙂 Enjoy!

  • Gerrit Grunwald has posted a video showing an application he has developed running on desktop, Android, iOS and Raspberry Pi. It is a great video as it shows the state of JavaFX on these platforms, and what remains to be done. In general it is very pleasing seeing where things currently stand – it seems beyond a few issues with fonts and layout, the primary focus needs to be on performance.
  • Sven Ruppert has blogged about the internals of the TestFX library for testing JavaFX user interfaces.
  • Andy Till continues to work on his Cavity Search API for searching for labels in JavaFX user interfaces. It looks like it will be a really useful API for users wanting to provide this specific feature in their software.
  • Dino Tsoumakis has released a fork of Adam Bien’s followme.fx, with his version focusing on support for iOS.
  • Laurent Nicolas has created an application for his kids called DrawKidFX which makes use of JavaFX, Leap Motion, and his Radial Menu control.

That’s all folks. See you again next week 🙂