1

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

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

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

如何才能做到这一点?

谢谢。

4

1 回答 1

2

看起来您正面临“如何将论据传递给我的观点”的经典问题?
该线程最好地说明了这一点:

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

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

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

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

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

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

其中“this”是一个 ViewPart。

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


文章“ Eclipse Workbench:使用选择服务”也可以给你一些指点。

替代文字

于 2009-06-24T22:12:29.220 回答