2012-07-14 50 views
1

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

谢谢

回答

2

你的插件的plugin.xml可能定义了两两件事:为Package Explorer中

  • 应接收列表
  • 视图当你的菜单贡献

    1. 上下文菜单中的贡献从包资源管理器调用,您的视图可能已经打开,或者它可能不是。如果它已经打开,你想从菜单命令发送数据到视图,所以你需要获得一些对视图的引用。如果视图尚未打开,则命令应打开视图,然后将数据发送到视图。

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

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

    +0

    非常感谢,我试了一下,它的工作原理。 – malib5 2012-07-16 16:37:32

    1

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

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

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

    相关问题