Interfejs API JDT umożliwia innym wtyczkom wykonywanie operacji asystenta kodu lub operacji wyboru kodu dla niektórych elementów Java. Elementy pozwalające na takie manipulacje powinny implementować interfejs ICodeAssist.
Istnieją dwa rodzaje manipulacji:
W modelu Java istnieją dwa elementy implementujące ten interfejs: IClassFile i ICompilationUnit. Funkcje uzupełniania kodu i wyboru kodu zwracają wyniki dla pliku CLASS tylko wtedy, gdy zostało do niego przyłączone źródło.
Jednym ze sposobów programowego wykonywania uzupełnienia kodu jest wywołanie metody ICodeAssist.codeComplete. Należy określić przesunięcie w jednostce kompilacji wskazujące miejsce, w którym ma być wstawione uzupełnienie kodu. Należy także udostępnić instancję klasy implementującej CompletionRequestor, aby akceptować możliwe uzupełnienia.
Metoda w klasie CompletionRequestor.accept akceptuje wszystkie rodzaje propozycji uzupełnienia kodu. Metody klasy CompletionProposal oferują informacje opisujące proponowany element (jego nazwę, typ deklarujący itp.), proponowaną pozycję wstawienia go w jednostce kompilacji oraz jego istotność.
Requester uzupełnień może akceptować różne rodzaje uzupełniania. Ten rodzaj jest określany przez klasę CompletionProposal.getKind.
Inne możliwe rodzaje uzupełniania są następujące (pełna lista możliwych rodzajów uzupełnienia znajduje się w temacie CompletionProposal):
Requester uzupełnień musi również być w stanie akceptować błędy kompilacji.
Jeśli istnieje wiele możliwych uzupełnień, informacja o istotności jest używana w celu oceny użyteczności proponowanego uzupełnienia w porównaniu z innymi propozycjami. Istotność jest reprezentowana przez dodatnią liczbę całkowitą. Wartość ta nie ma żadnego dodatkowego znaczenia - jest ona po prostu porównywana z wartościami innych propozycji. Na istotność proponowanego uzupełnienia kodu może mieć wpływ oczekiwany typ wyrażenia, ponieważ jest on powiązany z typami w otaczającym kodzie, takimi jak typy zmiennych, typy rzutowania, typy zwracanych wartości itd. Obecność oczekiwanego przedrostka lub przyrostka w uzupełnieniu również wpływa na jego istotność.
Wtyczka podstawowa JDT definiuje opcje sterujące zachowaniem funkcji uzupełniania kodu. Te opcje mogą być zmieniane przez inne wtyczki.
Dodatkowe opcje umożliwiają określenie przedrostków i przyrostków nazw proponowanych uzupełnień dla pól, pól static, zmiennych lokalnych i argumentów metod.
Więcej informacji na temat opcji asystenta kodu i ich wartości domyślnych można znaleźć w sekcji Opcje asystenta kodu podstawowej wtyczki JDT.
Funkcja wyboru kodu jest używana do wyszukiwania elementu Java reprezentowanego przez dany zakres tekstu (zwykle zaznaczony tekst) w jednostce kompilacji. Do programowego przeprowadzania wyboru kodu służy metoda ICodeAssist.codeSelect. Konieczne jest podanie początkowego położenia indeksu zaznaczenia oraz jego długości. Wynikiem jest tablica elementów Java. W większości przypadków tablica ta zawiera tylko jeden element, ale jeśli wybór jest niejednoznaczny, zwracane są wszystkie możliwe elementy.
W poniższym przykładzie wybór kodu jest wywoływany dla jednostki kompilacji.
// Pobieranie jednostki kompilacji
ICompilationUnit unit = ...;
// Pobieranie przesunięcia i długości
int offset = ...;
int length = ...;
// dokonywanie wyboru
IJavaElement[] elements = unit.codeSelect(offset, length);
System.out.println("the selected element is " + element[0].getElementName());
Jeśli długość zaznaczenia jest określona jako 0, wybór zostanie ustalony przez wyszukanie pełnego elementu, który obejmuje określone przesunięcie. Można rozważyć następującą przykładową metodę:
public void fooMethod(Object) {
}