2

Java 用の Eclipse プラグインを作成していますが、次の問題があります。

IEditorPart が与えられた場合、それが Java エディターかどうかを確認する必要があります。

私は(JavaEditorのIEditorインスタンス)を行うことができましたが、JavaEditorはorg.eclipse.jdt.internal.ui.javaeditor.JavaEditorであり、JDTの「内部」クラスに分類されます。

これを行うためのよりスマートで安全な方法はありますか? このための非内部インターフェースがない理由がわかりません。

4

2 に答える 2

4

IEditorPart の ID をテストする必要があります。

private boolean isJavaEditor(IWorkbenchPartReference ref) {
    if (ref == null) {
        return false; }

    String JavaDoc id= ref.getId();
    return JavaUI.ID_CF_EDITOR.equals(id) || JavaUI.ID_CU_EDITOR.equals(id);
}

インスタンスのテストは、eclipse3.1 でのみ必要でした

代替テキスト http://blogs.zdnet.com/images/Burnette_DSCN0599.JPG

JavaUIJava ユーザー インターフェイス コンポーネントへのメイン アクセス ポイントです。Java 要素のエディターをプログラムで開いたり、Java または Java ブラウジング パースペクティブを開いたり、パッケージおよびタイプ プロンプター ダイアログを開いたりすることができます。

JavaUIJava UI プラグイン (id " org.eclipse.jdt.ui")の中央アクセス ポイントです。

isJavaEditor()たとえば で使用されるそのようなユーティリティ関数 (" ") を見ることができますASTProvider

ここでの識別メカニズムは、実際には単純な文字列比較です。

とにかく、内部クラスとのキャスト比較は避けるのが賢明です: これは、プラグイン開発における 10 の一般的なエラーの 1 つとして挙げられています;) .

于 2009-02-21T22:12:05.230 に答える