eclipse插件一启动就调用方法

Call method as soon as eclipse plug-in starts

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

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

插件的 Activator start 方法不会 运行 直到使用插件中的其他东西,所以这不是放置侦听器的合适位置。默认情况下,插件在 Eclipse 初始化期间不加载,仅在需要时加载。

您可以使用 org.eclipse.ui.startup 扩展点来定义一个 class 实现 IStartup,它将在 Eclipse 初始化期间成为 运行。

注意这个接口定义的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);
   }
 });
}