在Eclipse RCP中,我正在使用Perspective创建视图 IPageLayout.addView(...)
但是这种方式我没有对视图的引用.因此,我不知道如何告诉ViewA更新ViewB.
这里使用的最佳模式是什么?
DJ.*_*DJ. 15
除了上面提到的VonC之外,ISourceProviderListener如果您所需的更改不是由选择触发的,您也可以使用.
ViewB工具ISourceProviderListenerISourceProvider并在服务中注册它ViewA得到ISourceProvider和更新,以触发的变化ViewB阅读有关这些界面的文档,IServiceLocator并ISourceProviderService更好地了解它是如何发挥作用的.
您还可以看到这个Lars Vogel的教程,其中有一些示例如何使用ISourceProvider
您在IBM文章中总结了不同的通信范例
ISelectionListener接口,并且必须在工作台页面中注册自己IAdaptable接口:实现的类IAdaptable具有动态返回某些类型的适配器的能力,然后可以使用这些适配器来检索更多信息.关于第一种方法,文章详细说明:
使用UI选择的更智能方法是将消费者视图注册为特定视图部分的侦听器.正如您在下面的示例中所看到的,在注册选择侦听器期间,源视图部件的视图ID被提及为参数.
getSite().getPage().addSelectionListener("SampleViewId",(ISelectionListener)this);
Run Code Online (Sandbox Code Playgroud)
此方法将消除对消费者视图的冗余回调,否则如果该视图被注册为非特定侦听器,则会发生这种回调.
清单2中的代码片段显示了
createPartControl()一个视图的方法,该视图创建JFaceTableViewer并将其作为选择提供程序添加到工作台站点.此代码允许任何UI选择更改TableViewer传播到页面,最后传播到感兴趣的消费者视图.清单2.设置选择提供程序
public void createPartControl(Composite parent) {
// Set up a JFace Viewer
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
viewer.setContentProvider(new ViewContentProvider());
viewer.setLabelProvider(new ViewLabelProvider());
viewer.setSorter(new NameSorter());
viewer.setInput(getViewSite());
// ADD the JFace Viewer as a Selection Provider to the View site.
getSite().setSelectionProvider(viewer);
}
Run Code Online (Sandbox Code Playgroud)
您将在eclipse3.5的RCP教程中找到类似的方法(2010年2月4日更新)
| 归档时间: |
|
| 查看次数: |
11414 次 |
| 最近记录: |