Java コードで CodeAssist を実行

JDT API は、他のプラグインが、いくつかの Java エレメントに対して codeassist または codeselect を実行することを可能にします。 この操作を許可するエレメントは ICodeAssist をインプリメントします。 Java モデルには、このインターフェースをインプリメントする 2 つのエレメント、 IClassFile および ICompilationUnit があります。

操作には次の 2 種類があります。

注意: 完了および選択応答は、クラス・ファイルに添付ソースがある場合にのみ、クラス・ファイルの結果として生じます。

コード完了

コード完了の実行

プログラマチックにコード完了を実行するには、 ICodeAssist.codeComplete を使用するのが唯一の方法です。 単位内の完了の位置を指定して、可能な完了を受け入れる ICompletionRequestor のインスタンスを提供します。

各種のプロポーザルが要求発行者のメソッドによって受け入れられます。 これらのメソッドのパラメーターは、現行コンテキスト内のプロポーザルの相関だけでなく、エレメント (名前、パラメーター、宣言型...) とその位置を記述します。

すべての種類の結果を知る必要がないときは、 CompletionRequestorAdapter を使用した簡単な方法でコード完了を実行できます。

   // Get the compilation unit
   ICompilationUnit unit = ...;
   
   // Get the offset
   int offset = ...;
   
   // Create the requestor
   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));
      }
   };
   
   // Compute proposals
   unit.codeComplete(offset, requestor);

コード完了オプション

コード完了のオプションは他のプラグインによって変更できます。 JDT コア・オプションを変更して、完了の動作を変更することが可能です。

オプションには次の 2 つがあります。

JDT コア・オプションを変更する方法については、 JDT コア・オプションとは? を参照してください。

コード選択

コード選択の実行

プログラマチックにコード選択を実行したい場合、使用するメソッドは ICodeAssist.codeSelect です。 このメソッドは、選択の開始位置と長さを認識している必要があります。 結果は、Java エレメントの配列になります。 多くの場合、配列内のエレメントは 1 つのみですが、選択があいまいな場合は、考えられるすべてのエレメントが戻されます。

   // Get the compilation unit
   ICompilationUnit unit = ...;
   
   // Get the offset and length
   int offset = ...;
   int length = ...;
   
   // perform selection
   IJavaElement[] elements = unit.codeSelect(offset, length);
   System.out.println("the selected element is " + element[0].getElementName());

カーソル位置での選択

選択の長さが 0 の場合、完了エンクロージング・トークンを使用して選択が計算されます。

   public void fooMethod(Object) {
   }
オフセットが fooMethod の先頭文字の後にあり、長さが 0 のとき、選択は fooMethod です。 ただし、長さが 5 の場合、選択は ooMet です。

 Copyright IBM Corporation and others 2000, 2002. All Rights Reserved.