2014-06-10 65 views
1

我有一个源提供程序,它有助于为启用按钮和菜单项提供状态。启用部分工作正常。我的挑战是如何在激活各种编辑器/视图时调用源提供程序。Eclipse RCP SourceProvider正在侦听更改

我已经实现IPartListener2上源供应商,但没有看到一个方法来得到它在通用方式注册所有编辑器和视图。 getPartService()。addPartListerner(this)将注册它,但仅限于特定的工作台部分。此外,源提供程序的构造函数在任何部分处于活动状态之前调用,因此获取有效部分不起作用。

为所有编辑器和视图注册此源提供程序的最佳方法是什么?

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

回答

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

+0

@ gregg-449感谢短和su直接的答案!它现在工作正常。指向正在工作的Eclipse示例的指针非常有用。 –