A org.eclipse.jdt.ui.wizards csomag varázsló oldalakat biztosít Java elemek létrehozásához és beállításához. Számos előre elkészített oldal áll rendelkezésre.
JavaCapabilityConfigurationPage támogatja a Java összeépítés beállításainak szerkesztését (forrásmappa beállítás, hivatkozott projektek, hivatkozott és exportált könyvtárak).
Ha olyan varázslóra van szüksége, ami a bedolgozó számára beállít egy projektet, míg a Java környezethez és más Java projekt képességekhez is beállítja, akkor ezt az oldalt használja (ahelyett, hogy továbbmenne a NewJavaProjectWizardPage oldalra).
A varázsló oldalak hierarchiája támogatja új Java elemek létrehozását.
A NewElementWizardPage a varázsló alapműveleteit meghatározó absztrakt osztály. A hierarchia további absztrakt osztályokat biztosít a konkrét varázsló által nyújtott funkcionalitás személyre szabásához.
A konkrét létrehozási varázslók közvetlenül használhatók és általánosan ne tervezzen továbbszármaztatásukkal.
Az IClasspathContainerPage felület a varázsló oldalakhoz hozzáadó struktúrát határoz meg, amely lehetővé teszi, hogy a felhasználó új osztályútvonal tároló bejegyzésést határozzon meg, vagy egy meglévőt szerkeszthessen. Ha a bedolgozó saját osztályútvonal tárolót határozott meg a JDT törzs org.eclipse.jdt.core.classpathContainerInitializer kiterjesztési ponttal, akkor ajánlott egy vonatkozó varázsló oldalt is létrehozni az ilyen típusú osztályútvonal tárolók létrehozásához és szerkesztéséhez.
A bedolgozó kódjának biztosítania kell az org.eclipse.jdt.ui.classpathContainerPage kiterjesztést. A kiterjesztés kódjában fenn kell tartani az IClasspathContainerPage megvalósító osztály nevét. Ha további információkat szeretne biztosítani a varázsló oldalban az aktuálisan kijelölt osztályútvonal környezetéről, akkor valósítsa meg a IClasspathContainerPageExtension felületet, hogy inicializálhassa a kijelölt osztályútvonal bejegyzéseitől függő bármely állapotot.
Amellett, hogy előre elkészített oldalakat használ a varázsló oldalakat továbbszármaztatásával saját beviteli mezőket adhat hozzá vagy a kód előállításra lehet hatással. Használja a NewElementWizardPage hierarchia absztrakt osztályait a varázsló személyre szabásához a konkrét osztály továbbszármaztatása helyett.
Az alábbiakban egy új típus varázsló oldal példája látható, amely úgy lett beállítva, hogy JUnit tesztlépés osztályokat hozzon létre.
Az oldal a "junit.framework.TestCase" segítségével inicalizálja a
szülőosztályt és egy kiegészíti egy jelölőnégyzettel, amely azt vezérli, hogy a
setUp() és a tearDown() metódusoknak készüljön-e
metóduscsonkja, vagy nem.
public class TestCaseWizardPage extends NewTypeWizardPage {
private Button fCreateStubs;
public TestCaseWizardPage() {
super(true, "TestCaseWizardPage");
}
/**
* A varázslóoldalt vezérlő varázslónak meg kell hívnia ezt a metódust
* miközben egy megfelelő kijelöléssel inicializál.
*/
public void init(IStructuredSelection selection) {
IJavaElement jelem= getInitialJavaElement(selection);
initContainerPage(jelem);
initTypePage(jelem);
doStatusUpdate();
}
private void doStatusUpdate() {
// meg kell határozni azokat az összetevőket, amelyeknek egy állapotot kell megadni
IStatus[] status= new IStatus[] {
fContainerStatus,
isEnclosingTypeSelected() ? fEnclosingTypeStatus : fPackageStatus,
fTypeNameStatus,
};
updateStatus(status);
}
protected void handleFieldChanged(String fieldName) {
super.handleFieldChanged(fieldName);
doStatusUpdate();
}
public void createControl(Composite parent) {
initializeDialogUnits(parent);
Composite composite= new Composite(parent, SWT.NONE);
int nColumns= 4;
GridLayout layout= new GridLayout();
layout.numColumns= nColumns;
composite.setLayout(layout);
// szabványos bemeneti mezők létrehozása
createContainerControls(composite, nColumns);
createPackageControls(composite, nColumns);
createSeparator(composite, nColumns);
createTypeNameControls(composite, nColumns);
createSuperClassControls(composite, nColumns);
// a csonk létrehozást vezérlő jelölőnégyzet létrehozása
fCreateStubs= new Button(composite, SWT.CHECK);
fCreateStubs.setText("Add 'setUp()' and 'tearDown()' to new class");
GridData gd= new GridData();
gd.horizontalSpan= nColumns;
fCreateStubs.setLayoutData(gd);
setControl(composite);
// Az őstípus mező inicializálizálása és beállítása írásvédettnek
setSuperClass("junit.framework.TestCase", false);
}
protected void createTypeMembers(IType newType, ImportsManager imports, IProgressMonitor monitor) throws CoreException {
if (fCreateStubs.getSelection()) {
String setUpMathod= "public void setUp() {}";
newType.createMethod(setUpMathod, null, false, null);
String tearDownMathod= "public void setUp() {}"
newType.createMethod(tearDownMathod, null, false, null);
}
}
}