Java-wizards

Het pakket org.eclipse.jdt.ui.wizards bevat wizardpagina's voor het maken en configureren van Java-elementen. U kunt deze kant-en-klare pagina's zo gebruiken.

Java-buildinstellingen configureren

Op JavaCapabilityConfigurationPage kunt u de Java-buildinstellingen (bronmapinstellingen, gekoppelde projecten en gekoppelde/geëxporteerde bibliotheken) configureren.  

Als u een wizard wilt maken voor de configuratie van een project voor uw plugin terwijl het project ook moet worden geconfigureerd met het soort Java en andere Java-projectvoorzieningen, kunt u het beste deze pagina gebruiken (in plaats van een subklasse met NewJavaProjectWizardPage).

Nieuwe Java-elementen maken

Een hiërarchie van wizardpagina's ondersteunt de aanmaak van nieuwe Java-elementen.  

NewElementWizardPage is de abstracte klasse waarin de basisbewerking van de wizard wordt gedefinieerd. De hiërarchie bevat aanvullende abstracte klassen, waarmee u de functionaliteit van de concrete wizards kunt aanpassen.

De concrete aanmaakwizards kunnen direct worden gebruikt en zijn over het algemeen niet bedoeld voor subklassen. 

Wizardpagina voor aanlevering van een klassenpadcontainer

De interface IClasspathContainerPage bevat een structuur voor aanlevering van een wizardpagina waarmee de gebruiker een nieuwe vermelding voor een klassenpadcontainer kan maken of een bestaande vermelding kan bewerken. Als in uw plugin een eigen type klassenpadcontainer is gedefinieerd met het extensiepunt org.eclipse.jdt.core.classpathContainerInitializer van de JDT-kern, wilt u waarschijnlijk een bijbehorende wizardpagina definiëren, waarmee klassenpadcontainers van dit type kunnen worden bewerkt en gemaakt.

De pluginmarkup moet een extensie org.eclipse.jdt.ui.classpathContainerPage verstrekken. In de extensiemarkup verstrekt u de naam van de klasse waarmee IClasspathContainerPage geïmplementeerd. Als u aanvullende informatie wilt opgeven op uw wizardpagina over de context van een klassenpad wanneer wordt geselecteerd, kunt u IClasspathContainerPageExtension implementeren. Als u wilt dat uw configuratiepagina meer dan één item retourneert bij toevoeging, implementeert u IClasspathContainerPageExtension2.

Een wizardpagina aanpassen

U kunt niet alleen profiteren van de vooraf gedefinieerde pagina's, maar u de wizardpagina's ook als subklasse gebruiken om uw eigen invoervelden eraan toe te voegen of het gedrag voor het genereren van code aan te passen. Hiertoe dient u de abstracte klassen in de hiërarchie van NewElementWizardPagete gebruiken om een wizard aan te passen, in plaats van de concrete klassen als subklassen te gebruiken.

Hieronder ziet u een voorbeeld van een wizardpagina voor een nieuw type, die wordt aangepast om JUnit-testcaseklassen te maken. Met deze pagina wordt het veld voor de superklasse geïnitialiseerd met "junit.framework.TestCase", en een selectievakje toegevoegd om mee te bepalen of er methodestubs voor setUp() en tearDown() worden gemaakt.

public class TestCaseWizardPage extends NewTypeWizardPage {
    private Button fCreateStubs;

    public TestCaseWizardPage() {
        super(true, "TestCaseWizardPage");
    }

    /**
     * De wizard die deze wizardpagina beheert, moet deze methode
     * tijdens de initialisatiefase met een bijbehorende selectie.
     */   
    public void init(IStructuredSelection selection) {
        IJavaElement jelem= getInitialJavaElement(selection);
        initContainerPage(jelem);
        initTypePage(jelem);
        doStatusUpdate();
    }

    private void doStatusUpdate() {
        // definitie van de onderdelen waarvoor een status gewenst is
        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);

        // Standaardinvoervelden maken
        createContainerControls(composite, nColumns);
        createPackageControls(composite, nColumns);
        createSeparator(composite, nColumns);
        createTypeNameControls(composite, nColumns);
        createSuperClassControls(composite, nColumns);

        // Selectievakje maken om te besturen of we stubs willen
        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);

        // Veld voor supertype initialiseren en markeren als alleen-lezen
        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 tearDown() {}";
            newType.createMethod(tearDownMathod, null, false, null); 
        }
   }
}