Eclipse RCP SourceProvider监听更改

时间:2014-06-10 11:12:33

标签: eclipse rcp

我有一个源提供程序,可以帮助提供启用按钮和菜单项的状态。启用部分正常工作。我的挑战是如何在激活各种编辑器/视图时调用源提供程序。

我在源代码提供程序上实现了IPartListener2,但没有办法以泛型方式为所有编辑器和视图注册它。 getPartService()。addPartListerner(this)将注册它,但仅适用于特定的工作台部分。此外,在任何部分处于活动状态之前调用Source Provider的构造函数,因此获取有效部分无效。

为所有编辑器和视图注册此Source Provider的最佳方法是什么?

感谢您阅读我的问题以及您可以提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

使用IWindowListener侦听正在激活的工作台窗口:

IWorkbench workbench = PlatformUI.getWorkbench();

workbench.addWindowListener(windowListener);

在侦听器的windowActivated方法中,使用窗口部件服务为窗口添加部件侦听器:

public void windowActivated(IWorkbenchWindow window)
{
   window.getPartService().addPartListener(partListener);
}

作为示例,请参阅org.eclipse.jdt.internal.debug.ui.actions.ActionDelegateHelper