簡體   English   中英

在Eclipse中打開新編輯器時如何收到通知?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM