【问题标题】:How do I get notified whenever a new editor is opened in Eclipse?每当在 Eclipse 中打开新编辑器时,我如何得到通知?
【发布时间】:2010-10-07 05:45:32
【问题描述】:

我有一个视图希望收到所有当前打开的编辑器的通知。我在哪里可以添加监听器来实现这一点?

我希望 WorkbenchPage 或 EditorManager 有一些合适的监听器注册表,但我找不到它。

【问题讨论】:

    标签: eclipse eclipse-plugin eclipse-pde


    【解决方案1】:

    您的视图使用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);
        [...]
    

    【讨论】:

    • 您有一个示例,我如何将此 EditorListener 添加到 Eclipse 中的默认 Java 代码编辑器中?
    【解决方案2】:

    我认为你在正确的轨道上。你需要监听 IWorkbenchPage IPartService 事件:

    page.addPartListener(new IPartListener() {
        partOpened(IWorkbenchPart part) {
            ...
        }
    
        ...
    });
    

    【讨论】:

    • 似乎对我没有任何作用
    • 啊...我没有正确阅读您的评论。我已将其添加到页面,而不是页面的 partService。
    • 您可能没有看错 - 我以为您可以直接收听该页面。显然不是。
    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多