0

ビューパーツがあり、createPartControl関数には次のものがあります。

viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);

getSite().setSelectionProvider(viewer);
getSite().getWorkbenchWindow().getSelectionService()
            .addSelectionListener(this);

ビューパーツを選択リスナーとして登録していますが、本当にこのビューパーツでツリービューアーによって提供される選択を聞きたいだけです。これは、コンテキスト依存のポップアップメニューを作成しようとしているため、メニューポップアップが発生したときにどのノードが選択されているかを知りたいためです(menulistenerのものの前に選択リスナーコードが実行されることを望んでいます)。このフレームワークはせいぜい役に立たない。

addSelectionListener(String ID、ISelectionListener listener)メソッドを知っていますが、聞きたいビューアのIDを知ることになっているので、一体どうやって理解できるのでしょうか。誰かがこれを解決するのを手伝ってくれませんか。

4

2 に答える 2

3

を使用すると、他のSelectionServiceコンポーネントの選択に反応できます。自分で作成していないコンポーネント、またはプラグインを公開してから数年後に作成されたコンポーネント。

Eclipseのどこかで選択に反応しないことを意図している場合(たとえば、どのビューまたはエディターでJavaメソッドの選択に反応するか)、リスナーをTreeViewer直接登録しても問題はありません。

そうすれば、間違った選択イベントを除外する必要はありませんが、視聴者のイベントのみを取得することができます。

于 2012-03-21T11:09:54.827 に答える
1

私は本当にこのビューパートでtreeviewerによって提供された選択を聞きたいだけです

選択リスナーをビューアに直接追加してみませんか?

一体どうやって視聴者のIDを知っているはずなのか

これは、ビュー(ツリー)ビューアーではなく、ビュー(パーツ)のIDです。

viewer.getSelection()リスナーがいなくても直接呼び出すことができます。

于 2012-03-21T11:09:24.690 に答える