|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Announcements
Chapters
Services
Feature Zones
|
Note: This is an unedited contribution. If this article is inappropriate,
needs attention or copies someone else's work without reference then please
Report This Article
IntroductionThis article introduces Background"A wizard is a user interface element where the user is led through a sequence of dialogs. Unlike most modern user interface paradigms, the user is forced to perform the task in a specific sequence. However, for complex or infrequently performed tasks where the user is unfamiliar with the steps involved, it may make it easier for them to perform the task." --- Wikipedia Wizard (software). "Wizards were controversial among user interface designers when they first gained widespread use, because they encourage modal windows, which some consider[weasel words] antithetical to proper human interface design. Supporters of the wizard paradigm argue that compliance with what they consider to be arbitrary laws should be secondary to ease of use in interface design." --- Wikipedia Wizard (software). Despite some controversy wizards are still a significant component in the software engineers toolkit; even Microsoft uses wizards, e.g. Add Hardware Wizard.
The wizard presented herein does not entirely fall into the category as defined by Wikipedia; rather than forcing the user through a specific sequence the interface allows non-linearity wherever possible (i.e. prior to processing the task), instead using the control box paradeim from Microsoft Windows Vista, as below. For this reason this control is defined as a procedure dialog.
Procedure Dialog StagesIntroductionPurpose: to introduce the user to the wizard, state the purpose of the wizard, and optionally state information about the wizards start-up. This wizard's pages are dynamically loaded from various Dynamic Link Libraries (dlls), and so the loaded components are shown.
ConfigurationPurpose: to allow various options of the task to be set. This options shown on the left pane only refer to loaded components with associated option panels, rather than all loaded configuration panels. Note that the user can flick between configuration pages (and the introduction or confirmation) in not only a linear way via the next and back buttons, but also in a non-linear way via the index on the left panel.
ConfirmationPurpose: to confirm the configuration options chosen. A brief summary of the chosen options is shown. Before the user can proceed to the next stage via the process button, a dialog is shown as a final confirmation; this is important as many dialogs (such as the example shown in the figures) perform destructive work as part of their processing, i.e. remove data that may not be recoverable.
ProgressPurpose: to display the status of the executing task. This page shows the status of the task, and in cases with many sub-tasks it may be relevant to show a progress bar indicating the sub-task name and progress. Pressing the close button at this stage displays a confirmation of close dialog, and assuming Ok or Yes is selected attempts to kill the task. The status of the abort task is shown in a dialog as below. Note that not all tasks can abort (to prevent data corruption) therefore the software may abort the halt procedure, and the dialog will inform the user of this scenario.
ResultsPurpose: to inform the user of the results of the task, whether good or bad (or interesting?).
Using the codeCreating a procedure dialog is a simple case of calling the constructor with the relevant variables and calling show. //public ProceedureDialog(String title, IProceedureComponent introductionComponent,
// List<IProceedureComponent> configurationComponents,
// IProceedureComponent confirmationComponent,
// IProceedureProcessComponent progressComponent,
// IProceedureComponent resultsComponent) {...}
ProceedureDialog d = new ProceedureDialog(title, introductionComponent,
configurationComponents,
confirmationComponent,
progressComponent,
resultsComponent);
d.Show();
Introduction, Confirmation, and Results PagesThe component should extend
Configuration PagesThe configuration pages are similar to that of introduction (et. al.), however are passed as a list, Progress PageThe production of the progress is more complex, requiring not only implementation of The The The Known Bugs
Points of InterestPlease note that this was my first real Windows Presentation Foundation application, and as such the design may be a little of in place. In particular this library shows why perhaps variable window transparency is not such a good idea. There are no set included methods for restyling the control, therefore some modification of the code may be required. Why doesn't Microsoft Visual Studio include a spell checker? History1.0.0.0 --- Initial build Additional Licensing NotesPlease feel free to use this in your work, however please be aware that a modified The Code Project Open License (CPOL) is in use; basically it is the same as the standard license except that this code must not be used for commercial or not-for-profit commercial use without prior authorisation. Please see license.txt or license.pdf in the included source and demo files.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||