Executando CodeAssist no Código Java

A API do JDT permite que outros plug-ins executem codeassist ou codeselect em alguns elementos Java. Os elementos que permitem esta manipulação implementam ICodeAssist. No gabarito Java há dois elementos que implementam esta interface: IClassFile e ICompilationUnit.

Há dois tipos de manipulação:

Nota: a conclusão e a seleção fornecerão resultados para um arquivo de classe apenas se ele tiver a origem conectada.

Conclusão de Código

Executando uma Conclusão de Código

A única maneira de executar conclusão de código através de programação é utilizar ICodeAssist.codeComplete. Você especifica a localização da conclusão na unidade e fornece uma instância de ICompletionRequestor para aceitar as conclusões possíveis.

Cada tipo de proposta é aceita por um método do solicitante. Os parâmetros desses métodos descrevem o elemento (nome, parâmetros, tipo de declaração, ...) e sua posição, assim como a importância da proposta no contexto atual.

Quando não estiver interessado em todos os tipos de resultados, uma maneira simples de executar a conclusão de código é utilizar CompletionRequestorAdapter.

   // Obter a unidade de compilação
   ICompilationUnit unit = ...;
   
   // Obter o deslocamento
   int offset = ...;
   
   // Criar o solicitante
   ICompletionRequestor requestor = new CompletionRequestorAdapter() {
      public void acceptClass(
         char[] packageName,
         char[] className,
         char[] completionName,
         int modifiers,
         int completionStart,
         int completionEnd,
         int relevance) {
         System.out.println("propor uma classe chamada " + new String(className));
      }
   };
   
   // Calcular propostas
   unit.codeComplete(offset, requestor);

Opções da Conclusão de Código

As opções da conclusão de código podem ser alteradas por outros plug-ins. É possível modificar as opções do Núcleo do JDT para alterar o comportamento da conclusão.

Há duas opções:

Para saber como modificar as opções do Núcleo do JDT, consulte: O que são opções do Núcleo do JDT?

Seleção de Código

Executando uma Seleção de Código

Para executar seleção de código através de programação, o método a ser utilizado é ICodeAssist.codeSelect. Este método precisa conhecer a localização inicial da seleção e o 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.

   // 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());

Seleção na Localização do Cursor.

Se o comprimento da seleção for igual a 0, a seleção será calculada com o token de inclusão da conclusão.

   public void fooMethod(Object) {
   }
Quando o deslocamento estiver depois do primeiro caractere de fooMethod e o comprimento for 0, a seleção será fooMethod. Porém, se o comprimento for 5, a seleção será ooMet.

 Copyright IBM Corporation e outros 2000, 2002. Todos os Direitos Reservados.