2014-06-10 63 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示例的指針非常有用。 –