2012-04-12 78 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扩展点。