by Jonathan Giles | Mar 30, 2014 | Links
A huge number of links this week – people really are having fun with JavaFX these days, which is great to see!! 🙂
- Hendrik Ebbers has been very busy! This week there are five links of interest related to Hendrik. Firstly, he has a blog post about his upcoming book ‘Mastering JavaFX 8 Controls‘ (in which I was interviewed). Secondly, he has posted some JavaFX CSS-related utilities (to help reduce the boilerplate when building custom controls). Thirdly, he has a post about reactive programming with JavaFX. Fourthly, he has posted a YouTube video of his interview as part of the nighthacking tour, where he talks about DataFX 8. Fifthly, and finally, he was interviewed by Hartmut Schlosser over at jaxenter about ‘The cutting edge of JavaFX‘.
- Tomas Mikula has blogged about monadic operations on ObservableValue. As he says in his post, “First of all, don’t get scared by the word monadic—it just means that there are a few more operations that treat
null as “value not available.” Anyway, if you have already used Optional, this will all look very familiar.”
- Tom Schindl has posted that e(fx)clipse 0.9.0 has been updated to Kepler SR2. If you’re using e(fx)clipse, you should definitely upgrade!
- Speaking of Tom Schindl, he has also posted an update on his work to get Eclipse running on JavaFX, including a video and a list of the next steps.
- Sean Phillips has posted the source code for his F(X)yz JavaFX 3D visualization library.
- The Ankor app development framework appeared out of the blue this week. It seems to be a framework in a similar vein to OpenDolphin and DataFX.
- Michael Hoffer has been working on an open source app called JavaFXScad, a JavaFX 3D Printing IDE based on JavaCSG.
- Tim Yates has been working on ShadowFX, a Java 8 JavaFX implementation of http://ncase.github.io/sight-and-light/. He posted a video of the result – pretty cool!
- Jens Deters has posted a video of his picmodo application, his “free time project to index pictures with JavaFX”.
- Sven Ruppert has posted part one of his series on Java8 CompletableFuture for JavaFX and CDI.
- Steven Schwenke has open sourced his JavaFX workshop tutorial code.
- Frank Roth has been working on jSona, an open-source JavaFX-based music player.
- Tiancheng Hu has posted a tutorial on “How to make your Android projects more portable to Windows/MacOS (and vice versa)” where he also talks about JavaFX as a frontend.
That’s all for this week – catch you in a weeks time.
by Jonathan Giles | Mar 23, 2014 | Links
Hi all. The big news this week was of course Java 8.0 being released, but that didn’t seem to stop all of you from getting your projects done – there is a heap of interesting news this week! Keep up the great work, and to everyone else, enjoy! 🙂
- As mentioned, Java 8.0 / JavaFX 8.0 was released this week. It shouldn’t surprise anyone that this is a major release of JavaFX, bringing with it a heap of new features and bug fixes, having been in development for a very long time! If you haven’t already, you can download JDK 8 from the usual source. Whilst that is downloading, you can learn more about what is new in JavaFX 8.0, or read the JavaFX documentation. There are heaps of features in this release, but some of my (very biased!) favourites include new controls (TreeTableView and DatePicker), UI control support on embedded platforms, print support, 3D support, bi-directional text support, and of course the new Modena stylesheet that is used by default. You can read more detail about the JavaFX features in JDK 8 in the release notes.
- Tom Eugelink has added a new ‘CircularPane’ layout container to the JFXtras project. His blog post is a very interesting read that covers the details of implementing such a layout (to avoid overlapping nodes, for example).
- Tomas Mikula continues to create interesting JavaFX projects! This week he has open sourced his EasyBind project, which “leverages lambdas to reduce boilerplate when creating custom bindings.” Overall it looks like a very useful library for people to investigate using in their projects.
- Speaking of Tomas, he has also done a blog post titled “Trigger processing after a period of inactivity“, which shows how to use ReactFX to defer processing of user input until a specified period of user’s inactivity.
- Michael Berry has blogged about draggable and detachable tabs in JavaFX. This is something I’ve been wanting to do in JavaFX for a very long time, so I’m pleased someone has already done it 🙂 It would be great to see this contributed back to OpenJFX / JFXtras / ControlsFX so that it could be more widely used and tested.
- Adam Bien has announced afterburner.fx version v1.4.4. This release includes support for resource bundles and improved support for mocking.
- Dino Tsoumakis has updated followme.fx, a sample afterburner.fx project for iOS based on Adam Bien’s afterburner.fx.
- Jens Deters has posted a call for people to verify the responsiveness of their applications to different screen / font size configurations, after he found one of his apps rendered poorly.
- Christoph Nahr has released MIME Browser 1.3, a JavaFX-based application for browsing MIME messages that are locally stored in standard EML files.
- Sean Phillips has a video titled “Enhancing NASA Mission Support with JavaFX 8“. The video demonstrates his work with JavaFX, ControlsFX, and NetBeans. Very impressive stuff.
- Mark Stephens has a blog post with some screenshots / information about the new (and commercial) JavaFX-based PDF viewer that IDR Solutions is working on.
- Dirk Lemmermann has released a first early access build of his (commercial) JavaFX-based FlexGanttFX library.
Catch you next week 🙂
by Jonathan Giles | Mar 16, 2014 | Links
A heap of links this week – you’ve all been very busy! 🙂
- The JFXtras team has been busily working on getting JFXtras 8.0 out, this week releasing JFXtras 8.0-r1.
- Tom Schindl continues to work on enabling Eclipse to render itself using JavaFX, and the results are starting to look really good (especially given the power of CSS). It’s very cool to see JavaFX being used to render Eclipse!
- TESIS DYNAware has released an FBX importer and viewer for JavaFX 8. You can use it to load (binary) FBX files and show the result as a JavaFX 3D mesh.
- TESIS DYNAware has also released their ‘fancy-chart‘ code, which is essentially a JavaFX chart that is linked up with a TableView, such that you can select in one of them to see the relevant information in the other. Very nicely done.
- Tomo Taka has posted a very nice post about JavaFX drag and drop. If you are interested in using drag and drop in your JavaFX application, this is a great summary.
- Jeffrey Guenther has a post making clear how event handling is done in JavaFX, particularly in relation to overlapping sibling nodes.
- Jeff Martin released an updated SnapCode this week with new Play Sound functionality.
- Dirk Lemmermann continues to refine his (commercial) FlexGanttFX project, this week posting videos of agenda editing, gantt chart activity linking, and an example using aircraft / flight scheduling.
- Vasilis Souvatzis has been working on a JavaFX application aimed at dietitians.
That’s all folks. See you next week! 🙂
by Jonathan Giles | Mar 9, 2014 | Links
Another week rolls around, and so do a bunch more of your links. Enjoy!
- A colleague of mine in the JavaFX team at Oracle, David Grieve, has started up a new blog. His first post is titled ‘lambda to the rescue‘, and it covers how, with the help of lambdas in Java 8, he is able to write better code in JavaFX.
- Juergen Kress has a post about there now being NetBeans support for JavaFX on iOS.
- I announced, on behalf of the ControlsFX project, that version 8.0.5 was released. This release is a major release with a number of new and useful controls. If you are unfamiliar with ControlsFX, be sure to check out the features page for a high-level summary of all the cool stuff available in ControlsFX.
- There have been new releases of ScalaFX for both JavaFX 2.x and 8.x. If you’re a Scala fan, then you should definitely check this library out.
- Pedro Duque Vieira has blogged about adding ProgressBar support in his JavaFX Metro stylesheet.
- Geertjan Wielenga has interviewed Walter Nyland and Jason Wexbridge on their new book titled ‘NetBeans Platform for Beginners’, and the relevance of the Java desktop.
- Jeff Martin posted an update to SnapCode this week with new Mouse and Keyboard sensing features, new pen graphics features and numerous improvements and fixes.
That’s that for another week. Catch you all next week! 🙂
by Jonathan Giles | Mar 4, 2014 | ControlsFX
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 Lemmermann, David 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:
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.
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
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.
The HiddenSidesPane, with a node at the bottom that has animated into view.
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
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).
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!
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.
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
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
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! 🙂