Wednesday, October 26, 2016

Drombler FX: Version 0.8 released

I recently released v0.8 of Drombler FX - the modular application framework for JavaFX.

This version comes with two new major features: Single Instance Application and an initial version of a Data Framework which integrates with the Docking Framework.

Single Instance Application

Single Instance Application is an optional feature, which ensures that there is only one instance of your application running, even if the user starts the application several times.

This feature is provided out-of-the-box. It is disabled by default, however, but can be enabled by simply specifying the defaultSingleInstancePort property of the Drombler FX Maven Plugin.



If this feature is enabled and one instance is aleady running, each other application start will pass all its unnamed parameters to the first instance and shuts itself then down. Drombler FX will register a new instance of AdditionalArgumentsProvider for every application start notification.

Read more about Single Instance Application in the new tutorial trail.

Data Framework

This version introduces an initial version of a Data Framework which integrates with the Docking Framework.

At the core of the Data Framework is the concept of Data Handlers. A Data Handler wraps an instance of a particular kind of data and usually knows how to read, save etc. this particular kind of data.

To register a Data Handler for a business object, which e.g. has been obtained from a web service call, use the @BusinessObjectHandler annotation:



To register a Data Handler for a document use the @DocumentHandler annotation:


To associate some file extensions with a MIME type you can register the file extensions using the @FileExtension annotation:



Read more about the Data Framework in the new tutorial trail.

Docking Framework changes and enhancements

This version comes with some changes and several enhancements of the Docking Framework, especially also to integrate the Docking Framework with the newly introduced Data Framework.

One of the biggest changes is how you register and open an Editor:

A Dockable Pane can still be registered as an Editor by using the @EditorDocking annotation, but this annotation now specifies the contentType:



The annotated Editor is required to have a constructor with a single parameter of type contentType().

This contentType is usually a Data Handler registered either with @BusinessObjectHandler or with @DocumentHandler. The icon of the Data Handler will be used in the tabs of the Editors. You also don't specify the Docking Area for Editors anymore.

The standard "center" Docking Area has been renamed to "editor" and is the default Docking Area for Editors if you're using the standard Docking Areas.

There are several ways to open an Editor for a Data Handler:
Apart from the integration with the Data Framework, the Docking Framework comes with the following enhancements:
  • If the framework detects that there's already an Editor open for the provided content, the existing Editor gets selected rather than a new one opened.
     
  • If you close an unsaved Editor or if you close the window/ application while there are still unsaved Editors open, the Docking Framework detects this and provides an according dialog.


Putting all together

The enhancements provided by the Data Framework, Docking Framework and Single Instance Application support allow you for instance to create Single Instance Applications where the user can pass a file path argument to the application and the according Editor will be opened/ selected in the first (single) instance of the application.

Please note that several packages have changed.

Several refactorings have been done, which moved classes to different packages.
If a class isn't found anymore try to delete the import statement and re-import the class again using your IDE of choice. Also have a look at the available Maven Coordinates by following the links in the table below and have a look at the provided sample application.

Concluding remarks

You can find the complete list of fixed issues here: https://github.com/Drombler/drombler-fx/issues?q=milestone%3A0.8


There's a Getting Started page which explains how to create, build and run a Drombler FX sample application with a few simple steps.


The following table provides you an overview of the different Drombler components, links to the modules, which are available from Maven Central, and links to the Javadocs.
  


Name Modules
(incl. Maven Coordinates)
Javadoc Description
Drombler FX Modules Javadoc Drombler FX, the modular application framework for JavaFX based on:
Drombler ACP Modules Javadoc Drombler Abstract Client Platform (ACP) is an abstract, GUI-toolkit agnostic, modular Rich Client Platform based on:
Drombler Commons Modules Javadoc Drombler Commons is a collection of reusable libraries and frameworks. They ship with OSGi meta data but don't require an OSGi environment.


If you find issues or have enhancement requests, you can file a ticket here: https://github.com/Drombler/drombler-fx/issues.