Utføre kodehjelp på Java-kode

APIet JDT gjør at andre plugin-moduler kan utføre kodehjelp eller kodevalg på noen Java-elementer. Elementer som tillater slik manipulering, bør implementere ICodeAssist.

Det er to typer manipulering:

I Java-modellen er det to elementer som implementerer dette grensesnittet: IClassFile og ICompilationUnit.  Kodefullføring og kodevalg gir resultater bare for en klassefil dersom den har en tilknyttet kilde.

Kodefullføring

Utføre kodefullføring

En metode for å utføre kodefullføring programmatisk er å aktivere ICodeAssist.codeComplete. Du oppgir forskyvningen i kompileringsenheten du ønsker kodefullføring etter.  Du må også sørge for en forekomst av CompletionRequestor for å godta mulige fullføringer.

Metoden i CompletionRequestor.accept godtar alle typer forslag for kodefullføring.  Metodene til CompletionProposal gir informasjon som beskriver det foreslått elementet (dets navn, deklarasjonstype osv.), dets foreslåtte posisjon for innsetting i kompileringsenheten og dets relevans.  

En fullføringsbestiller kan godta mange forskjellige former for fullføringer. Denne formen gis av CompletionProposal.getKind.

Noen av de mulige fullføringstypene er (du finner den fullstendige listen i CompletionProposal):

Fullføringsbestilleren må også kunne godta kompileringsfeil.   

Fullføringsrelevans

Siden det kan være mange forskjellige mulige fullføringer, brukes begrepet relevans til å sammenlikne relevansen til en foreslått fullføring mot andre forslag. Relevans representeres ved et positivt heltall. Verdien har ingen implisitt mening utover å brukes relativt i forhold til verdiene til andre forslag.  Relevansen til en kodefullføringskandidat kan påvirkes av forventet type uttrykk, siden det forholder seg til typene i den omgivende koden, for eksempel variabeltyper, cast-typer, returtyper osv.  Tilstedeværelsen av et forventet prefiks eller suffiks i en fullføring påvirker også relevansen.

Kodefullføringsalternativer

Plugin-modulen JDT-kjerne definerer alternativene som styrer oppførselen til kodefullføringen. Disse alternativene kan endres av andre plugin-moduler.  

Andre alternativer gjør det mulig å spesifisere prefikser og suffikser for foreslåtte fullføringsnavn for felt, statiske felt, lokale variabler og metodeargumenter.  

Du finner flere opplysninger om kodesettalternativer og deres standardverdier i   JDT Core Code Assist Options.

Kodevalg

Utføre kodevalg

Kodevalg brukes til å finne Java-elementet som representeres ved et tekstområde (typisk valgt tekst) i en kompileringsenhet.  For å utføre kodevalg programmatisk må du aktivere ICodeAssist.codeSelect. Du må oppgi startindeksplassering for valget samt lengde.Resultatet er en matrise med Java-elementer.For det meste er det bare ett element i matrisen, men hvis valget er tvetydig, returneres alle mulige elementer.

I eksempelet nedenfor aktiveres kodevalg for en kompileringsenhet.

      // Hent kompileringsenhet
   ICompilationUnit unit = ...;
   
   // Hent forskyvning og lengde
   int offset = ...;
   int length = ...;
   
   // utfør valg
   IJavaElement[] elements = unit.codeSelect(offset, length);
   System.out.println("the selected element is " + element[0].getElementName());

Valg ved markørposisjonen

Når valglengden spesifiseres som 0, vil valget beregnes ved at fullføringssymbolet som omgir den bestemte forskyvningen, finnes.  La oss ta følgende metodeeksempel:

   public void fooMethod(Object) {
   }

Hvis du oppgir en forskyvning etter det første tegnet i fooMethod, og du oppgir en lengde på 0,  blir valget beregnet til å inkludere hele symbolet fooMethod. Hvis du i stedet oppgir lengden 5, anses valget å være ooMet.