我目前正在构建基于Eclipse的RCP应用程序。 在我的一个插件中,我通过代码添加了两个视图:
layout.addView("dev.asd.tableviewer.tree", IPageLayout.LEFT, 0.25f, IPageLayout.ID_EDITOR_AREA);
layout.addView("dev.asd.tableviewer.view", IPageLayout.RIGHT, 0.75f, IPageLayout.ID_EDITOR_AREA);
第一个视图包含一个树形视图,第二个视图包含一个tableviewer。现在我想根据treeviewer的选择更新tableviewer的内容。我的问题是,如何从树形图中引用tableviewer?或者还有其他方法可以解决这个问题吗?
答案 0 :(得分:8)
针对此问题使用SelectionService。无需引用所需的观看次数,请参阅http://www.eclipse.org/articles/Article-WorkbenchSelections/article.html
答案 1 :(得分:4)
在每个视图中,定义一个ID。在扩展元素详细信息中定义视图时,ID与您在ID字段中定义的ID相同。这是我的一个:
public static final String ID = "gov.bop.rabid.ui.views.PrefetchedInmatesView";
在您的RCP插件中,定义以下方法:
public static IViewPart getView(IWorkbenchWindow window, String viewId) {
IViewReference[] refs = window.getActivePage().getViewReferences();
for (IViewReference viewReference : refs) {
if (viewReference.getId().equals(viewId)) {
return viewReference.getView(true);
}
}
return null;
}
如果要从其他视图引用视图,请使用以下代码:
PrefetchedInmatesView view = (PrefetchedInmatesView)
RabidPlugin.getView(window, PrefetchedInmatesView.ID);
替换PrefetchedInmatesView
的视图名称以及RabidPlugin
插件的名称。