2009-08-02 15 views
2

Eclipseプラグインでプログラムで「Ctrl-Shift-T」ダイアログ(タイプを見つける)を開きたいとします。 FilteredItemsSelectionDialogとResourceListSelectionDialogを試しましたが、ワークスペース内のすべてのタイプを取得するにはどうすればよいですか?eclipseでプログラマチックにタイプの検索ダイアログを開く方法

ありがとう、 Ido。

+0

実際にダイアログを開くか、すべての結果を直接取得したいですか? –

+0

私はダイアログを開いて、ユーザーが望むタイプを選択させ、選択した後、結果を完全修飾名の文字列として取得したいとします。 OpenTypeSelectionDialogがその仕事をしているようですが、お勧めしません。 – Ido

答えて

3

org.eclipse.jdt.internal.ui.actions.OpenTypeActionをEclipseでどのように処理するかをご覧ください。重要な部分は次のとおりです。

SelectionDialog dialog= new OpenTypeSelectionDialog(parent, true, 
    PlatformUI.getWorkbench().getProgressService(), null, 
    IJavaSearchConstants.TYPE); 
dialog.setTitle(JavaUIMessages.OpenTypeAction_dialogTitle); 
dialog.setMessage(JavaUIMessages.OpenTypeAction_dialogMessage); 

int result= dialog.open(); 

ここで、parentはダイアログを開くコンポジットです。一般的にして得られたアクティブワークベンチシェル、:

Shell parent= JavaPlugin.getActiveWorkbenchShell(); 

あなたは「落胆アクセス」警告が表示されますのでOpenTypeSelectionDialogは、内部のパッケージです。あなたがリスクを認識している限り、私はこのタイプを使用することをお勧めします。 "Discouraged"はエラーではなく警告です。実際には、Eclipseは現在の署名を変更するのではなくOpenTypeSelectionDialog を導入します。 Eclipseプラットフォームと主要製品は、イノベーションを促進するために可能な限り互換性を維持しようとしています(wikiのpolicyを参照)。 一般に、落胆したアクセスでは、ヘルパーを使用してコードの残りの部分をAPIの変更から保護することが理にかなっています。これは、参照される型が変更された場合に変更する必要がある単一の点があることを意味します。

代わりにダイアログとその親を実装することができますが、親FilteredTypesSelectionDialogには20を超える内部参照があるため、問題が悪化します。

+0

OpenTypeSelectionDialogが「落胆したアクセス」であるようです。 これはどういう意味ですか? – Ido

+2

APIの一部ではないパッケージ内の型を参照するたびに、アクセス違反警告が表示されます。通常は* .internalパッケージです。可能であれば、APIの代替案を探す必要があることを示す指標は、「落胆したアクセス」です。それ以降のバージョンのEclipseで変更する可能性があることに注意してください。詳細については、http://help.eclipse.org/galileo/index.jspを参照してください。 –

+0

こんにちは、 私はこれを使用して、jdtプラグインに依存関係を追加しました。私は開発のためにガリレオを使用しています。 Ganymedeを使用しているクライアントにインストールしたときに動作しませんでした。 サポートするにはどのように設定する必要がありますか? – Ido

関連する問題