org.eclipse.ui.newWizards

È possibile aggiungere una procedura guidata alle opzioni di menu File > Nuovo > del workbench utilizzando il punto di estensione org.eclipse.ui.newWizards. L'esempio dello strumento readme utilizza la definizione di questo punto di estensione per aggiungere la procedura guidata File Readme:

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

La categoria descrive la suddivisione in gruppi per la procedura guidata.  Una parentCategory facoltativa stabilisce che la nuova categoria è secondaria rispetto a una categoria esistente.

Nel menu File > Nuovo verranno visualizzate categorie di livello superiore.  In questo esempio, parentCategory è impostata su una categoria "Esempi".  Da dove proviene la categoria principale?  Il plugin org.eclipse.ui definisce una categoria di esempi standard nel rispettivo tag:

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

Questa categoria viene visualizzata nel menu File > Nuovo.

Menu Nuovo con categoria Esempi

 

La categoria dello strumento readme nome definisce l'etichetta utilizzata per il layer successivo di raggruppamento al di sotto della categoria principale.  Queste categorie vengono visualizzate come il secondo livello nella struttura ad albero visualizzata nella procedura guidata Nuovo esempio.  Il nome e l'icona della procedura vengono visualizzati in basso facendo clic sulla categoria.  La descrizione della procedura guidata selezionata viene visualizzata nella parte superiore della procedura guidata selezionata.

Procedura guidata Nuovo esempio con voci del readme

Queste informazioni relative alla procedura guidata vengono visualizzate unicamente a causa del tag nel file plugin.xml.  Nessun codice di plugin verrà eseguito finché non verrà selezionato il pulsante Avanti.  Quando ciò avviene, il workbench esegue l'istanza della classe della procedura guidata specificata nel tag e trasferisce una classe di selezione prevista.

La classe identificata in questa estensione (ReadmeCreationWizard) deve implementare l'interfaccia INewWizard.  La maggior parte delle procedure guidate esegue questa operazione mediante l'estensione della classe Wizard della piattaforma, sebbene si tratti di un meccanismo di implementazione e non sia richiesto dal punto di estensione.

La stessa procedura guidata non fa altro che creare le pagine al suo interno. Per prima cosa controllare l'implementazione della pagina e, quindi, tornare nuovamente alla procedura guidata.

Pagine

Il workbench fornisce classi base per le pagine della procedura guidata che supportano il tipo di elaborazione eseguito per ogni punto di estensione della procedura guidata. L'utente può utilizzare queste pagine oppure estenderle per aggiungere un'ulteriore elaborazione.

Lo scopo di ReadmeCreationWizard consiste nel creare un nuovo file, aggiungere il contenuto necessario al file e, come opzione, aprire un editor sul file. Nella pagina dell'utente devono essere definiti i controlli che permettono all'utente di specificare il contenuto che deve essere inserito nel file e se un editor deve essere avviato.

La pagina della procedura guidata, ReadmeCreationPage, viene creata estendendo WizardNewFileCreationPage. I controlli per una pagina di procedura guidata sono definiti in modo simile alla definizione dei controlli per una vista o per un editor. La pagina implementa un metodo createControl per la creazione dei widget SWT necessari come elementi secondari di Composite. Poiché la superclasse esegue già l'aggiunta di widget che supportano la nuova elaborazione file, è solo necessario estendere il metodo createControl nella pagina della procedura guidata per aggiungere le caselle di controllo aggiuntive che controllano la creazione delle sezioni e l'apertura dell'editor.

   public void createControl(Composite parent) {
      // eredita widget di specifica nome e contenitore predefiniti
      super.createControl(parent);
      Composite composite = (Composite)getControl();
      ...
      // gruppo per la generazione di sezioni di esempio
      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);
      ...
      // apre il file per la modifica di caselle di controllo
      openFileCheckbox = new Button(composite,SWT.CHECK);
      openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done"));
      openFileCheckbox.setSelection(true);
      ...
   }

L'utente dovrebbe essere in grado di seguire questo codice avendo appreso i concetti illustrati in SWT (Standard Widget Toolkit).

I modelli di base per l'implementazione di una pagina comprendono:

La classe ReadmeCreationPage eredita una gran parte di questa funzionalità da WizardNewFileCreationPage.  Per ulteriori informazioni, sfogliare l'implementazione di questa classi.

Dopo aver esplorato la pagina, si consideri nuovamente la procedura guidata.

Procedura guidata

La procedura guidata è responsabile della creazione delle pagine e della fornitura della logica di "conclusione".

I modelli di base per l'implementazione di una procedura guidata comprendono:

La procedura guidata completa dovrebbe avere l'aspetto seguente:

Pagina della procedura guidata Creazione file readme