1

ビュー (org.eclipse.ui.views) に prefuse が統合されプラグインを作成しました。2 番目のステップとして、パッケージ エクスプローラーのコンテキスト メニューにコマンド メニューを作成して追加しました。Explorer Package View で任意のパッケージを右クリックすると、メニューが表示されます。それをクリックすると、コマンドの Handler クラスが、パッケージからのすべての Java クラス パスをリストに保存します。私の問題は、更新されたリストを、prefuse クラスが初期化されているビューに渡すにはどうすればよいかということです。Eclipse プラグインを作成するのはこれが初めてであることを忘れていました。それを行うためのより良い方法があるかもしれません。

ありがとう

4

2 に答える 2

2

プラグインのplugin.xmlは、おそらく2つのことを定義しています。

  1. パッケージエクスプローラーのコンテキストメニューの貢献
  2. リストを受け取る必要があるビュー

メニューコントリビューションがパッケージエクスプローラーから呼び出された場合、ビューはすでに開いている場合と開いていない場合があります。すでに開いている場合は、メニューコマンドからビューにデータを送信する必要があるため、ビューへの参照を取得する必要があります。ビューがまだ開いていない場合、コマンドはビューを開いてから、データをビューに送信する必要があります。

どちらの場合も同じ方法で解決できます。

たとえば、 Eclipseプラグインからのビューをプログラムで表示することからの情報に従って、ビュー がすでに表示されているかどうかに関係なく、ビューをアクティブ化できます。メソッドIWorkbenchPage#showView(id-of-your-view)はビューへの参照を返すので、それをビューのタイプにキャストして、そのメソッドを呼び出すことができます。たとえば、ビューに表示するリストを受け取るメソッドを含めることができます。

于 2012-07-15T04:45:10.887 に答える
1

プラグインで Activator クラスを使用します。ある時点で、Eclipse はプラグインで Activator クラスのインスタンスを構築することによってプラグインを開始します。そのインスタンスは、Activator で getDefault() クラス メソッドを使用していつでも参照できます。

ビューが初期化されると、それ自体を Activator インスタンスに登録できます (ビュー オブジェクトへの参照を保持するインスタンス変数を持ちます)。ビューに与えるリストがハンドラーにある場合、ハンドラーはビュー オブジェクトのアクティベーターの既定のインスタンスを要求し、リストを直接送信できます。

ハンドラーをビューとは異なるプラグインに配置した場合、1 つのプラグインを他のプラグインの依存関係にすることができます。2 番目のプラグインは、最初のプラグインの Activator クラスを含む最初のクラスにアクセスできます。

于 2012-07-14T23:14:58.263 に答える