現在開いているすべてのエディターについて通知を受け取りたいビューがあります。これを実現するためにどこにリスナーを追加できますか?
WorkbenchPage または EditorManager に適切なリスナー レジストリがあることを期待していましたが、見つかりませんでした。
現在開いているすべてのエディターについて通知を受け取りたいビューがあります。これを実現するためにどこにリスナーを追加できますか?
WorkbenchPage または EditorManager に適切なリスナー レジストリがあることを期待していましたが、見つかりませんでした。
あなたのビューはorg.eclipse.ui.IPartListener2
?
これが、このEditorListenerを使用しているものであり、その仕事は、特定のビューに対して Editor イベント (open と close を含む) に反応することです。
public class EditorListener implements ISelectionListener, IFileBufferListener,
IPartListener2 {
protected BytecodeOutlineView view;
EditorListener(BytecodeOutlineView view){
this.view = view;
}
[...]
/**
* @see org.eclipse.ui.IPartListener2#partOpened(org.eclipse.ui.IWorkbenchPartReference)
*/
public void partOpened(IWorkbenchPartReference partRef) {
view.handlePartVisible(partRef.getPart(false));
}
ViewPart
を直接実装すると、このようIPartListener2
にさまざまな に自分自身を登録できますEditors
BytecodeReferenceView
public class BytecodeReferenceView extends ViewPart implements IPartListener2, ISelectionListener {
[...]
public void createPartControl(Composite parent) {
browser = new Browser(parent, SWT.BORDER);
browser.setText(BytecodeOutlinePlugin.getResourceString(NLS_PREFIX
+ "empty.selection.text"));
final IWorkbenchWindow workbenchWindow = getSite().getWorkbenchWindow();
workbenchWindow.getPartService().addPartListener(this);
[...]
I think you're on the right track. You need to listen to the IWorkbenchPage IPartService events:
page.addPartListener(new IPartListener() {
partOpened(IWorkbenchPart part) {
...
}
...
});