根据当前查看器的选择激活不同的E4命令处理程序

时间:2019-01-16 12:39:48

标签: eclipse-plugin e4

我正在实现一个简单的E4部件,其中的TreeViewer由具有不同值类型TreeNodeFoo的{​​{1}}支持。

我现在想向执行打开命令的Bar中添加一个IOpenListener

TreeViewer

现在我可以从treeViewer.addOpenListener(event -> { ... Object selected value = ((TreeNode) event.getSelection()).getValue(); ... }); 获取命令并使用ECommandService执行它。

但是,我希望不同的处理程序执行,取决于 选择的值EHandlerService还是{ {1}};尽管所有处理程序都对应于同一逻辑命令(“打开”),但实际执行的处理程序需要取决于选择。

这可能吗?

2 个答案:

答案 0 :(得分:1)

通常一个零件只有一个处理程序。

您可以使用EHandlerService.activateHandler方法来激活不同的处理程序,但这会要求您随着选择的改变而不断使用选择侦听器来激活和停用处理程序。

答案 1 :(得分:1)

我曾经在一个项目中有一个类似的用例,并想出了一个'generic composite handler',它能够将event context分配到正确的/实际的/具体的处理程序实例。 例如,实例化复合处理程序,知道它应该分派给所有处理程序。