With this tutorial, you will be able to create your first wizard in a few minutes.
It explains the way to create a simple wizard, which allows like a book, to go through severall pages.
The first thing to do is to create the graphical dialog component of the Wizard :
Wizard wizard = new Wizard((JFrame)null);
The aim of a wizard is generally to decompose a complex task. Therefore, a wizard must manage severall 'pages'.
The main concept of Awl is 'page descriptor' represented by interface PageWizardDescriptor
This concept is defined by :
- the graphical component that represents the content of the page
- a title
- a description
- the relationship with others pages
In Awl, an id is assignated to every page. This id is used to define relationship between page :
- the previous page
- the next page
Let's describe our book like wizard.
DefaultWizardPageDescriptor page1 = new DefaultWizardPageDescriptor();
page1.setComponent(new JLabel("this is my first page"));
page1.setDescription("my first page");
DefaultWizardPageDescriptor page2 = new DefaultWizardPageDescriptor();
page2.setComponent(new JLabel("this is my second page"));
page2.setDescription("my second page");
Our two pages are created, we must now indicate the relationship between these pages.
We respectively take id "1" et "2" for our first and second pages
We start by speciying the relationship; by calling setNextDescriptorId("2") on page1, we declare that after page1, we will have the page descriptor with
id "2". Conversely, by calling method setPreviousDescriptorId("1") on page2, we declare that before page2, we have a page descriptor registered with id "1".
Internally, the wizard always manage two fictive pages :
- one registered with WizardConstants.STARTING_DESCRIPTOR_ID ("starting")
- and one registered with WizardConstants.TERMINAL_DESCRIPTOR_ID ("terminal")
these two reserved ids shall never be used to register page descriptors.
That is why we indicate that the page before page1 is the page with id WizardConstants.STARTING_DESCRIPTOR_ID
and that the page after page2 is the page with id WizardConstants.TERMINAL_DESCRIPTOR_ID.
Pages with id WizardConstants.STARTING_DESCRIPTOR_ID and WizardConstants.TERMINAL_DESCRIPTOR_ID are never displayed by the wizard; they virtually exists
to let wizard know with which page the wizard should start and when it could finish.
After that, we have to register pages by calling registerWizardPanel on the Wizard object.
Now, our wizard is completely initialized, and like any other JDialog, we force our wizard to be visible
wizard.setTitle("Read a bad book...");
wizard.setSize(new Dimension(430, 300));
Here is the result :