org.eclipse.ui.newWizards

Vous pouvez ajouter un assistant à l'option de menu Fichier > Nouveau > dans le plan de travail à l'aide du point d'extension org.eclipse.ui.newWizards. L'exemple d'outil readme utilise cette définition de point d'extension pour ajouter l'assistant "Readme File" :

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

category décrit le regroupement de l'assistant.  Une parentCategory optionnelle définit la nouvelle catégorie en tant qu'enfant d'une catégorie existante.  

Les catégories de niveau supérieur s'affichent dans le menu Fichier > Nouveau.  Dans cet exemple, parentCategory est définie comme catégorie "Examples".  D'où provient la catégorie parent ?  Le plug-in org.eclipse.ui définit une catégorie d'exemples standard dans sa marque :

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

Cette catégorie s'affiche dans le menu Fichier > Nouveau.

Menu Nouveau avec catégorie Examples

 

La catégorie d'outil readme name définit le libellé utilisé pour la couche de regroupement située sous la catégorie parent.  Ces catégories sont indiquées sur la gauche de l'assistant Nouvel exemple.  Les nom et icône de l'assistant s'affichent sur la droite de l'assistant lorsque vous cliquez sur la catégorie.  La description de l'assistant s'affiche en haut de l'assistant lorsque vous le sélectionnez dans la liste de droite comme indiqué ci-dessous :

Assistant Nouvel exemple avec entrées readme

Ces informations sur l'assistant ne s'affichent qu'à cause de la marque du fichier plugin.xml.  Aucun des codes de plug-in ne s'exécute tant que l'utilisateur n'a pas cliqué sur le bouton Suivant.  Une fois ce bouton sélectionné, le plan de travail instancie la classe de l'assistant spécifiée dans les marques et la transmet à une classe de sélection prévue.

La classe identifiée dans cette extension (ReadmeCreationWizard) doit implémenter l'interface INewWizard. La plupart des assistants le font en étendant la classe Wizard de la plateforme bien qu'il s'agisse d'un mécanisme d'implémentation non requis par le point d'extension.

L'action de l'assistant est faible, mais il crée les pages qu'il contient. Considérons d'abord l'implémentation des pages, et nous reviendrons ensuite à l'assistant.

Pages

Le plan de travail fournit les classes de page d'assistant de base qui supportent le type de traitement effectué pour chaque point d'extension de l'assistant. Vous pouvez utiliser ces pages ou les étendre pour ajouter un traitement supplémentaire.

Le but de ReadmeCreationWizard est de créer un fichier, d'y ajouter le contenu requis et en option, d'ouvrir un éditeur sur ce fichier. La page doit définir les contrôles qui permettent à l'utilisateur de spécifier le contenu destiné au fichier et si un éditeur doit être lancé.

Nous créons la page de l'assistant ReadmeCreationPage en étendant WizardNewFileCreationPage. Les contrôles pour une page d'assistant sont définies de manière identique à la définition des contrôles d'une vue ou d'un éditeur. La page implémente une méthode createControl, créant les widgets SWT nécessaires comme enfants du composite fourni. La superclasse ajoutant déjà des widgets qui supportent le traitement du nouveau fichier, nous n'avons plus qu'à étendre la méthode createControl dans la page de notre assistant pour ajouter les cases à cocher supplémentaires qui commandent la génération des sections et l'ouverture de l'éditeur.

   public void createControl(Composite parent) {
      // hérite du conteneur par défaut et des widgets de spécification de noms
      super.createControl(parent);
      Composite composite = (Composite)getControl();
      ...
      // groupe de génération de sections
      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));
      ...
      // cases à cocher de génération de sections
      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);
      ...
      // ouverture du fichier pour modifier la case à cocher
      openFileCheckbox = new Button(composite,SWT.CHECK);
      openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done"));
      openFileCheckbox.setSelection(true);
      ...
   }

Vous devez être en mesure de suivre ce code si vous comprenez les concepts exposés dans Standard Widget Toolkit.

Les schémas de base pour l'implémentation d'une page sont les suivants :

La classe ReadmeCreationPage hérite une grande partie de ce comportement de WizardNewFileCreationPage. Pour plus d'informations, reportez-vous à l'implémentation de ces classes.

Maintenant que nous savons ce que fait une page, revenons à l'assistant.

Assistant

L'assistant est responsable de la création des pages et de la fourniture de la logique de "fin".

Les schémas de base pour l'implémentation d'un assistant sont les suivants :

L'assistant terminé ressemble à ce qui suit :

Page de l'assistant de création du fichier readme

    

Copyright IBM Corporation and others 2000, 2003.