Koodinhallinnan aputoiminnon käyttö Java-koodissa

JDT-sovellusohjelmaliittymä antaa muiden lisäosien tehdä koodinhallintaa tai -valintaa joissakin Java-elementeissä. Tämän käsittelyn sallivien elementtien tulisi toteuttaa ICodeAssist.

Käsittelyjä on kahdenlaisia:

Java-mallissa on kaksi tämän rajapinnan toteuttavaa elementtiä: IClassFile ja ICompilationUnit.  Koodin täydennys ja valinta vastaavat luokkatiedoston tuloksille vain, jos sillä on lähdeliitos.

Koodin täydennys

Koodin täydennyksen tekeminen

Koodin täydennyksen voi tehdä ohjelmallisesti kutsumalla metodinICodeAssist.codeComplete. Määritä käännösyksikön siirtymä, jonka jälkeen haluat koodin täydennyksen.  Lisäksi on määritettäväCompletionRequestor-ilmentymä mahdollisten täydennysten hyväksyntää varten.

Metodi kohteessa CompletionRequestor.accept hyväksyy kaikenlaisia koodin täydennysehdotuksia.  Luokan CompletionProposal metodit antavat tietoja, jotka kuvaavat ehdotetun elementin (sen nimen, esittelevän tyypin jne.), sen ehdotetun lisäyskohdan käännösyksikössä ja sen relevanssin.  

Täydennyksen pyytäjä voi hyväksyä monia erilaisia täydennyksiä. Täydennyksen laadun toimittaa metodi CompletionProposal.getKind.

Seuraavassa on lueteltu joitakin mahdollisia täydennyslaatuja (kattava luettelo mahdollisista täydennyslaaduista on ohjeaiheessa CompletionProposal):

Täydennyksen pyytäjän on voitava myös hyväksyä käännösvirheitä.  

Täydennyksen relevanssi

Koska mahdollisia täydennyksiä voi olla useita, relevanssia käytetään ehdotetun täydennyksen vertaamiseen muihin ehdotuksiin.  Relevanssia edustaa positiivinen kokonaisluku.  Arvolla ei ole muuta implisiittistä tarkoitusta kuin se, että sitä käytetään suhteessa muiden ehdotusten arvoihin.  Ehdolla olevan koodin täydennyksen relevanssiin voi vaikuttaa lausekkeen odotettu tyyppi, sillä se on suhteessa ympäröivän koodin tyyppeihin, kuten muuttujatyyppeihin, lajinvaihtotyyppeihin, palautustyyppeihin jne.  Odotetun etu- tai loppuliitteen olemassaolo täydennyksessä vaikuttaa myös sen relevanssiin.

Koodin täydennyksen asetukset

JDT-ydinlisäosa määrittää vaihtoehdot, jotka ohjaavat koodin täydennyksen toimintaa.  Muut lisäosat voivat muuttaa näitä asetuksia.  

Lisävalinnoista voi määrittää etu- ja loppuliitteitä kenttien, staattisten kenttien, paikallismuuttujien ja metodiargumenttien ehdotetuille täydennysnimille.  

Lisätietoja koodinhallinnan asetuksista ja niiden oletusasetuksista on ohjeaiheessa  JDT-ydinosan koodinhallinnan aputoiminnon asetukset.

Koodin valinta

Koodin valinnan tekeminen

Koodin valinnan avulla voi hakea Java-elementin, jota esittää tekstialue (tavallisesti valittu teksti) käännösyksikössä.  Jos koodin valinta halutaan tehdä ohjelmallisesti, on kutsuttava ICodeAssist.codeSelect. Valinnan ensimmäinen indeksisijainti ja sen pituus on annettava. Tulos on Java-elementtien taulukko. Useimmiten taulukossa on vain yksi elementti, mutta jos valinta on epäselvä, kaikki mahdolliset elementit palautuvat.

Seuraavassa esimerkissä koodin valinta toteutetaan käännösyksikössä.

   // Hae käännösyksikkö
   ICompilationUnit unit = ...;
   
   // Hae siirtymä ja pituus
   int offset = ...;
   int length = ...;
   
   // Tee valinta
   IJavaElement[] elements = unit.codeSelect(offset, length);
   System.out.println("the selected element is " + element[0].getElementName());

Valinta kohdistimen paikassa

Kun valinnan pituudeksi on määritetty 0, valinta lasketaan hakemalla loppusanake, joka sisällyttää määritetyn siirtymän.  Katso seuraavaa esimerkkimetodia:

   public void fooMethod(Object) {
   }

Jos määrität siirtymän kohdan fooMethod ensimmäisen merkin jälkeen ja määrität pituudeksi 0,  valinta lasketaan niin, että se sisältää koko sanakkeen fooMethod. Jos sen sijaan määrität pituudeksi 5, valinnaksi katsotaan ooMet.