Använda kodhjälp för Java-kod

JDT-APIt gör det möjligt för andra insticksprogram att använda kodhjälp eller kodurval på vissa Java-element. Element som tillåter denna manipulation ska implementera ICodeAssist.

Det finns två typer av manipulation:

I Java-modellen finns två element som implementerar detta gränssnitt: IClassFile och ICompilationUnit.  Kodkomplettering och kodurval svarar bara med resultat för en klassfil om det finns en ansluten källa.

Kodkomplettering

Utföra en kodkomplettering

Ett sätt att i programkod utföra kodkomplettering är att anropa ICodeAssist.codeComplete. Du anger förskjutningen i kompileringsenheten efter önskad kodkomplettering. Du måste också tillhandahålla en förekomst av CompletionRequestor för att acceptera de möjliga kompletteringarna.

Metoden CompletionRequestor.accept accepterar alla slags förslag för komplettering av kod.  Metoderna CompletionProposal ger information som beskriver de föreslagna elementet (dess namn, deklarerad typ osv.), dess föreslagna position för insättning i kompileringsenheten och dess relevans.  

En kompletteringsbegäran kan acceptera många olika typer av kompletteringar. Den här typen anges av CompletionProposal.getKind.

En del av de möjliga kompletteringstyperna är: (Den fullständiga listan med möjliga kompletteringstyper finns i CompletionProposal):

Kompletteringsbegäraren måste även kunna acceptera kompileringsfel.  

Kompletteringens relevans

Eftersom det kan finnas många olika möjliga kompletteringar används begreppet relevans för att jämföra relevansen för en föreslagen komplettering med andra förslag.  Relevans betecknas med ett positivt heltal.  Värdet har ingen implicit mening förutom att användas i förhållande till värdet för andra förslag.  Relevansen för en kodkompletteringskandidat kan påverkas av den förväntade typen av uttrycket, eftersom den relaterar till typerna i den omgivande koden, t.ex.variabeltyper, omvandlingstyper, returtyper, etc.  Närvaron av ett förväntat prefix eller suffix i en komplettering påverkar även dess relevans.

Alternativ för kodkomplettering

JDT Core-insticksprogrammet definierar alternativ som styr kodkompletteringens beteende.  Dessa alternativ kan ändras av andra insticksprogram.  

Det finns fler alternativ som du kan använda till att ange prefix och suffix för den föreslagna kompletteringen av namn för fält, statiska fält, lokala variabler och metodargument.  

Mer information om alternativen för kodhjälp och deras standardvärden finns i  JDT Core-alternativ för kodhjälp.

Kodurval

Utföra ett kodurval

Med kodurval kan du hitta det Java-element som betecknas av ett textintervall (vanligen den markerade texten) i en kompileringsenhet.  Om du vill utföra kodurval från programkod måste du anropa ICodeAssist.codeSelect. Du måste tillhandahålla startindexplatsen i urvalet och dess längd. Resultatet blir en matris med Java-element. Oftast finns det bara ett element i matrisen men om urvalet är flertydigt, returneras alla möjliga element.

I följande exempel anropas kodurval för en kompileringsenhet.

      // Get the compilation unit
   ICompilationUnit unit = ...;
   
   // Get the offset and length
   int offset = ...;
   int length = ...;
   
   // perform selection
   IJavaElement[] elements = unit.codeSelect(offset, length);
   System.out.println("the selected element is " + element[0].getElementName());

Urval vid markörens plats

När urvalslängden anges som 0, beräknas ett urval genom att det kompletta tokenelementet letas upp som omger den angivna förskjutningen.  Se följande exempelmetod:

   public void fooMethod(Object) {
   }

Om du anger en förskjutning efter det första tecknet i fooMethod och sedan anger längden 0,  beräknas urvalet till att innefatta hela tokenelementet fooMethod. Om du istället anger längden 5, betraktas urvalet som ooMet.