在我的Eclipse RCP应用程序中,我使用了这个漂亮的article中描述的选择服务。一个视图中有一个注册为SelectionProvider的TreeViewer
getSite().setSelectionProvider(viewer);
另一个视图是从TreeViewer接收事件
selectionListener = new ISelectionListener() {
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
pageSelectionChanged(part, selection);
}
};
getSite().getPage().addSelectionListener(selectionListener);
如果事件是由我正常的鼠标点击触发的,那么一切都很正常。我想通过选择树中的一项来以编程方式触发一个选择事件:
treeViewer.setSelection(new StructuredSelection(element),true);
这不管用。在接收器视图中未调用方法selectionChanged。该问题将在此forum thread中讨论。没有解决方案。
编辑
没有适当的方法来处理鼠标触发的单击,就像以编程方式选择一样。单击鼠标将激活视图,而所选内容不会以编程方式激活视图。
我的解决方案是通过Selection Service
以与第一个视图相同的方式注册第二个视图。在此之后,两个视图都直接从活动编辑器中获取选择事件。
https://stackoverflow.com/questions/9102026
复制相似问题