Az org.eclipse.ui.newWizards kiterjesztési pont segítségével a munkaterületen hozzáadhat egy varázslót a Fájl > Új> menüponthoz. A readme eszköz példa ezt a kiterjesztési pont definíciót használja a Readme fájl varázsló hozzáadásához:
<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>
A kategória leírja a varázsló csoportosítását. Az elhagyható parentCategory létrehozza az új kategóriát a meglévő kategória leszármazottjaként.
A felsőszintű kategóriák megjelennek a Fájl > Új menüben. Ebben a példában a parentCategory "Példák" kategóriára van állítva. Honnan ered a szülőkategória? Az org.eclipse.ui bedolgozó szabványos példakategóriát ad meg a leírónyelvben:
<extension
point="org.eclipse.ui.newWizards">
<category
name="%NewWizards.Category.Examples"
id="org.eclipse.ui.Examples">
</category>
...
Ez a kategória megjelenik a Fájl > Új menüben.

A readme eszköz név kategóriája megadja a csoportosítás következő kategóriájához használt címkét a szülőkategória alatt. Ezek a kategóriák második szintként jelennek meg az Új példa varázslóban megjelenő fában. A kategória kiterjesztésekor a varázsló neve és ikonja alul jelenik meg. A kiválasztott varázsló leírása megjelenik a varázsló tetején, amikor kiválasztja.

Kizárólag a varázslóval kapcsolatos információk jelennek meg a plugin.xml fájlban lévő leírónyelv miatt. Egyik bedolgozó kód sem fut, amíg a felhasználó ki nem választja a Tovább gombot. Ha ez történik, akkor a munkaterület példányosítja a leírónyelvben megadott varázslóosztályt és átadja a várt kiválasztási osztályt.
A kiterjesztésben azonosított osztálynak (ReadmeCreationWizard) meg kell valósítania az INewWizard felületet. A legtöbb varázsló a platform Varázsló osztály kiterjesztésével valósítja meg, habár ez egy megvalósítási mechanizmus és a kiterjesztési ponthoz nem szükséges.
A varázsló maga kicsi, de létrehozza az oldalakat ezen belül. Tekintsük meg az első oldal megvalósítását, majd térjen vissza a varázslóhoz.
A munkaterület alap varázslóoldal-osztályokat biztosít, amely támogatja a varázsló kiterjesztési pontokhoz végrehajtott feldolgozási típusokat. Használhatja ezeket az oldalakat, vagy kiterjesztheti őket további feldolgozás hozzáadásához.
A ReadmeCreationWizard célja új fájl létrehozása, a szükséges tartalom fájlhoz adása, és lehetőségként szerkesztő megnyitása a fájlon. Az oldalaknak meg kell adniuk a vezérlőket, amelyek segítségével a felhasználó megadhatja, hogy milyen tartalom kerüljön a fájlba, valamint hogy a szerkesztőt el kell-e indítani.
Létrehozzuk a ReadmeCreationPage varázslóoldalt a WizardNewFileCreationPage kiterjesztésével. A varázslóoldal vezérlőelemei a nézet vagy szerkesztő vezérlőelemeihez hasonlóan kerülnek megadásra. Az oldal megvalósít egy createControl metódust, létrehozza a szükséges SWT felületi elemeket a biztosított Composite leszármazottjaként. Mivel a szülőosztály már hozzáadott felületi elemeket, amely támogatja az új fájlfeldolgozást, csak createControl metódust kell kiterjeszteni a varázslóoldalon további jelölőnégyzetek hozzáadása érdekében, amelyek vezérlik a szakaszok előállítását és a szerkesztő megnyitását.
public void createControl(Composite parent) {
// inherit default container and name specification widgets
super.createControl(parent);
Composite composite = (Composite)getControl();
...
// példa szakaszelőállítási csoport
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));
...
// példa szakaszelőállítási jelölőnégyzetek
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);
...
// fájlmegnyitás a jelölőnégyzet szerkesztéséhez
openFileCheckbox = new Button(composite,SWT.CHECK);
openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done"));
openFileCheckbox.setSelection(true);
...
}
Követnie kell ezt a kódot, ha megérti az alapelvet a Standard Widget eszközkészletben.
Az oldal megvalósításának alap mintái az alábbiak:
A ReadmeCreationPage osztály a viselkedésének nagy részét a WizardNewFileCreationPage elemtől örökli. További információkért böngéssze az osztályok megvalósítását.
Most, hogy már ismerjük, mit csinál az oldal, tekintsük meg újra a varázslót.
A varázsló felelős az oldalak létrehozásáért és a "befejező" logika biztosításáért.
A varázsló megvalósításának alap mintái a következők:
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();
}
A befejezett varázsló az alábbi módon néz ki:
