Eclipse插件:将值从一个View传递到另一个View

时间:2012-07-14 22:58:16

标签: java eclipse plugins view package-explorer

我在视图中集成了prefuse的插件(org.eclipse.ui.views)。作为第二步,我写了一个命令菜单并将其添加到Package Explorer的上下文菜单中。当我右键单击Explorer Package View中的任何包时,它会显示菜单。当我单击它时,该命令的Handler类将包中的所有Java类路径保存到List中。 我现在的问题是,如何将更新的List传递给初始化我的prefuse类的视图。 我忘了提到这是我第一次编写eclipse插件。可能有更好的方法。

由于

2 个答案:

答案 0 :(得分:2)

插件的plugin.xml可能定义了两件事:

  1. 包浏览器的上下文菜单贡献
  2. 应该收到列表的视图
  3. 当您从包资源管理器调用菜单内容时,您的视图可能已经打开,或者可能不是。如果它已经打开,您希望将菜单命令中的数据发送到视图,因此您需要获得对该视图的一些引用。如果视图尚未打开,则该命令应打开视图,然后将数据发送到视图。

    这两种情况都可以用同样的方式解决。

    以下是来自的信息 Programmatically showing a View from an Eclipse Plug-in 你可以激活视图,无论它是否已经可见。方法IWorkbenchPage#showView(id-of-your-view)将返回对视图的引用,因此您可以将其强制转换为视图类型并调用其方法,例如包括一些接收要在视图中显示的列表的方法。 / p>

答案 1 :(得分:1)

我会在你的插件中使用Activator类。在某些时候,Eclipse将通过在插件中构建Activator类的实例来启动插件。始终可以使用Activator上的getDefault()类方法引用该实例。

初始化View时,它可以将自己注册到Activator实例(有一个实例变量来保存对视图对象的引用)。当Handler有一个列表给视图时,处理程序可以为视图对象询问Activator的默认实例,然后可以直接发送列表。

如果您将处理程序放在与视图不同的插件中,则可以使一个插件成为另一个插件的依赖项。然后第二个插件可以访问第一个类中的类,其中包括第一个插件的Activator类。