e(fx)clipse 0.0.10 released

The 0.0.10 release is broken. Please update to 0.11

3 weeks after 0.0.9 (and one day behind schedule because of New Years day) I just pushed 0.0.10 to http://efxclipse.org/. There are many improvements which will take a look later on and take a look at the provided all in one downloads who’ve been received quite well by the community. In the last 3 weeks I registered the following downloads:

  1. eclipse-SDK-3.7.1-efxclipse-0.0.9-win32.zip: 101
  2. eclipse-SDK-4.2M4-efxclipse-0.0.9-win32.zip: 55
  3. eclipse-SDK-4.2M4-efxclipse-0.0.9-win32-x86_64: 49
  4. eclipse-SDK-3.7.1-efxclipse-0.0.9-win32-x86_64: 41
  5. eclipse-SDK-3.7.1-efxclipse-0.0.9-macosx-cocoa-x86_64: 13

So they are eating up quite some bandwidth (~100GB in December). Let’s now dive into the new features one by one.

All in one downloads

The aim of the all in one downloads has been to give developers an easy way to start writing JavaFX applications. Now that JavaFX is provided as opensource in the openfx-project to give Eclipse users an easy way to contribute I added the mercurial-plugin 1.9.1 to the all in one downloads so that you can access the openjfx-repository without the need to install anything new. I also upgraded to Xtext 2.2.1 and EGit 1.2.0 so that you have the newest bugfixes in your IDE.


Internal changes

There are 2 internal changes that happened which you might not directly notice.

SWT-Interop for the LivePreview

One of the internal things I’ve changed was that since 2.0.2 there’s is direct JavaFX-SWT interop available I switched from my hacky JavaFX – Swing – SWT_Swing_Bridge – SWT to it which has 2 consequences:

  • JavaFX 2.0.2 is hard requirement for e(fx)clipse 0.0.10
  • Mac-Support is working and fully supported

JavaFX library look up for the live preview

Until 0.0.9 the look of the JavaFX library for the Live-Preview was done on win32 by consulting the Windows registry and on Mac OS-X by looking for an ENV-Variable (JAVAFX_HOME).

The approach had a draw back because it could have happened that the SDK you had configured in your IDE and the JavaFX version used for the live preview could have gone out of sync. This has now changed and when running inside the IDE the configured SDK version is used instead. This makes it much easier for OS-X users because they now don’t have to reconfigure their ENV to use the live preview.


FXGraph is my custom DSL used to author FXML-Files. I promised that I’ll provide a FXML to FXGraph roundtrip converted but I’ll have to defer this for 0.0.11 or even later.

Support for factory methods

I’ve added support for factory-methods and to really support them I had to change the language a bit which is not a problem because noone could have used this feature because though the language had the keyword for it it was not implemented appropiately.

The syntax looks like this:

New Outline

The outline view in 0.0.9 was the default one provided by Xtext. I’ve invested some time in 0.0.10 to customize it and show informations in a similar fashion the JDT-Outline view does.

Here are screenshots of the results:

Content Assist improvements

The content assist has been improved tremendously by limiting the results to values assignable to the left.


The formatting like idents, spaces, line breaks, … have been customized so that you can now press CTRL+SHIFT+F like you are used to in Java-Files and the your source gets formatted nicely.

JavaDoc everywhere

The JavaDoc is now shown everywhere like you are used to it in Java-Files as well. For example when showing the content assist for properties the JavaDoc is displayed next to the proposal.

Autocompleteion for Enum values

Attributes who are represented as enum-Values now provide a content proposal.

Wizard improvements

The wizard has been improved to add support for custom root elements (and remembers them for the next time).


So in 0.0.9 I switched the FXML-Editor from a custom written to an Xtext backed one (the only feature I had by then was to provide attribute proposals).

So while I also added new features to FXGraph most of the time I spend in this release cycle was on the FXML-Editor front which now has decent sub-element proposals, JavaDoc support, … . The features are yet not as advanced as they are in fxgraph but they are coming along nicely.

Subelement proposals


Not all elements yet show the JavaDoc appropriate for them but the most important ones already do.

Live Preview

I think that this is the most interesting feature of the FXML-Tooling because it allows you see the resulting UI while you are authoring the FXML-File.

FXML currently does not support to encode custom informations into it because it does not allow one to use itsown XML-Namespace. To make the live preview load the CSS-Files and message.properties one has to add a mapping file in the root directory of the project. The FXML-Wizard will create one for you, if you already have fxml-Files and want to add the configuration-file your own simply create a file named “fxml-preview.properties” in your project (at the toplevel, not inside the src-Folder) and add the following content:

# -------------------------------------
# Configuration setting for FXML-Files
# -------------------------------------

# -------------------------------------
# Values applicable to all FXML-Files
# -------------------------------------

# fxmlpreview.all.stylesheets=test.css            # Comma seperated list of css-styles
# fxmlpreview.all.messagefile=messages.properties # Properties file

# -------------------------------------
# Values applicable to a specific FXML-File 
# (replace ${fxmlfilename} with your filename WITHOUT the fxml-suffix)
# -------------------------------------

# fxmlpreview.file.${fxmlfilename}.stylesheets=test.css              # Comma seperated list of css-styles merged with default styles
# fxmlpreview.file.${fxmlfilename}.messagefile=messages.properties   # Properties file overrules default properties

I think the file is self-explanatory.

This entry was posted in e(fx)clipse. Bookmark the permalink.

7 Responses to e(fx)clipse 0.0.10 released

  1. Juan Manuel says:

    I have the following issue when upgrading from e(fx)clipse 0.0.9 to e(fx)clipse 0.0.10. in eclipse 3.7.1 with JEE tools standar. I do not use the preconfigured distro (eclipse 3.7.1 + e(fx)clipse + Xtext 2.2.1 + EGit 1.2.0 + Subclipse 1.6.18 + Mercurial 1.9.3).

    Cannot complete the install because one or more required items could not be found.
    Software being installed: efxclipse (at.bestsolution.efxclipse.feature.feature.group
    Missing requirement: FXGraph UI (at.bestsolution.efxclipse.tooling.fxgraph.ui requires ‘bundle org.eclipse.core.databinding 1.4.1’ but it could not be found
    Cannot satisfy dependency:
    From: efxclipse (at.bestsolution.efxclipse.feature.feature.group
    To: at.bestsolution.efxclipse.tooling.feature.feature.group []
    Cannot satisfy dependency:
    From: FX Tooling (at.bestsolution.efxclipse.tooling.feature.feature.group
    To: at.bestsolution.efxclipse.tooling.fxgraph.ui []

    Could you give me a tip?

    • Tom Schindl says:

      Yeah it was me, me, me 😦 My packaging script for 3.7.0 didn’t worked and so I didn’t discover version range problems I introduced. I just published the 0.11 repo which should to have this problem. Sorry for the trouble.

    • Tom Schindl says:

      Juan – did you manage to install with the 0.11 release?

      • Juan Manuel says:


        The update process for the 0.11 release of e(fx)clipse now works fine. Thanks, e(fx)clipse is a great job!

  2. Pingback: e(fx)clipse 0.0.11 released | Tomsondev Blog

  3. Pingback: Java desktop links of the week, January 9 | Jonathan Giles

  4. Pingback: JavaFX links of the week, January 9 // JavaFX News, Demos and Insight // FX Experience

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.