Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [platform-ui-dev] UI Guidelines v2.1 Feedback

Wenneker, Gaby wrote:
Hi *,

Concerning wizards the UI Guidelines recommend:

"Guideline 5.5: Information validation within a wizard should be done in tab order. If the first required field is empty, an informative prompt should be shown in the text area, directing the user to fill in the field. If the first required field is in error, an error message should be shown in the text area. If the first required field is valid, check the next field, and so on. The text area should not be used to display more than one prompt or error at a time. If dialog information is absent or invalid, the Next or Finish buttons should be disabled until the situation is resolved. When resolution occurs, and all of the information has been provided, the Next or Finish buttons may be enabled."

Most Eclipse Wizards do not fulfill this requirement (Eclipse 3.0, M8). In Wizards with multiple input fields, I get an error message after entering my first input because the remaining input fields are still empty, e.g. Java Class Wizard. After entering 'name' I get an error message the folder must not be empty.

This seems to be due to the Wizard Framework which provides three kinds of states: ok, warning, error. After each user input the state is checked. The former two enable Next/Finish. The latter one disables it and displays an error icon with additional text.

If we want our Wizards to behave according to the guidelines, we must introduce a fourth state: that shows no error icon, but at the same time disables Next/Finish. Or do we use the Wizard Framewok incorrectly? Are there any plans to adapt the Wizard Framework to the guideline requirements and adapt the Eclipse Wizards?

Best regards, Gaby

Next/Finish are not enabled based on message state, but test isPageComplete(). To make your wizard behave according to the guidelines, call setPageComplete(getErrorMessage() == null && getMessage() == null) at the end of field validation.

Bob Foster




Back to the top