org.eclipse.ui.newWizards

È possibile aggiungere una procedura guidata all'opzione 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 Readme File:

<extension
    point = "org.eclipse.ui.newWizards">
    <category
        id = "org.eclipse.ui.examples.readmetool.new"
        name="Example Creation Wizards">
    </category>
    <wizard
        id = "org.eclipse.ui.examples.readmetool.wizards.new.file"
        name = "Readme File"
        class="org.eclipse.ui.examples.readmetool.ReadmeCreationWizard"
        category="org.eclipse.ui.examples.readmetool.new"
        icon="icons/basic/obj16/newreadme_wiz.gif">
        <description>Un esempio di una procedura guidata che crea il file Readme di esempio
        </description>
        <selection class="org.eclipse.core.resources.IResource"/>
    </wizard>
</extension>

category descrive dove verrà raggruppata la procedura guidata quando la rispettiva finestra di selezione viene utilizzata per ricercare e avviare una procedura guidata. Il nome della categoria ("Example Creation Wizards"), definisce l'etichetta che viene utilizzata nella procedura guidata.  La medesima procedura guidata viene assegnata alla categoria.   I relativi elementi name, icon e description appaiono tutti nella finestra di selezione della nuova procedura guidata, illustrata di seguito.

Tutto ciò si basa sul codice presente nel file plugin.xml.  Nessuna parte del codice del plug-in viene eseguita fino a quando l'utente non sceglie il pulsante Avanti.  Quando ciò avviene, il workbench effettuerà l'istanza della classe di procedura guidata specificata nel codice e trasmetterà una classe di selezione prevista.

La classe identificata in questa estensione (ReadmeCreationWizard) deve implementare l'interfaccia INewWizard.  La maggior parte delle procedure guidate eseguono questa azione estendendo la classe Wizard della piattaforma, sebbene questo sia un meccanismo di implementazione e non sia richiesto da un 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, CreateReadmePage1, viene creata estendendo WizardNewFileCreationPage. I controlli per una pagina di procedura guidata sono definiti in modo simile alla definizione dei controlli per una visualizzazione 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) {
    // ereditare il contenitore predefinito e denominare i widget di specifica
    super.createControl(parent);
    Composite composite = (Composite)getControl();
    ...
    // gruppo per creazione della sezione di esempio
    Group group = new Group(composite,SWT.NONE);
    group.setLayout(new GridLayout());
    group.setText("Automatic sample section generation");
    group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL |
        GridData.HORIZONTAL_ALIGN_FILL));
    ...
    // caselle di controllo per creazione della sezione di esempio
    sectionCheckbox = new Button(group,SWT.CHECK);
    sectionCheckbox.setText("Generate sample section titles");
    sectionCheckbox.setSelection(true);
    sectionCheckbox.addListener(SWT.Selection,this);

    subsectionCheckbox = new Button(group,SWT.CHECK);
    subsectionCheckbox.setText("Generate sample subsection titles");
    subsectionCheckbox.setSelection(true);
    subsectionCheckbox.addListener(SWT.Selection,this);
    ...
    // aprire il file per la modifica della casella di controllo
    openFileCheckbox = new Button(composite,SWT.CHECK);
    openFileCheckbox.setText("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, esaminare l'implementazione di queste 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:

public void init(IWorkbench workbench,IStructuredSelection selection) {
    this.workbench = workbench;
    this.selection = selection;
    setWindowTitle("New Readme File");
    setDefaultPageImageDescriptor(ReadmeImages.README_WIZARD_BANNER);
}

public void addPages() {
    mainPage = new ReadmeCreationPage(workbench, selection);
    addPage(mainPage);
}

public boolean performFinish() {
    return mainPage.finish();
}

La procedura guidata completa dovrebbe apparire nel modo seguente: