【问题标题】:Eclipse Plug-in / View QuestionEclipse 插件 / 查看问题
【发布时间】:2010-11-05 15:21:34
【问题描述】:

我有一个包含类 A 的插件,它通过以下代码行显示在类 B 中定义的视图:

(VideoLogView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("Videolog.VideoLogView");

我需要在视图(B类对象)的createPartControl()方法中访问A类对象中的一个方法。

如何做到这一点?

谢谢。

【问题讨论】:

  • @Dr.浮士德:很高兴你已经解决了。您能否在这篇文章中发布一个答案,详细说明您的代码的相关摘录是否符合您的要求?你甚至可以选择它作为官方答案(虽然不涉及代表增益)

标签: eclipse eclipse-plugin eclipse-pde


【解决方案1】:

看起来您正面临“如何将参数传递给我的视图”这一经典问题?
This thread 最好地说明了这一点:

在我的 RCP 项目开始时,我遇到了同样的问题。我对无法将参数作为查看模型传递给视图这一事实感到奇怪。

为什么?因为(强调我的):

您在一个开放的、可插入的平台上。 您为现有的开发做出贡献,其他人应该能够为您的开发做出贡献。

因此,您不会将参数“传递”给视图,这会将整个事物锁定在未打开的设计中。
相反,您的视图将询问平台(或将听取平台)来确定要管理哪些信息。
其他视图(来自尚不存在的其他插件)可能也希望管理同一事件的相同信息。

然后你应该做的是向工作台询问当前的选择。我猜您的视图是通过双击操作或简单选择打开的,因此当前将选择您要在视图中管理的对象。
这就是您可以从视图中检索工作台选择的方式:

ISelection s = this.getSite().getWorkbenchWindow().getSelectionService().getSelection();

其中“this”是一个 ViewPart。

然后您必须将您的初始视图(从给定事件(如DoubleClick)启动视图创建的视图)设置为选择提供程序。 JFace 查看器是一个选择提供程序,因此您可以在使用 jface 时使用它,或者您可以在使用自定义 SWT 控件时实现 ISelectionProvider 接口(这是我的情况)。


文章“Eclipse Workbench: Using the Selection Service”也可以给你一些指点。

【讨论】:

  • 谢谢。将参数传递给我的视图正是问题所在。我将立即开始阅读这篇文章。
  • VonC - 我已阅读文章“使用选择服务”。这似乎不是我要找的。当我的视图(B 类)被创建并调用 createPartControl 方法时,我需要访问 A 类的方法。一旦您的视图被创建和显示,选择服务似乎就开始发挥作用了。还有其他想法吗?
  • 请忽略以上评论。阅读后我得到了它:stackoverflow.com/questions/585802/…" title="">this
  • 请忽略以上评论。我让它工作。我发现 [this][1] 问题的答案非常有帮助。 [1]:stackoverflow.com/questions/585802/…
猜你喜欢
  • 2016-05-29
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多