我有一个源提供程序,可以帮助提供启用按钮和菜单项的状态。启用部分正常工作。我的挑战是如何在激活各种编辑器/视图时调用源提供程序。
我在源代码提供程序上实现了IPartListener2,但没有办法以泛型方式为所有编辑器和视图注册它。 getPartService()。addPartListerner(this)将注册它,但仅适用于特定的工作台部分。此外,在任何部分处于活动状态之前调用Source Provider的构造函数,因此获取有效部分无效。
为所有编辑器和视图注册此Source Provider的最佳方法是什么?
感谢您阅读我的问题以及您可以提供的任何帮助。
答案 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