我有一个包含A类的插件,它通过以下代码行显示在B类中定义的视图:
(VideoLogView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("Videolog.VideoLogView");
我在视图的createPartControl()方法(B类对象)中需要做的是访问A类对象中的方法。
如何做到这一点?
感谢。
答案 0 :(得分:2)
看起来你正面临着“如何将论点传递给我的观点”这一经典问题? This thread最能说明这一点:
在我的RCP项目开始时我遇到了同样的问题。对于这样一个事实我感到很奇怪:没有办法将参数传递给视图作为被观察的模型。
为什么呢?因为(强调我的):
您使用的是已打开的可插拔平台。 您贡献现有的开发项目,其他人应该能够为您的贡献做出贡献。
因此,您不会将“传递”参数传递给视图,这会将整个事物锁定在非打开的设计中 相反,您的视图将询问平台(或将听取平台)以确定要管理的信息 其他视图(来自其他尚不存在的插件)可能也想管理同一事件的相同信息。
您应该做的是向工作台询问当前的选择。我猜您的视图是通过双击操作或简单选择打开的,因此您当前将选择要在视图中管理的对象。
这是您从视图中检索工作台选择的方法:
ISelection s = this.getSite().getWorkbenchWindow().getSelectionService().getSelection();
其中“this”是ViewPart。
然后,您必须创建初始视图(从
DoubleClick
这样的给定事件启动视图创建的视图)。JFace
查看器是一个选择提供程序,因此您可以在使用jface时使用它,或者在使用自定义ISelectionProvider
控件时可以实现SWT
接口我的情况)。
文章“Eclipse Workbench: Using the Selection Service”也可以给你一些指示。