Summary
The Swing Wizard Framework is a Swing library that makes it easy to hide from the user complex business logic with the help of visually appealing wizards. The project has recently made progress toward a 1.0 release.
Advertisement
Wizards are a convenient user interface paradigm to facilitate a sequence of steps in a complex use-case. For instance, creating a user account typically involves providing personal information, entering a user name and password, and then providing some optional demographic data. These three steps can be made easier by presenting a sign-up or registration wizard to the user.
While on the surface wizards seem simple, wizards are especially helpful to hide from the user the complexity of non-trivial business logic. Some wizard steps, for instance, may be performed out of order, whereas others could require that some prior steps be completed. Validation logic of each wizard step can be quite complex as well. Indeed, a simple wizard can be imagined as a state machine, while more complex wizards are, in addition, akin to expert systems, where future options a user can take depend on that user's prior choices.
Wizard is a SwingLabs project on java.net, with the aim to make writing and maintaining wizards easy. It provides APIs for presenting a wizard's user interface, and also for plugging in business logic.
The project has started life as an offshoot from the NetBeans codebase, but is now fully independent of NetBeans. The Wizard project has been in use in many applications, and recently project lead Tim Boudreau made progress toward a 1.0 release. Here are some of the latest features:
Support for a JLF-Style summary page at the end of a wizard—just return a Summary object from your finish() method (you can pass it the real object you wanted to create if any); this works in cooperation with DeferredWizardResult if you need it to. You can pass a String to show in a text field in the summary page, or an array of Strings to show in a JList, or a Component you want to show on the finish page.
DefaultWizardDisplayer is now properly localized.
Support for computing a result in the background with a scrollbar to show progress... background operation can be specified as abortable or not.
Bugfixes & appearance tweaks: "Steps" header for the instructions panel, underlines under both headers now stretch the length of the component less insets.
What APIs and techniques do you use when presenting complex business logic to your users?