[英]How do I get notified whenever a new editor is opened in Eclipse?
我有一個想要通知所有當前打開的編輯器的視圖。 我在哪里可以添加一個監聽器來實現這一目標?
我期待WorkbenchPage或EditorManager有一些適當的監聽器注冊表,但我找不到它。
您的視圖是否使用org.eclipse.ui.IPartListener2
?
這就是使用這個EditorListener的東西 ,它的工作是對給定的視圖作出反應,以編輯事件(包括打開和關閉)
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);
[...]
我認為你走在正確的軌道上。 您需要監聽IWorkbenchPage IPartService事件:
page.addPartListener(new IPartListener() {
partOpened(IWorkbenchPart part) {
...
}
...
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.