ユーザーの操作に基づいて複数のエディタインスタンスを開くことができる、シンプルなEclipse RCPアプリケーションを作成しました。私は別のビュー(ViewPart)を持っています。そこで、エディタで選択変更を聞きます。 問題は、最後に開いたエディタから選択されたものだけがビューに通知され、以前に開いた他のエディタはイベントをこれ以上提供しないか、またはビューは最後に開いたエディタだけをリッスンします。これは、以前に開いたエディタにフォーカスがあっても発生します。Eclipse RCP - エディタからの選択をリッスンする方法
他のエディタのタブをクリックすると、以前開いていたものの1つをクリックしたときに変更が反映されるように、エディタ領域内の最新のエディタだけが選択イベントを提供します。編集者。私が使用して私の見解で
:
DocumentEditorは、アプリケーション・エディタ領域で開かれた編集者の一人であるIWorkbench workbench = PlatformUI.getWorkbench();
workbench.getActiveWorkbenchWindow().getActivePage().addSelectionListener(DocumentsEditor.ID,(ISelectionListener)this);
。 ISelectionService.addSelectionListener(String partId, ISelectionListener listener)
のJavaDocから
ありがとう、これは私が探していたものです。 – Kris
申し訳ありませんが、最後の例で* post * SelectionListenerを使用するのはなぜですか?残りの答えは通常の選択リスナーですか?それは何らかの理由で、またはタイプミスを意図していますか? – Alex
'ss.addPostSelectionListener(リスナー)'と 'ss.addSelectionListener(リスナー)'は、選択がテーブルのような「スクロール可能な」ウィジェットから来る場合を除いて等しいです。ここで 'ss.addSelectionListener(リスナー)'はリスナーに各選択の変更を通知しますが、 'ss.addPostSelectionListener(リスナー)'は最後の変更後にリスナーに400msだけ通知します。私はいつもポストバージョンを使います。 –