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.
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.
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.
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.
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());
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) {
}