org.eclipse.ui.newWizards

Über den Erweiterungspunkt org.eclipse.ui.newWizards können Sie in der Workbench einen Assistenten zu den Menüoptionen Datei > Neu > hinzufügen. Das Tool für Readme-Dateien verwendet diese Erweiterungspunktdefinition, um den Assistenten für Readme-Dateien hinzuzufügen:

<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>

Das Attribut category beschreibt die Gruppierung für den Assistenten.  Ein optionales Attribut parentCategory erstellt die neue Kategorie als untergeordnetes Element einer vorhandenen Kategorie.

Kategorien auf der höchsten Ebene erscheinen im Menü Datei > Neu .  In diesem Beispiel ist das Attribut parentCategory als "Beispiel"kategorie eingestellt.  Woher stammt die übergeordnete Kategorie?  Das Plug-in org.eclipse.ui definiert in seinen Formatierungssteuerzeichen eine Standardbeispielkategorie:

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

Diese Kategorie wird im Menü Datei > Neu angezeigt.

Neues Menü mit der Kategorie 'Beispiel'

 

Die Kategorie Name des Readme-Tools definiert den Kennsatz, der für die nächste Gruppierungsebene unterhalb der übergeordneten Kategorie verwendet wird. Diese Kategorien werden als zweite Ebene des Baums dargestellt, der im Assistenten Neues Beispiel zu sehen ist.  Name und Symbol des Assistenten werden unterhalb angezeigt, wenn die Kategorie erweitert wird.  Die Beschreibung des ausgewählten Assistenten wird im oberen Teil des Assistenten angezeigt, wenn er ausgewählt wird.

Neuer Beispielassistent mit Readme-Einträgen

Diese Angaben werden auf Grund der Befehlsdefinition in der Datei plugin.xml angezeigt.  Kein Teil des Plug-in-Codes wird ausgeführt, bis der Benutzer die Schaltfläche Weiter auswählt. Sobald dies stattfindet, erstellt die Workbench ein Exemplar der Klasse des Assistenten, die in der Befehlsdefinition angegeben ist, und übergibt ihr eine erwartete Auswahlklasse.

Die in dieser Erweiterung (ReadmeCreationWizard) angegebene Klasse muss die Schnittstelle INewWizard implementieren.  In den meisten Assistenten wird zu diesem Zweck die Klasse Wizard der Plattform erweitert, obwohl es sich um einen Implementierungsmechanismus handelt und durch den Erweiterungspunkt nicht erfordert wird.

Der Assistent führt nichts weiter aus, als die in ihm enthaltenen Seiten zu erstellen. Im Folgenden wird zunächst die Implementierung der Seite erläutert. Anschließend kehren Sie zum Assistenten zurück.

Seiten

Die Workbench bietet Basisklassen für Assistentenseiten, die den Typ der Verarbeitung unterstützen, die an einem bestimmten Assistentenerweiterungspunkt ausgeführt wird. Sie können diese Seiten unverändert verwenden oder sie durch das Hinzufügen einer weiteren Verarbeitung erweitern.

Zweck der Klasse ReadmeCreationWizard ist es, eine neue Datei zu erstellen, den erforderlichen Inhalt zur Datei hinzuzufügen und über eine Option einen Editor für die Datei zu öffnen. Die entsprechende Seite muss die Steuerelemente definieren, mit denen der Benutzer angeben kann, welcher Inhalt in die Datei gestellt und ob ein Editor gestartet werden soll.

Die Assistentenseite ReadmeCreationPage erstellen Sie nun, indem Sie die Klasse WizardNewFileCreationPage erweitern. Die Steuerelemente für eine Assistentenseite werden ähnlich wie die Steuerelemente für eine Sicht oder einen Editor definiert. Die Seite implementiert eine Methode createControl, mit der die erforderlichen SWT-Fensterobjekte als untergeordnete Elemente der bereitgestellten Klasse Composite erstellt werden. Da die Superklasse bereits Fensterobjekte hinzufügt, die die Verarbeitung einer neuen Datei unterstützen, müssen Sie lediglich die Methode createControl in der Assistentenseite erweitern und die zusätzlichen Markierungsfelder hinzufügen, mit denen das Generieren von Abschnitten und das Öffnen des Editors gesteuert wird.

   public void createControl(Composite parent) {
      // inherit default container and name specification widgets
      super.createControl(parent);
      Composite composite = (Composite)getControl();
      ...
      // sample section generation group
      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));
      ...
      // sample section generation checkboxes
      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);
      ...
      // open file for editing checkbox
      openFileCheckbox = new Button(composite,SWT.CHECK);
      openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done"));
      openFileCheckbox.setSelection(true);
      ...
   }

Wenn Sie mit den Konzepten, die unter SWT (Standard Widget Toolkit) beschrieben sind, vertraut sind, sollten Sie in der Lage sein, diesen Code nachzuvollziehen.

Die Implementierung einer Seite umfasst die folgenden Grundmuster:

Die Klasse ReadmeCreationPage übernimmt einen Großteil dieses Verhaltens von der Klasse WizardNewFileCreationPage.  Weitere Informationen finden Sie in den Implementierungen dieser Klassen.

Nachdem Sie jetzt die Funktionsweise einer Seite kennen gelernt haben, geht es wieder zurück zum Assistenten.

Assistent

Der Assistent ist zuständig für die Erstellung der Seiten und für das Bereitstellen der Logik für die Fertigstellung.

Die Implementierung eines Assistenten umfasst die folgenden Grundmuster:

Der fertig gestellte Assistent sollte folgendermaßen aussehen:

Seite 'Assistent für die Erstellung von Readme-Dateien'