Nested Composite Builds with Gradle

If you work with source code of multiple dependencies at the same time then Composite Builds is the feature you didn’t know you needed. Back in October 2016 Gradle 3.1 introduced Composite Builds to the world. The idea behind this feature is to let a project build its external dependencies as needed; think of quick fixing a bug or checking for breakages before publishing a snapshot release. I’ve got a real world scenario for this feature: the set of builds for JSR377, the Desktop Application JSR. This specification provides the following artefacts jsr377-api: Defines the API for this JSR. jsr377-spec: Read More


Running Griffon Applications with JavaFX 11

JavaFX 11 has just been released! You can get the latest release and find more documentation about it at https://openjfx.io. Java 11 is just around the corner too. In order to prepare yourself for what’s coming here are the first details on modifying your Maven and Gradle builds to compile and run your Griffon project. Maven Make sure to have the latest Maven version installed. The current version is 3.5.4. Edit the pom.xml file and add a couple of additional properties <plugin.compiler.version>3.8.0</plugin.compiler.version> <javafx.version>11</javafx.version> Add the following dependencies to the <dependencies> block <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-base</artifactId> <version>${javafx.version}</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-graphics</artifactId> <version>${javafx.version}</version> Read More


DesktopPaneFX 0.11.0 Released

Version 0.11.0 has just been released! You can download it directly from Bintray’s JCenter and/or Maven Central. This version delivers the following changes: Bulk window operations added to DekstopPane and InternalWindow. A richer set of InternalWindowEvent values. Ability to register explicit InternalWindowEvent event handlers on InternalWindow. Bulk operations include the following ones: minimizeAllWindows minimizeOtherWindows maximizeAllWindows maximizeVisibleWindows restoreMinimizedWindows restoreVisibleWindows closeAllWindows closeOtherWindows tileAllWindows tileVisibleWindows tileHorizontally tileVertically These operations are available as direct method calls on DesktopPane. All of them except for the tiling ones are also available when popping a contextual menu on the title bar of an InternalWindow. Events triggered by Read More


Griffon Becomes 10!

I’m quite ecstatic to say that today is Griffon’s 10th year anniversary! It all started way back in late 2007 when the Groovy Swing team decided to join forces and make the existing set of Groovy based builders for a handful of Java Swing widget sets more easy to mix and match to build better looking desktop applications. At that time Grails was making a big splash in the Groovy community, thus we decided to follow their lead and create a “Grails for desktop applications”, and so Griffon became a reality when Danno posted the announcement for Griffon 0.0 back Read More


DesktopPaneFX 0.9.0 released!

Version 0.9.0 of DesktopPaneFX has just been released! You can download it directly from Bintray’s JCenter and/or Maven Central. This version delivers the following changes: The title bar has been moved out from InternalWindow into its own component: TitleBar. This is a breaking change as some properties and methods have been migrated to the new class. InternalWindow can only be dragged from its title bar. Previous versions allowed dragging from anywhere within the window. InternalWindow now exposes a resizable property. There’s also a new incubating feature that made the cut: the ability to detach and attach windows to a DesktopPane. Read More


Multi-module project builds with Maven and Gradle

Just came back from wonderful JCrete® 2018. This year didn’t disappoint, we had close to 110 people openly sharing ideas and knowledge on both technical and soft skills matters. Here’s a picture of the final schedule, captured by fellow Java Champion Badr Elhouari: If you are wondering what was the schedule of @JCreteUnconf 2018! Really 💜 my first #JCrete & #Unconference experience 🤩 brilliant people with top notch content. Thanks a lot for all the disorganizers @heinzkabutz @javaperftuning @rgransberger @aalmiray @IXSC & others 👍💪👌 pic.twitter.com/iHk0dxSqle — Badr Elhouari (@badrelhouari) July 26, 2018 Every single one of those notes represents a Read More


Griffon Mythbusthers

I’ve seen myths surrounding the Griffon framework appear over the years, I think it’s time to set the record straight and dispel any misinformation. Myth: Griffon projects require Gradle as a build tool. Incorrect. The preferred choice for building Griffon projects is Gradle if you happen to use a Lazybones template to bootstrap the project, however you may use Apache Maven, Apache Ant, or any other JVM build tool (even Make if you really want to) to build a Griffon project. Myth: Griffon projects can only be bootstrapped with Lazybones. Incorrect. The preferred choice for bootstrapping a Griffon project is Read More


Sassy JavaFX

As may JavaFX developers know, it’s possible to style a JavaFX application using CSS, which is quite refreshing compared to previous alternatives. Unfortunately this CSS support is confined to a subset of CSS 2.1 (see here for more information). This means we can’t rely on the latest and greatest features available in CSS3 and beyond, bummer. However we can get some of those missing features (such as variables!) if we turn to less or Sass. I’ve picked Sass as at the time of writing both Gradle and Maven plugins for less seem to have stopped development altogether. Now, there are Read More


Creating aggregate JavaFX bindings

The standard JavaFX API provides a class named Bindings that can be used to create all kinds of bindings your application may need. Methods in this class can be used to translate any Observable, ObservableValue, Binding, Expression, and/or Property into another Binding, regardless of their original type. Here’s for example how you could translate a StringProperty into an IntegerBinding, by exposing the length of the contained String: StringBinding sourceBinding = … // initialized elsewhere IntegerBinding lengthBinding = Bindings.createIntegerBinding( () -> sourceBinding.get().length(), sourceBinding); While quick and to the point we’re forced to read the value directly from the inputs (in this Read More


Announcing DesktopPaneFX

Recently at work we faced the need of implementing a user interface that delivered similar features as the ones exposed by Java Swing’s JDesktopPane but for JavaFX. Unfortunately JavaFX does not provide such component out of the box, nor do the most common JavaFX controls projects out there. There are however a few attempts to put something together but most never left the prototype stage or have been abandoned. That’s how I found JavaFXMDI, which seemed to have the right approach but was left unattended for close to 3 years. Fortunately the code was published as Open Source, thus after Read More


ˆ Back To Top