2011-07-02 4 views
1

2つのEclipseプラグイン(カスタムテキストエディタプラグインと2つの異なるプロジェクトとしてのビュープラグイン)があります。テキストエディタには、すべての依存するソースファイルの「関数」のインデックスを作成するアクションがあります。このアクションの最後に、ビュープラグインのテーブルビューアにインデックス(「関数」のリスト)を表示したいと思います。これを達成するための最良の方法は何と言いますか?ビューはエディタを聴く必要はありません。エディタプラグインのアクションが起動したときにのみ更新されます。テキストエディタプラグインのアクションからビュープラグインを更新

エディタプラグインからパッケージをエクスポートし、ビュープラグインから別のパッケージをエクスポートしました。これは、テキストエディタプラグインがビュープラグインでtableViewerを読み込む必要があり、ビュープラグインがtableviewerのcontentProviderでエディタタイプを参照する必要があるためです。しかし、私は、ビルド・パス・エラーを取得しています:

サイクルはどのように私はこの問題を解決することができますプロジェクト

のビルド・パスで検出されたのですか?またはこれが悪いアプローチである場合、私はよりよい方法を持っていますか?

ありがとうございました。

tk。

答えて

1

まず、プラグイン間の循環参照は許可されません。したがって、プラグイン間で双方向の情報を共有する必要がある場合は、問題の1つをリスナー・パターンにする必要があります。

この場合、既存のアウトラインビューに使用されているビューと同じ構造を使用します。だからあなたのビューはサブクラスであるPageBookViewに参加するエディタがどのようにビューにデータを提供するかについてのかなり単純なプロトコルを持っているべきです。

基本的には、アウトラインビューで行ったのと同じことを行い、エディタ自体がビューを介してビューのコンテンツを提供できるようにします。アウトラインビューは現在のエディタを追跡することでこれを行い、新しいエディタが表示されるたびにアウトラインビューはIEditorPartIContentOutlinePageに修正しようとします。この特定のエディタのビューページで必要となるSWTウィジェットやリスナーなどは、エディタが担当します。ContentOutlineのJavaDocを詳しく見てください。これは関連するプロトコルの説明です。

複数の「開いた」エディタを使用している場合、新しいビューにはアクティブなエディタに関する関連情報が表示され、前回のアクションを実行したときにアクティブだったエディタだけではありません。

この方式では、あなたの行動は、単にます

  • ショー(およびアクティブ)新しいビュー。これはIWorkbenchPage.showView(...)で行うことができます。
  • 提供ページでそのビューを更新するようにリクエストしてください。
+0

素晴らしいです。ありがとうございました。 – timk

関連する問題