The Dialogs and Wizards lecture discussed implementation of dialogs as Eclipse extensions, and as components directly opened by your tool logic. The code in this project demonstrates the implementation of these tool extensions:

Preference Pages
  The plug-in contributes two preferences pages. The user interface for the first page is constructed using SWT widgets and values are stored using the `Preferences` class for preference value management. The second page is implemented using the `FieldEditorPreferencePage` and `FieldEditor` framework.
  The example includes a property change listener that reports when preference changes occur.
Properties Pages
  The plug-in contains a properties page that is contributed to any `IFile` resource type. The page supports the creating and manipulation of two keyed property values that are stored for the selected resource.
Resource Creation Wizards
  The plug-in contributes two resource creation wizards. The first is a simple file creation wizard that adds a file with custom content to the selected container.
  The second is a more complex resource creation wizard that dynamically adds pages based on the user input. Each page added can support the creation of a file or folder, allowing one wizard invocation to create any number of files and folders in the project.
  Note: Extensions can also be used to define Import and Export wizards. See the Eclipse code base for classes that implement `IImportWizard` or `IExportWizard` for examples
Direct Wizard Invocation
  Not all wizards will be implemented by extension, you may need wizards to support other guided tasks in your tool. An example of direct wizard invocation as part of an action contribution is also included to demonstrate how you can open up a wizard as part of your tool logic. This action opens one of the previously discussed resource creation wizards.

All code is in the `com.ibm.lab.soln.dialogs` package.

## Project Structure

The plug-in defines actions, wizards, preference pages, and properties pages. These definitions can be reviewed in the `plugin.xml` file:
One package is used to organize the code included in this project.

The IDialogsIDs class defines common strings and global control fields used in many of the other classes:
A global trace setting exists in IDialogsIDs; if TRACE_ENABLED is set to true, trace messages are written regardless of the local traceEnabled value.

© Copyright International Business Machines Corporation, 2003.
All rights reserved.