有两个View,一个为TableViewer,一个为TreeViewer,现在想把TableViewer作为Selection的提供方,把TreeViewer作为Selection的接收方,当TableViewer中的选中项变化后,希望TreeViewer能根据TableViewer的选中项目而选中自己相关节点。现在从TableViewer中获取信息没有问题,但就是东西传过来之后我不知道用什么方法能够把TreeViewer的节点给设定了,在网上查到了可以用viewer.setSelection( selection, reveal ),但是如果把从TableViewer中接到的Selection直接作为参数传过去,并没有选定我想选的节点,而是TreeViewer的被选定的节点也变为非选中的状态了。是不是必须传递的参数必须是TreeSelection啊,我尝试了new TreeSelection(TreePath paths) 但是TreePath paths这个参数应给怎么初始化呢,希望大神能给些指点,还是我的思路本身就有问题?先谢谢了。
------解决方案--------------------
ISelection强转成IStructuredSelection,就可以获取选中的那个模型的对象了,你需要根据这个对象,计算出在TreeViewer中你想选中的那个对象。 然后new一个StructuredSelection,set到TreeViewer中。
另外,Treeviewer中setSelection无效,还有一个可能原因,ContentProvider中的getParent()方法实现不正确...