A API do JDT permite que outros plug-ins efetuem assistência ao código ou seleção de código em alguns elementos Java. Os elementos que permitem esta manipulação devem implementar ICodeAssist.
Há dois tipos de manipulação:
No modelo Java há dois elementos que implementam esta interface: IClassFile e ICompilationUnit. A conclusão e a seleção de código só fornecem resultados para um arquivo de classe se ele tiver a origem conectada.
Uma maneira de desempenhar programaticamente a conclusão de código é chamar ICodeAssist.codeComplete. Você especifica o deslocamento na unidade de compilação de acordo com a qual a conclusão de código é desejada. Você também deve fornecer uma instância de CompletionRequestor para aceitar as conclusões possíveis.
O método em CompletionRequestor.accept aceita todos os tipos de sugestões para conclusão de código. Os métodos de CompletionProposal fornecem informações que descrevem o elemento sugerido (seu nome, tipo de declaração, etc.), sua posição sugerida para inserção na unidade de compilação e sua importância.
Um solicitante da conclusão pode aceitar vários tipos diferentes de conclusões. Esse tipo é concedido por CompletionProposal.getKind.
Alguns dos tipos possíveis de conclusão são (a lista completa de tipos possíveis de conclusão pode ser vista em CompletionProposal):
O solicitante da conclusão também deverá estar apto a aceitar erros de compilação.
Como pode haver várias conclusões possíveis diferentes, o conceito de importância é utilizado para comparar a importância de uma conclusão sugerida a outras propostas. A importância é representada por um inteiro positivo. O valor não tem significado implícito exceto para ser utilizado comparativamente ao valor de outras propostas. A importância de um candidato à conclusão de código pode ser afetada pelo tipo esperado da expressão, a medida que se relaciona aos tipos no código vizinho, tais como tipos de variável, tipos de cast, tipos de retorno, etc. A presença de um prefixo ou sufixo esperado em uma conclusão também afeta sua importância.
O plug-in Núcleo do JDT define opções que controlam o comportamento da conclusão de código. Estas opções podem ser alteradas por outros plug-ins.
Opções adicionais permitem especificar prefixos e sufixos para os nomes de conclusão propostos de campos, campos estáticos, variáveis locais e argumentos de métodos.
Consulte Opções de Assistência ao Código do Núcleo do JDT para obter informações adicionais sobre as opções de assistência ao código e seus padrões.
A seleção de código é utilizada para localizar o elemento Java representado por uma faixa de texto (geralmente, o texto selecionado) em uma unidade de compilação. Para efetuar a seleção de código, através de programação,é preciso chamar ICodeAssist.codeSelect. Você deve fornecer a localização inicial do índice da seleção e seu comprimento.O resultado é uma matriz de elementos Java. Na maior parte do tempo, há apenas um elemento na matriz, mas, se a seleção for ambígua, todos os elementos possíveis serão retornados.
No exemplo a seguir, a seleção de
código é chamada para uma unidade de compilação.
// Obter a unidade de compilação
ICompilationUnit unit = ...;
// Obter o deslocamento e o comprimento
int offset = ...;
int length = ...;
// executar seleção
IJavaElement[] elements = unit.codeSelect(offset, length);
System.out.println("o elemento selecionado é " + element[0].getElementName());
Quando o comprimento da seleção é especificado como 0, uma seleção será computada através da localização do token completo que envolve o deslocamento especificado. Considere o seguinte exemplo de método:
public void fooMethod(Object) {
}