org.eclipse.ui.newWizards

U kunt de wizard toevoegen aan de menuopties Bestand > Nieuw in de workbench met het extensiepunt org.eclipse.ui.newWizards. In het voorbeeld van de readme-tool wordt dit extensiepunt gebruikt om de wizard voor een nieuwe readme-bestand toe te voegen:

   <extension
      point = "org.eclipse.ui.newWizards">
	<category
	   id = "org.eclipse.ui.examples.readmetool.new"
	   parentCategory="org.eclipse.ui.Examples"
	   name="%NewWizard.category">
	</category>
 	<wizard
	   id = "org.eclipse.ui.examples.readmetool.wizards.new.file"
      	   name = "%NewWizard.name"
	   class="org.eclipse.ui.examples.readmetool.ReadmeCreationWizard"
	   category="org.eclipse.ui.Examples/org.eclipse.ui.examples.readmetool.new"
	   icon="icons/obj16/newreadme_wiz.png">
    	   <description>%NewWizard.desc</description>
	   <selection class="org.eclipse.core.resources.IResource"/>
	</wizard>
</extension>   

De categorie (category) geeft de groepering voor de wizard aan. Met een optionele bovenliggende categorie (parentCategory) wordt de nieuwe categorie aangeduid als onderliggende categorie van een bestaande categorie.

Toplevel categorieën worden weergegeven in het menu Bestand > Nieuw.  In dit voorbeeld is parentCategory ingesteld op een categorie "Examples" (voorbeelden). Waar komt de bovenliggende categorie vandaan? De plugin org.eclipse.ui definieert een standaardvoorbeeldcategorie in de bijbehorende markup:

   <extension
        point="org.eclipse.ui.newWizards">
      <category
          name="%NewWizards.Category.Examples"
          id="org.eclipse.ui.Examples">
      </category>
    ...

Deze categorie wordt weergegeven in het menu Bestand > Nieuw.

Menu Nieuw met categorie Examples

 

De readme-toolcategorie name (naam) is het label dat wordt gebruikt voor de volgende groeperingslaag onder de categorie erboven. Deze categorieën worden afgebeeld als het tweede niveau in de structuur die wordt weergegeven in de wizard Nieuw voorbeeld. De naam en het pictogram worden onderaan weergegeven wanneer u de categorie uitvouwt. De beschrijving van de geselecteerde wizard wordt bovenaan de wizard afgebeeld wanneer u deze selecteert.

Wizard Nieuw voorbeeld met readme-vermeldingen

Deze informatie over de wizard wordt alleen weergegeven vanwege de markup in het bestand plugin.xml. De plugincode wordt pas uitgevoerd wanneer de gebruiker op de knop Volgende klikt. Als dat gebeurt, wordt door de workbench de wizardklasse (class) die is opgegeven in de markup geïnstantieerd en wordt er een verwachte selectieklasse (class) aan doorgegeven.

De klasse die in deze extensie (ReadmeCreationWizard) is opgegeven, moet de interface INewWizard implementeren.  Bij de meeste wizards gebeurt dit door de platformklasse Wizard uit te breiden. Dit is echter een implementatiemechanisme en is niet vereist voor het extensiepunt.

De wizard zelf maakt alleen de wizardpagina's. Eerst wordt de implementatie van de pagina besproken, daarna komen we terug op de wizard.

Pagina's

De workbench biedt basisklassen voor wizardpagina's die de verschillende soorten verwerkingen voor wizardextensiepunten ondersteunen. U kunt deze pagina's zo gebruiken of ze uitbreiden met aanvullende verwerkingen.

Het doel van de ReadmeCreationWizard is om een nieuw bestand te maken, de benodigde content aan het bestand toe te voegen en desgewenst een editor voor het bestand te openen. Our page needs to define de besturingselementen waarmee de gebruiker de content van het bestand kan opgeven en kan kiezen of hiervoor een editor moet worden gestart.

De wizardpagina, ReadmeCreationPage, wordt gemaakt door WizardNewFileCreationPage uit te breiden. De besturingselementen voor een wizardpagina worden gedefinieerd op soortgelijke wijze als de besturingselementen voor een view of een editor. De pagina implementeert een methode createControl, waarbij de nodige SWT-widgets worden gemaakt als onderliggende items van het opgegeven samengestelde item. Omdat de superklasse al widgets toevoegt die de verwerking van nieuwe bestanden ondersteunen, hoeven we op onze wizardpagina slechts de methode createControl uit te breiden met de aanvullende aanvullende selectievakjes voor het genereren van secties en het openen van de editor.

    public void createControl(Composite parent) {
      // standaardcontainer en naamspecificatiewidgets overnemen
      super.createControl(parent);
      Composite composite = (Composite)getControl();
      ...
      // voorbeeldsectie met groep genereren
      Group group = new Group(composite,SWT.NONE);
      group.setLayout(new GridLayout());
      group.setText(MessageUtil.getString("Automatic_sample_section_generation"));
      group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL |
         GridData.HORIZONTAL_ALIGN_FILL));
      ...
      // voorbeeldsectie met selectievakjes genereren
      sectionCheckbox = new Button(group,SWT.CHECK);
      sectionCheckbox.setText(MessageUtil.getString("Generate_sample_section_titles"));
      sectionCheckbox.setSelection(true);
      sectionCheckbox.addListener(SWT.Selection,this);

      subsectionCheckbox = new Button(group,SWT.CHECK);
      subsectionCheckbox.setText(MessageUtil.getString("Generate_sample_subsection_titles"));
      subsectionCheckbox.setSelection(true);
      subsectionCheckbox.addListener(SWT.Selection,this);
      ...
      // selectievakje om bestand te openen voor bewerking
      openFileCheckbox = new Button(composite,SWT.CHECK);
      openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done"));
      openFileCheckbox.setSelection(true);
      ...
   }

Voor deze code moet u voldoende kennis hebben van de onderwerpen in Standard Widget Toolkit (SWT).

De basisprocedure voor het implementeren van een pagina luidt als volgt:

De klasse ReadmeCreationPage neemt een groot deel van dit gedragspatroon over van de klasse WizardNewFileCreationPage.  Zie de implementatie van deze klassen voor verdere informatie.

Nu u weet wat een pagina inhoudt, komen we terug op de wizard.

Wizard

De wizard is verantwoordelijk voor het maken van de pagina's en het aanleveren van de voltooiingslogica.

De basisprocedure voor het implementeren van een wizard luidt als volgt:

De voltooide wizard ziet er als volgt uit:

Wizardpagina voor aanmaak van readme-bestand