2012-02-21 4 views
1

私はEclipseのソースコードエディタ内の選択肢を使って作業しています。私は現在のキャレットの位置に "テキスト"を取得するキーバインディングを定義しました。私はまだされており、外側の種類を解決する方法を見つけ出すことに成功していなかった何IJavaElementIJavaElementを取り囲む

private void processEditorSelection(IEditorPart part, ITextSelection selection) { 
      IEditorInput editorInput = ((IEditorPart) part).getEditorInput(); 
      final ITypeRoot root = (ITypeRoot) JavaUI.getEditorInputJavaElement(editorInput); 
      if (root != null) { 
       int offset = (selection).getOffset(); 
       IJavaElement[] codeSelect = root.codeSelect(offset, 0); 
       if (codeSelect.length > 0) { 
        //codeSelect[0...n] are my resolved elements at the current caret pos. 
     } 

に現在のキャレット位置を解析することができました。例えば:キャレットがSystem.outに上にある場合

public void do() { 
     System.out.println("it"); 
} 

、私はシステムアウトコールのJavaElementを得るが、私は実際に囲む方法に興味があります。 Eclipseに囲みタイプを求める方法を誰かが知っていますか?コンパイルの単位やメソッドと同じように、現在のカレットの位置は?に囲まれていますか?あなたはこのような何かを探している答え

答えて

2

ため

ありがとう:

ITypeRoot root = (ITypeRoot) JavaUI.getEditorInputJavaElement(editorInput); 
IJavaElement elt = root.getElementAt(caretPosition); 

これはIFieldIMethod、またはICompilationUnitとすることができる、囲み要素を見つけます。囲みタイプを取得するには、次のように呼び出します。

IType type = (IType) elt.getAncestor(IJavaElement.TYPE); 

このメソッドは、囲みタイプがない場合はnullを返します。

+0

助けてください! – user867204

関連する問題