在Eclipse中打开新的编辑器时,如何得到通知? [英] How do I get notified whenever a new editor is opened in Eclipse?

查看:171
本文介绍了在Eclipse中打开新的编辑器时,如何得到通知?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



我期待WorkbenchPage或EditorManager有一些适当的监听器注册表,但我找不到它。

解决方案

您的视图是否使用



这是什么使用这个 EditorListener , >

  public class EditorListener实现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 ,它可以注册到各种编辑器,像这样 BytecodeReferenceView

  public class BytecodeReferenceView extends ViewPart实现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 have a view which would like to be notified about all the currently opened editors. Where can I add a listener to achieve this?

I was expecting WorkbenchPage or EditorManager to have some appropriate listener registry, but I couldn't find it.

解决方案

Does your view uses a org.eclipse.ui.IPartListener2 ?

That is what is using this EditorListener, whose job is to react, for a given view, to Editor events (including open and 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));
    }


Now if your ViewPart directly implements an IPartListener2, it can register itself to the various Editors, like this 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);
    [...]

这篇关于在Eclipse中打开新的编辑器时,如何得到通知?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆