E 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" 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 descrive dove verrà raggruppata la procedura guidata quando la rispettiva finestra di selezione viene utilizzata per ricercare e avviare una procedura guidata. name, riferito alla categoria, definisce l'etichetta utilizzata nella procedura guidata. Quest'ultima viene assegnata alla categoria. name, icon e description della procedura guidata sono visualizzati nella finestra di selezione della nuova procedura riportata 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.
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 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) { // 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); ... }
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.
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(MessageUtil.getString("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: