eclipse插件启动后立即调用方法

时间:2017-04-25 11:43:09

标签: java eclipse-plugin eclipse-luna

我正在为Eclipse Luna开发一个插件,我想在一些视图中添加一些监听器,我知道该怎么做。我的问题是在哪里做?

我需要在插件启动后立即添加它们。所以我认为必须有某种方法在加载插件时调用我在文档中找不到它。到目前为止,我尝试在public void start(BundleContext context) throws Exception类的Activator方法中添加此侦听器,但它不起作用。我认为ui部分在那时仍未加载,这就是它失败的原因。

1 个答案:

答案 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);
   }
 });
}