我正在为 Eclipse Luna 开发一个插件,我想向某些 View 添加一些监听器,我知道该怎么做。我的问题是在哪里做?
我需要在插件启动后立即添加它们。所以我想在加载插件时一定有某种方法被调用,我只是在文档中找不到它。到目前为止,我尝试在 Activator
类中的 public void start(BundleContext context) throws Exception
方法中添加此监听器,但它不起作用。我认为此时 ui 部分尚未加载,这就是它失败的原因。
最佳答案
插件的 Activator start
方法在使用插件中的其他内容之前不会运行,因此这不是放置监听器的合适位置。默认情况下,Eclipse 初始化期间不会加载插件,仅在需要时加载。
您可以使用 org.eclipse.ui.startup
扩展点来定义一个实现 IStartup
的类,该类将在 Eclipse 初始化期间运行。
请注意,此接口(interface)定义的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);
}
});
}
关于java - eclipse插件启动后立即调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43609733/