我正在为Eclipse Luna开发一个插件,我想在一些视图中添加一些监听器,我知道该怎么做。我的问题是在哪里做?
我需要在插件启动后立即添加它们。所以我认为必须有某种方法在加载插件时调用我在文档中找不到它。到目前为止,我尝试在public void start(BundleContext context) throws Exception
类的Activator
方法中添加此侦听器,但它不起作用。我认为ui部分在那时仍未加载,这就是它失败的原因。
答案 0 :(得分:1)
在使用插件中的其他内容之前,插件的Activator start
方法不会运行,因此这不适合放置侦听器。默认情况下,Eclipse初始化期间不会加载插件,只会在需要时加载它们。
您可以使用org.eclipse.ui.startup
扩展点来定义将在Eclipse初始化期间运行的实现IStartup
的类。
请注意,此接口定义的earlyStartup
方法可能在初始化UI之前运行。使用以下内容从earlyStartup
运行UI代码:
Display.getDefault().asyncExec(new Runnable() {
public void run() {
// UI code
}
});
例如,获取选择服务:
@Override
public void earlyStartup()
{
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
final ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
System.out.println("service " + service);
}
});
}