header background

Maven Packages

Over the years I developed a bunch of programs for people who requested software for me. However, during the development of these projects a series of interesting components and libraries evolved as part of these projects. In order to modularize and reuse parts of these projects I split them into a collection of packages that I distribute via Maven Central.

Generic Wizard

Sonatype Nexus (Releases) Maven Central Codacy

Motivation

JavaFX is a great way for creating GUIs with Java. Nevertheless, still it lacks predefined ways for creating a wizard like user interaction. Furthermore all the user examples and tutorials I found on forums and other websites describe solutions which are bound to their specific application and how the content of the wizard is connected in their special case. I could not find any solution that is flexible and yet powerful enough to provide an easy to use infrastructure for creating wizards.

Features

  • Abstraction from the actual content of the wizard
  • History of visited wizard pages
  • Branching sequences of wizard pages
  • Constraints on the validity the input of wizard pages
  • Dynamic creation of additional wizard pages based on the currently entered user input
  • Static type safety over the results of any wizard page
  • Embeddable into other surfaces of the application
  • CSS styling support

Explanation required for usage

A wizard is a collection of wizard pages with the following properties.

Unique name
Wizard pages reference each other by their unique name.
Finish flag
Marks whether a page is a final page that potentially enables the finish button.
nextFunction
Calculates the name of page to show when clicking on the next button.
INFO! During the calculation of the name the function may dynamically create a new wizard page, attach it to the wizard and return its name.
resultFunction
Generates any desired Java object that stores whatever data the page represents. This might be user input, a selection in a list, checkboxes, any kind of user interface you designed.
validProperty
Determines whether the current page should enable the next button and in case it is a final page the finish button as well. The result may depend on the current input, the state of a certain checkbox , etc.