Eclipse插件 - 在Eclipse中打开编辑器的通知 [英] Eclipse Plugin - Notification of when an editor is opened in Eclipse

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

问题描述

我希望在Eclipse中打开编辑器时收到通知。

I want to get notified when an editor is opened in Eclipse. What is the best way to do that?

推荐答案

这个线程


有你的课实现 org.eclipse.ui.IPartListener2

然后,当工作台部分( IEditorPart 等)刚刚打开/关闭。您可以实际过滤出您想要注意哪些部分。

Have your class implement org.eclipse.ui.IPartListener2.
Then you get notified when a workbench part (an IEditorPart, etc.) just got opened/closed. You can actually filter out which parts you want to pay attention to.

(注意:从3.5开始,IPartListener2也可以实现 IPageChangedListener 被通知有关实现 IPageChangeProvider 和post PageChangedEvents 。)

(note: As of 3.5, the IPartListener2 can also implement IPageChangedListener to be notified about any parts that implement IPageChangeProvider and post PageChangedEvents.)


棘手的部分(没有双关语)是将听众注册到工作台。

The tricky part (no pun intended) is to register the listener to workbench.

所以,首先要做的是获得一个有效的 IWorkbenchPage ,这样你可以调用$ code> IWorkbenchPage.addPartListener(<你的类实现IPartListener>)。

So, the first thing to do is get a valid IWorkbenchPage so that you can call IWorkbenchPage.addPartListener(<your class that implements IPartListener>).

以下是如何获取工作台页面。

Here is how to get a workbench page.

IWorkbenchPage page = null;
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (window != null)
{
    page = window.getActivePage();
}

if (page == null)
{
    // Look for a window and get the page off it!
    IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
    for (int i = 0; i < windows.length; i++)
    {
        if (windows[i] != null)
        {
            window = windows[i];
            page = windows[i].getActivePage();
            if (page != null)
            break;
        }
    }
}

另请参见 here

请参阅此课程为一个例子

IPartListener2 partlistener = new IPartListener2(){
        public void partActivated( IWorkbenchPartReference partRef ) {
            if (partRef.getPart(false) == MapEditor.this){
                registerFeatureFlasher();
                ApplicationGIS.getToolManager().setCurrentEditor(editor);
            }
        }
 [...]

或这个通用的 PartListener ,用于PartListener2的一般用法。

Or this generic PartListener for generic usage of a PartListener2.

或此 EditorTracker

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

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