1

次のコード行を介して、クラス B で定義されたビューを表示するクラス A を含むプラグインがあります。

(VideoLogView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("Videolog.VideoLogView");

ビュー (クラス B オブジェクト) の createPartControl() メソッドで行う必要があるのは、クラス A オブジェクトのメソッドにアクセスすることです。

これはどのように行うことができますか?

ありがとう。

4

1 に答える 1

2

「自分の意見に議論を渡すにはどうすればよいか」という古典的な問題に直面しているように見えますか?
このスレッドはそれを最もよく示しています:

私はRCPプロジェクトの開始時に同じ問題に直面していました。ビューモデルとしてのビューに引数を渡す方法がないという事実について、私は奇妙になりました。

なんで?なぜなら(私の強調):

開いた、プラグ可能なプラットフォームを使用しています。あなたは既存の開発に貢献し、他の人はあなたの開発に貢献できるはずです。

したがって、引数をビューに「渡す」ことはありません。これにより、すべてが開かれていないデザインにロックされます。
代わりに、ビューはプラットフォームに管理する情報を決定するように要求します(またはプラットフォームをリッスンします)。
他のビュー(まだ存在していない他のプラグインから)も、同じイベントで同じ情報を管理したい場合があります。

次に行うべきことは、現在の選択をワークベンチに要求することです。ビューはダブルクリックアクションまたは単純な選択で開いているので、ビューで管理するオブジェクトが現在選択されていると思います。
これは、ビューからワークベンチの選択を取得する方法です。

ISelection s = this.getSite().getWorkbenchWindow().getSelectionService().getSelection();

ここで、「this」はViewPartです。

次に、最初のビュー(のような特定のイベントからビューの作成を開始するビューDoubleClick)を選択プロバイダーにする必要があります。JFaceビューアは選択プロバイダーであるため、jfaceを使用している場合はビューアを使用でき、カスタムコントロールを使用している場合はインターフェイスを実装できますISelectionProviderSWT私の場合)。


記事「EclipseWorkbench:Selection Serviceの使用」でも、いくつかの指針が得られます。

代替テキスト

于 2009-06-24T22:12:29.220 に答える