org.eclipse.ui.newWizards

Mit dem 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.gif">
    	   <description>%NewWizard.desc</description>
         <selection class="org.eclipse.core.resources.IResource"/>
	</wizard>
</extension>

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

Kategorien der höchsten Ebene werden im Menü Datei > Neu angezeigt.  Im Beispiel wird als Attribut parentCategory eine Kategorie "Examples" angegeben.   Woher stammt nun die übergeordnete Kategorie?  Das Plug-in org.eclipse.ui definiert eine Standardbeispielkategorie in seinen Konfigurationsbefehlen:

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

Menü 'Neu' mit Kategorie 'Examples'

 

Die Kategorie name des Tools für Readme-Dateien definiert die Bezeichnung, die für die nächste Gruppierungsebene unterhalb der übergeordneten Kategorie verwendet wird.  Diese Kategorien werden auf der linken Seite des AssistentenNeues Beispiel angezeigt.   Der Name und das Symbol des Assistenten werden auf der rechten Seite des Assistenten angezeigt, sobald Sie auf die Kategorie klicken.  Die Beschreibung des Assistenten wird über dem Assistenten angezeigt, wenn Sie ihn in der Liste auf der rechten Seite auswählen (siehe Abbildung):

Assistent 'Neues Beispiel' mit Einträgen für Readme-Dateien

Diese Informationen zum Assistenten werden nur aufgrund der Konfigurationsbefehle in der Datei plugin.xml angezeigt. Kein Teil des Plug-in-Codes wird ausgeführt, bevor 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 an sie 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.

Der 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-Widgets als untergeordnete Elemente der bereitgestellten Klasse Composite erstellt werden. Da die Superklasse bereits Widgets 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) {
      // Standard-Widgets für Container- und Namensspezifikation übernehmen
      super.createControl(parent);
      Composite composite = (Composite)getControl();
      ...
      // Gruppe zur Generierung von Beispielabschnitten
      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));
      ...
      // Markierungsfelder für die Generierung von Beispielabschnitten
      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);
      ...
      // Markierungsfeld für das Öffnen der Datei im Editor
      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:

Assistentenseite für Erstellung der Readme-Datei

    

Copyright IBM Corporation und Andere 2000, 2003.