Ohjattujen Java-toimintojen sivut

org.eclipse.jdt.ui.wizards-paketti sisältää ohjattujen toimintojen sivut, joilla voi luoda Java-elementtejä ja määrittää niiden kokoonpanoja.  Käytettävissä on useita valmiita sivuja.

Java-koontiasetusten kokoonpanon määritys

JavaCapabilityConfigurationPage tukee Java-koontiasetusten muokkausta (lähdekansion asetukset, viitatut projektit ja viitatut ja viedyt kirjastot).  

Jos tarvitset ohjattua toimintoa, joka määrittää projektin lisäosalle samalla, kun se määrittää sille Java-luonteen ja muut Java-projektin ominaisuudet, tulee käyttää tätä sivua (ennemmin kuin asettaa NewJavaProjectWizardPage aliluokaksi).

Uusien Java-elementtien luonti

Ohjattujen toimintojen sivujen hierarkia tukee uusien Java-elementtien luontia.  

NewElementWizardPage on abstrakti luokka, joka määrittää ohjatun toiminnon perustoiminnan.  Lisäksi hierarkiassa on muita abstrakteja luokkia, joilla voi mukauttaa konkreettisten ohjattujen toimintojen toimintaa.

Konkreettisia ohjattuja koontitoimintoja voi käyttää suoraan, ja yleensä niille ei tule määrittää aliluokkia. 

Luokkapolkusäilön ohjatun toiminnon sivun lisäys

Rajapinta IClasspathContainerPage määrittää rakenteen sellaisen ohjatun toiminnon sivun lisäystä varten, jonka avulla käyttäjä voi määrittää uuden luokkapolkusäilön merkinnän tai muokata aiemmin luotua merkintää.  Jos lisäosa on määritetty luokkapolkusäilön omassa tyypissä JDT Core -ydinosan org.eclipse.jdt.core.classpathContainerInitializer -laajennuspisteen avulla, luultavasti halutaan määrittää vastaava ohjatun toiminnon sivu tämän tyypin luokkapolkusäilöjen muokkausta ja luontia varten.

Lisäosan merkintöjen tulee toimittaa laajennus org.eclipse.jdt.ui.classpathContainerPageLaajennusmerkinnöissä annetaan sen luokan nimi, joka toteuttaa IClasspathContainerPage-rajapinnan.  Jos haluat ohjatun toiminnon sivun antavan lisätietoja luokkapolun kontekstista, kun se valitaan, voit toteuttaa rajapinnanIClasspathContainerPageExtension. Jos kokoonpanosivu yrittää palauttaa useamman kuin yhden merkinnän, kun se lisätään, toteuta rajapintaIClasspathContainerPageExtension2.

Ohjatun toiminnon sivun mukautus

Valmiiden sivujen käytön lisäksi voit määrittää ohjattujen toimintojen sivuilla aliluokkia ja lisätä näin omia syötekenttiä tai vaikuttaa koodin luontiin.  NewElementWizardPage-hierarkiassa tulee käyttää abstrakteja luokkia ohjatun toiminnon mukautukseen ennemmin kuin määrittää aliluokkia konkreettisille luokille.

Seuraavassa esimerkissä esitetään uuden tyypin ohjatun toiminnon sivu, joka on mukautettu luomaan JUnit-testitapausluokkia. Sivu alustaa super-luokkakentän "junit.framework.TestCase" -luokalla ja lisää valintaruudun, joka ohjaa, luodaanko metodien tukirakenteitasetUp()- ja tearDown()-metodeille.

public class TestCaseWizardPage extends NewTypeWizardPage {
    private Button fCreateStubs;

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

    /**
     * Tätä ohjatun toiminnon sivua ohjaavan ohjatun toiminnon on kutsuttava tämä metodi
     * alustuksen aikana vastaavalla valinnalla.
     */   
    public void init(IStructuredSelection selection) {
        IJavaElement jelem= getInitialJavaElement(selection);
        initContainerPage(jelem);
        initTypePage(jelem);
        doStatusUpdate();
    }

    private void doStatusUpdate() {
        // määritä komponentit, joiden tila halutaan
        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);

        // Luo vakiosyöttökentät
        createContainerControls(composite, nColumns);
        createPackageControls(composite, nColumns);
        createSeparator(composite, nColumns);
        createTypeNameControls(composite, nColumns);
        createSuperClassControls(composite, nColumns);

        // Luo valintaruutu, joka ohjaa, halutaanko tukirakenteita
        fCreateStubs= new Button(composite, SWT.CHECK);
        fCreateStubs.setText("Lisää 'setUp()' ja 'tearDown()' uuteen luokkaan");
        GridData gd= new GridData();
        gd.horizontalSpan= nColumns;
        fCreateStubs.setLayoutData(gd);

        setControl(composite);

        // Alusta super-tyypin kenttä ja merkitse se vain luku -muotoiseksi
        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); 
        }
   }
}