Eclipse plugin JFace TreeViewer和Eclipse4框架/选择服务

Eclipse plugin JFace TreeViewer和Eclipse4框架/选择服务,eclipse-plugin,eclipse-rcp,jface,e4,Eclipse Plugin,Eclipse Rcp,Jface,E4,我对JFace TreeViewer和它们与e4选择服务/框架交互的方式有一些困难 我想了解在同一MPart中使用一个或多个JFace查看器时(通过选择服务)管理选择的预期方式 两个控件(treeviewer和tableviewer)的基本操作按预期工作,但是,当焦点移动到零件内的另一个控件,然后通过右键单击先前选择的树项目返回treeviewer时,树控件不会重新发出选择事件,导致e4 ESelectionService没有使用正确的选择进行更新,这会产生各种滴流效应,例如handler的@C

我对JFace TreeViewer和它们与e4选择服务/框架交互的方式有一些困难

我想了解在同一MPart中使用一个或多个JFace查看器时(通过选择服务)管理选择的预期方式

两个控件(treeviewer和tableviewer)的基本操作按预期工作,但是,当焦点移动到零件内的另一个控件,然后通过右键单击先前选择的树项目返回treeviewer时,树控件不会重新发出选择事件,导致e4 ESelectionService没有使用正确的选择进行更新,这会产生各种滴流效应,例如handler的@CanExecute方法无法按预期运行。请注意,当焦点通过左键单击以前选择的项目返回到TreeViewer时。。。选择事件按预期发出

我相信我可以用鼠标侦听器或聚焦侦听器来编写代码,但我想做正确的事情,这似乎有点笨拙

总而言之:

  • TreeViewer的行为是否符合预期?(TableViewer似乎没有表现出这种行为)
  • 首选的工作是什么
带有测试用例结果的图像总结问题:

基于eclipse中的e4向导,这里提供了精简的示例/测试代码。


任何帮助/建议都将不胜感激。

在macOS上进行简单测试似乎可以,但
TreeViewer
代码在很大程度上取决于用于树的本机控件,因此它可能因平台而异。感谢您关注macOS,很遗憾。。。我的目标平台是Windows。我肯定有人以前遇到过,这似乎不是一件特别罕见的事情。。。