Package net.javaprog.ui.wizard

Main package.

See:
          Description

Interface Summary
DataLookup Provides a simple interface for a data lookup mechanism used by DataModel.
Step Models a simple step in a sequence of steps.
StepDescriptionRenderer Provides an interface for rendering step meta information.
StepListRenderer Provides an interface for rendering step sequence meta information.
StepModelCustomizer Enables dynamic step sequences.
WizardModel Models a sequence of steps.
WizardModelListener Provides an interface for wizard model event listeners.
 

Class Summary
AbstractStep Provides a basic Step implementation.
DataModel Provides a data container that can be shared by steps aiming to collect data.
DefaultDataLookup Default implementation for DataLookup using reflection.
DefaultWizardModel Default implementation for WizardModel.
DefaultWizardModel.DummyStep Step implementation used in dynamic wizard models.
JavaHelpSupport Provides for a seamless integration of jwizz with JavaHelp.
Wizard The main component class.
WizardBeanInfo  
WizardContentPane The wizard's content pane.
WizardModelEvent Information transport object for event notification.
 

Package net.javaprog.ui.wizard Description

Main package. In order to create a new wizard you need to instanciate class Wizard passing an appropriate step model. Furthermore you will want to attach a listener to the wizard model in order to get notified when the wizard is either canceled or completed:

   //create wizard model
   WizardModel model = new DefaultWizardModel(new Step[]{
       //populate wizard model with custom steps
       new StartStep(),
       new DataInputStep(),
       new FinishStep()
   });
   //add listener to wizard model
   model.addWizardModelListener(...);
   //instanciate wizard
   Wizard wizard = new Wizard(model, "My Wizard");
   //show wizard
   wizard.pack();
   wizard.setVisible(true);

In order to collect user input data throughout the steps, you should use DataModel and DataLookup:

   //create wizard model
   DataModel data = new DataModel();
   WizardModel model = new DefaultWizardModel(new Step[]{
       //populate wizard model with custom steps
       new StartStep(),
       new DataInputStep1(data),
       new DataInputStep2(data),
       new FinishStep()
   });
   //add listener to wizard model
   model.addWizardModelListener(new Evaluator(data));
   ...

   class DataInputStep1 extends AbstractStep {
       protected DataModel data;

       public DataInputStep1(DataModel data) {
           super("Data Input 1", "Put in data here.");
           this.data = data;
       }

       protected JComponent createComponent() {
           JComponent stepComponent = ...;
           //register data input source with data model
           return stepComponent;
       }
       ...
   }

   class Evaluator implements WizardModelListener {
       protected DataModel data;

       public Evaluator(DataModel data) {
           this.data = data;
       }

       public void wizardFinished(WizardModelEvent e) {
           //evaluate user input data and take action here
       }

       public void wizardCanceled(WizardModelEvent e) {}
       public void stepShown(WizardModelEvent e) {}
       public void wizardModelChanged(WizardModelEvent e) {}
   }

Registering a data input source with a data model is fairly easy:

   //input source
   JTextField inputField = new JTextField();
   //obtaining data lookup mechanism
   Method method;
   try {
       method = inputField.getClass().getMethod("getText", null);
   } catch (NoSuchMethodException nsme) {} //does not occur
   DataLookup lookup = new DefaultDataLookup(inputField, method, null);
   //register lookup mechanism with data model
   data.registerDataLookup("myKey", lookup);

Looking up data from registered data input sources is easy as well:

   public void wizardFinished(WizardModelEvent e) {
       Object value = data.getData("myKey");
       //evaluate value and take appropriate action
   }