Ejecutar CodeAssist en el código Java

La API de JDT permite a otros conectores ejecutar codeassist o codeselect en algunos elementos Java. Los elementos que permiten esta manipulación implementan la interfaz ICodeAssist. En el modelo Java existen dos elementos que implementan esta interfaz: IClassFile y ICompilationUnit.

Existen dos tipos de manipulación:

Nota: la respuesta de conclusión y selección sólo dan como resultado un archivo de clase si tienen fuente conectado.

Conclusión de código

Realizar una conclusión de código

La única forma de realizar programáticamente la conclusión de código es utilizar ICodeAssist.codeComplete. Se especifica la ubicación de la conclusión en la unidad y se suministra una instancia de ICompletionRequestor para aceptar las finalizaciones posibles.

Un método del solicitante acepta cada uno de los tipos de propuesta . Los parámetros de estos métodos describen el elemento (nombre, parámetros, tipo declarante...) y su posición, así como la relevancia de la propuesta en el contexto actual.

Si no está interesado en todos los tipos de resultados, una forma sencilla de realizar la conclusión de código es utilizar CompletionRequestorAdapter.

   // Obtener la unidad de compilación
   ICompilationUnit unit = ...;
   
   // Obtener el desplazamiento
   int offset = ...;
   
   // Crear el 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("proponer una clase denominada " + new String(className));
      }
   };
   
   // Calcular propuestas
   unit.codeComplete(offset, requestor);

Opciones de conclusión de código

Otros conectores pueden cambiar las opciones de conclusión de código. Puede modificar las opciones del Núcleo de JDT para cambiar el comportamiento de conclusión.

Existen dos opciones:

Para saber cómo modificar las opciones del Núcleo de JDT, consulte el apartado: Qué son las opciones del Núcleo de JDT

Selección de código

Realizar una selección de código

Si desea realizar programáticamente la selección de código, el método que debe utilizar es ICodeAssist.codeSelect. Este método necesita saber la ubicación inicial de la selección y la longitud. El resultado es una matriz de elementos Java. La mayor parte del tiempo, sólo existe un elemento en la matriz, pero si la selección es ambigua, se devuelven todos los elementos posibles.

   // Obtener la unidad de compilación
   ICompilationUnit unit = ...;
   
   // Obtener el desplazamiento y la longitud
   int offset = ...;
   int length = ...;
   
   // realizar selección
   IJavaElement[] elements = unit.codeSelect(offset, length);
   System.out.println("el elemento seleccionado es " + element[0].getElementName());

Selección en la ubicación del cursor.

Si la longitud de la selección es igual a 0, ésta se calcula con el elemento completo.

   public void fooMethod(Object) {
   }
Si el desplazamiento es posterior al primer carácter de fooMethod y la longitud es 0, la selección es fooMethod. Pero si la longitud es 5, la selección es ooMet.

 Copyright IBM Corporation y otros 2000, 2002. Reservados todos los derechos.