Esecuzione di CodeAssist sul codice Java

L'API JDT consente ad altri plug-in l'esecuzione di codeassist o codeselect su alcuni elementi Java. Gli elementi che consentono questa manipolazione implementano ICodeAssist. Nel modello Java sono presenti due elementi che implementano questa interfaccia: IClassFile e ICompilationUnit.

Esistono due tipi di manipolazione:

Nota: il completamento e la risposta della selezione determinano un file di classe solo se è presente un'origine associata.

Completamento di codice

Esecuzione di un completamento di codice

L'unico modo per eseguire il completamento di codice in modo programmatico consiste nell'utilizzare ICodeAssist.codeComplete. Specificare il percorso del completamento nell'unità e fornire un'istanza di ICompletionRequestor per l'accettazione dei possibili completamenti.

Ciascun tipo di proposta viene accettata da un metodo del richiedente. I parametri di tali metodi descrivono l'elemento (nome, parametri, tipo di dichiarazione e così via) e la relativa posizione e la pertinenza della proposta nel contesto corrente.

Quando non si è interessati ai tipi di risultati, un modo semplice di eseguire il completamento del codice consiste nell'utilizzare CompletionRequestorAdapter.

   // Ottenere l'unità di compilazione
   ICompilationUnit unit = ...;
   
   // Ottenere l'offset
   int offset = ...;
   
   // Creare il richiedente
   ICompletionRequestor requestor = new CompletionRequestorAdapter() {
      public void acceptClass(
         char[] packageName,
         char[] className,
         char[] completionName,
         int modifiers,
         int completionStart,
         int completionEnd,
         int relevance) {
         System.out.println("propose a class named " + new String(className));
      }
   };
   
   // Elaborare proposte
   unit.codeComplete(offset, requestor);

Opzioni di completamento codice

Altri plug-in possono modificare le opzioni del completamento del codice. E possibile modificare le opzioni del nucleo di JDT per cambiare il comportamento del completamento.

Sono disponibili due opzioni:

Per informazioni su come modificare le opzioni del nucleo di JDT, vedere: Le opzioni del nucleo di JDT

Selezione di codice

Esecuzione di una selezione di codice

Il metodo da utilizzare per l'esecuzione della selezione di codice in modo programmatico è ICodeAssist.codeSelect. E necessario che tale metodo conosca la posizione iniziale e la lunghezza della selezione. Il risultato è una matrice di elementi Java. Per la maggior parte del tempo, nella matrice è presente un unico elemento ma, se la selezione è ambigua, vengono restituiti tutti gli elementi possibili.

   // Ottenere l'unità di compilazione
   ICompilationUnit unit = ...;
   
   // Ottenere l'offset e la lunghezza
   int offset = ...;
   int length = ...;
   
   // eseguire la selezione
   IJavaElement[] elements = unit.codeSelect(offset, length);
   System.out.println("the selected element is " + element[0].getElementName());

Selezione nella posizione del cursore.

Se la lunghezza della selezione corrisponde a 0, la selezione verrà elaborata con il token di inclusione completo.

   public void fooMethod(Object) {
   }
Quando l'offset si trova dopo il primo carattere di fooMethod e la lunghezza è 0, la selezione sarà fooMethod. Se, invece, la lunghezza è 5, la selezione sarà ooMet.

 Copyright IBM Corporation e altri 2000, 2002. Tutti i diritti riservati.