# Custom Wizard Pages for MBS New Project Wizards

###### Identifier:

org.eclipse.cdt.managedbuilder.ui.newWizardPages

###### Since:

3.0

###### Description:

This extension point allows for the specification of pages to the New Managed C/C++ wizards. Via this extension point, the developer may specify one or more wizard pages to add to the wizard, and optionally only add these pages if certain conditions on the project type, project toolchain, and project nature are met. The developer may also specify a Java class which performs any operations pursuant to the state of the wizard when the user clicks Finish.

###### Configuration Markup:

<!ELEMENT extension (wizardPage+)>

<!ATTLIST extension

point CDATA #REQUIRED

id CDATA #IMPLIED

name CDATA #IMPLIED>

Extensions to this extension point must contain at least one wizardPage child element.

<!ELEMENT wizardPage (nature* , toolchain* , projectType*)>

<!ATTLIST wizardPage

ID CDATA #REQUIRED

pageClass CDATA #REQUIRED

operationClass CDATA #IMPLIED>

Each instance of this element defines an additional page which is added to the New Project wizard. Pages are added after the default pages provided by MBS. Pages are added in the order they are discovered. Note that the IWizardPage interface allows a page to specify programmatically and dynamically at runtime what its previous and next pages are. This element does not trump that behaviour, but rather just specifies the order in which the pages are added to the wizard (and hence the order in which the pages appear if they do not override the previous and next page methods). Wizard pages as GUI elements by themselves are really not all that useful. More than likely if someone is defining their own wizard pages it’s because they need some additional operations to happen upon project creation in addition to the stock behaviour of creating a basic project, and they want to use their new wizard pages to provide a front end to these operations. As such, along with a specification of the GUI wizard page, ISVs may specify a runnable operation that will be executed in the wizard’s doRunEpilogue() method. These contributions will all be executed in the order that the wizard pages were added to the wizard. Not all pages need have such a contribution however, as ISVs may need to perform all the operations associated with their pages as a group. In cases such as this the ISV can define an operation for one of the pages and it can pull data from any of the other pages as required.

- ID - A unique identifier for the page which will be used to reference the page.
- pageClass - Specifies the Java class which implements the added page. This class must implement the org.eclipse.jface.wizard.IWizardPage interface. For convenience, there is an org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPage abstract class which provides a default implementation of the getNextPage() and getPreviousPage() members that orders pages in the order they are discovered by the wizard.
- operationClass - Specifies the Java class which implements the operations associated with this page. The class must implement either the java.lang.Runnable interface, or the org.eclipse.jface.operation.IRunnableWithProgress interface if progress reporting is desired.

<!ELEMENT nature EMPTY>

<!ATTLIST nature

natureID CDATA #REQUIRED>

This optional child element of wizardPage specifies the project nature(s) for which the additional pages should apply. One instance of this element is provided per nature supported. This would for example allow one to add pages to the New Managed C Project wizard but not the New Managed C++ project wizard, or other hypothetical natures that might be supported by MBS in the future (e.g. someday there might be a Fortran nature). If no natureID elements are specified, then it is assumed that the page potentially applies to all project natures, although it may still be excluded based on project type or toolchain.

- natureID - The unique ID of a nature (org.eclipse.core.resources.natures) for which this page should appear.

<!ELEMENT toolchain EMPTY>

<!ATTLIST toolchain

toolchainID CDATA #REQUIRED

versionsSupported CDATA #IMPLIED>

This is an optional child element of wizardPage which specifies a toolchain for which the additional pages should apply. One instance of this element is provided per toolchain supported by the page. If no toolchain elements are specified, then it is assumed that the page potentially applies to all toolchains, although it may still be excluded based on project type or project nature.

- toolchainID - The unique ID of a toolchain for which this page should appear.
- versionsSupported - A comma separated list of specific versions of the toolchain that are supported by the page. If not specified, it is assumed that this page supports the toolchain regardless of version.

<!ELEMENT projectType EMPTY>

<!ATTLIST projectType

projectTypeID CDATA #REQUIRED>

This is an optional child element of wizardPage which specifies a projectType for which the additional pages should apply. One instance of this element is provided per toolchain supported by the page. If no projectType elements are specified, then it is assumed that the page potentially applies to all projectTypes, although it may still be excluded based on toolchain or nature.

- projectTypeID - The unique ID of a projectType for which this page should appear.

###### Examples:

###### API Information:

None

###### Supplied Implementation:

None.

Copyright (c) 2005 Texas Instruments Incorporated and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0