I JDT API kan andre plugins udføre Kodeassistance eller kodemarkering i visse Java-elementer. Elementer, der gør en sådan manipulation mulig, skal implementere ICodeAssist.
Der er to slags manipulation:
I Java-modellen er der to elementer, der implementerer denne grænseflade: IClassFile og ICompilationUnit. Kodeafslutning og kodemarkering svarer kun på resultater for en klassefil, hvis den har en tilknyttet kilde.
En af måder, som kodeafslutning kan udføres programmatisk, er ved at aktivere ICodeAssist.codeComplete. Du angiver forskydningen i kompileringsenheden, hvorefter kodeafslutningen ønskes. Du skal også levere en forekomst af CompletionRequestor for at acceptere de mulige afslutninger.
Metoden i CompletionRequestor.accept accepterer alle typer forslag til kodeafslutning. Metoderne for CompletionProposal giver oplysninger, som beskriver det foreslåede element (dets navn, erklæringstype osv.), elementets foreslåede placering til indsættelse i kompileringsenheden, og dets relevans.
En afslutningsanmoder kan acceptere mange forskellige typer afslutninger. Typen angives vha. CompletionProposal.getKind.
Nogle af de mulige afslutningstyper er (der findes en fuldstændig liste med afslutningstyper i CompletionProposal):
Afslutningsanmoderen skal også være i stand til at acceptere kompileringsfejl.
Fordi der kan være mange forskellige afslutninger, bruges begrebet relevans til at sammenligne relevansen af en foreslået afslutning med andre forslag. Relevans repræsenteres af et positivt heltal. Værdien har ikke nogen anden implicit betydning, end at den bruges i forhold til værdien for andre forslag. Relevansen af en kodeafslutningskandidat kan påvirkes af den forventede type udtryk, fordi den relaterer til typerne i den omkringstående kode, f.eks. variabeltyper, konverteringstyper, returtyper osv. Hvis der i en afslutning er et forventet præfiks eller suffiks, påvirker det også afslutningens relevans.
JDT-kerneplugin definerer de indstillinger, som styrer kodeafslutningens funktionsmåde. Tilpasningen kan ændres af andre plugins.
Der er flere indstillinger, som bl.a. sætter dig i stand til at angive præfikser og suffikser for de foreslåede afslutningsnavne på felter, statiske felter, lokale variabler og metodeargumenter.
Se Tilpasning af JDT-kernekodeassistance for at få flere oplysninger om valgmuligherne til Kodeassistance og deres standardværdier.
Kodemarkering bruges til at finde det Java-element, der repræsenteres af et tekstområde (ofte den fremhævede tekst) i en kompileringsenhed. Hvis du programmatisk vil udføre kodemarkering, skal du aktivere ICodeAssist.codeSelect. Du skal angive det kodemarkeringens startindeksplacering og længde. Resultatet er et array af Java-elementer. Oftest er der kun ét element, men hvis det markerede er uklart, returneres alle de mulige elementer.
I nedenstående eksempel aktiveres
kodemarkeringen for en kompileringsenhed.
// Hent kompileringsenhed
ICompilationUnit unit = ...;
// Hent forskydning og længde
int offset = ...;
int length = ...;
// udfør markering
IJavaElement[] elements = unit.codeSelect(offset, length);
System.out.println("the selected element is " + element[0].getElementName());
Når det markeredes længde er angivet som 0, bliver en markering beregnet ved at søge efter den fuldstændige token, som omslutter den angivne forskydning. Overvej følgende metodeeksempel:
public void fooMethod(Object) {
}