2012-04-12 70 views
0

我需要以某種方式獲取激活器中選擇服務的參考。我嘗試這樣做:如何在插件激活器中獲得選擇服務

IWorkbench wb = PlatformUI.getWorkbench(); 
IWorkbenchWindow ww = wb.getActiveWorkbenchWindow(); 
ww.getSelectionService().addSelectionListener(new GlobalSelectionListener()); 

ww總是null。我還沒有找到其他代碼來獲取選擇服務參考。此代碼僅在Eclepse完全初始化時有效。

回答

0

您需要確保在顯示線程上調用getActiveWorkbenchWindow()以獲得非空返回值。

嘗試:

final IWorkbench workbench = PlatformUI.getWorkbench(); 
workbench.getDisplay().asyncExec(new Runnable() { 
    public void run() { 
    IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); 
    if (window != null) { 
     // do something 
    } 
    } 
}); 

這個例子的從org.eclipse.ui.IStartup的Javadoc。如果您希望在工作臺初始化後儘快執行代碼,則應考慮擴展org.eclipse.ui.startup擴展點。