Sider i Java-guide

Pakken org.eclipse.jdt.ui.wizards indeholder en guide med sider til oprettelse og konfiguration af Java-elementer. Der stilles flere færdige sider til din rådighed.

Konfigurér Java-byggeindstillinger

JavaCapabilityConfigurationPage understøtter redigering af Java-byggeindstillinger (konfiguration af kildefolder, refererede projekter samt refererede og eksporterede biblioteker).  

Hvis du har behov for en guide, der kan konfigurere et projekt til din plugin og samtidigt konfigurerer det med Java-natur og andre Java-projektegenskaber, skal du bruge denne side snarere end at gøre NewJavaProjectWizardPage) til en underklasse.

Opret nye Java-elementer

Oprettelsen af nye Java-elementer understøttes af et hierarki af sider i guiden.  

NewElementWizardPage er den abstact-klasse, der definerer guidens grundlæggende funktion. Der stilles flere abstract-klasser til rådighed i hierarkiet i de konkrete guider, hvor der kan foretages tilpasninger af funktionaliteten.

Guiderne til konkret oprettelse kan bruges direkte og er normalt ikke beregnet til at være underklasser. 

Tilføj en side i guiden til et classpath-opbevaringssted

Grænsefladen IClasspathContainerPage definerer en struktur, der kan bruges til at tilføje en side i guiden, som brugeren kan anvende til at definere et nyt classpath-opbevaringssted eller til at redigere et eksisterende. Hvis din plugin har defineret sin egen type classpath-opbevaringssted ved hjælp af JDT-kerneudvidelsespunktet org.eclipse.jdt.core.classpathContainerInitializer, er det sandsynligvis en god idé at definere en tilsvarende side i guiden til redigering og oprettelse af classpath-opbevaringssteder af denne type.

Pluginkoden skal indeholde filtypen org.eclipse.jdt.ui.classpathContainerPageI koden til filtypen angiver du navnet på den klasse, der implementerer IClasspathContainerPage. Hvis du har brug for flere oplysninger på guidesiden om classpath-konteksten, når den vælges, kan du implementere IClasspathContainerPageExtension for at initialisere en given tilstand, som afhænger af de indgange, der er valgt i den aktuelle classpath. Implementér IClasspathContainerPageExtension2, hvis konfigurationssiden skal returnere mere end én indgang, når den tilføjes.

Tilpas en side i guiden

Ud over at bruge færdige sider kan du oprette underklasser til guidesiderne for at tilføje dine egne inputfelter eller for at påvirke genereringen af kode. Når du vil tilpasse en guide, skal du bruge de abstrakte klasser i hierarkiet NewElementWizardPage i stedet for at oprette underklasser for de konkrete klasser.

Nedenfor vises et eksempel på en ny type guideside, som er tilpasset til at kune oprette JUnit-testcaseklasser. Siden initialiserer superklassefeltet med "junit.framework.TestCase" og tilføjer et afkrydsningsfelt, som styrer, om der skal oprettes metodestubbe til metoderne setUp() og tearDown().

public class TestCaseWizardPage extends NewTypeWizardPage {
    private Button fCreateStubs;

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

    /**
     * Den guide, der administrerer guidesiden, skal kalde denne metode
     * under initialiseringen med et tilsvarende valg.
     */   
    public void init(IStructuredSelection selection) {
        IJavaElement jelem= getInitialJavaElement(selection);
        initContainerPage(jelem);
        initTypePage(jelem);
        doStatusUpdate();
    }

    private void doStatusUpdate() {
        // Definér de komponenter, der ønskes en status for
        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);

        // Opret standardinputfelter
        createContainerControls(composite, nColumns);
        createPackageControls(composite, nColumns);
        createSeparator(composite, nColumns);
        createTypeNameControls(composite, nColumns);
        createSuperClassControls(composite, nColumns);

        // Opret det afkrydsningsfelt, der styrer, om der ønskes stubbe
        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);

        // Initialisér supertypefeltet, og markér det som skrivebeskyttet
        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); 
        }
   }
}