我想在选择文本时向任何文本编辑器的上下文菜单提供命令。在“过去的日子”中,我会使用objectContribution和带有“enableFor ='+'”的嵌套操作完成此操作。
如何使用命令而不是操作来执行此操作?
答案 0 :(得分:2)
如果我重新回答我的回答“Eclipse RCP: Actions VS Commands”,则需要一个命令处理程序。
This thread似乎总结了您的选择:
一个是常见模式,用于在视图中实例化处理程序,让处理程序只查看视图选择并控制其自己的启用状态。
处理程序API允许它在启用的更改上触发事件,请参阅org.eclipse.core.commands.AbstractHandler
。另一种是创建一个可以选择视图的属性测试器。
IWorkbenchPart p = page.findViewReference("your.id").getPart(false);
if (p!=null) {
p.getSite().getSelectionProvider().getSelection() ... whatever
}
您的视图将监视其自己的选择更改事件,并为该属性调用
org.eclipse.ui.services.IEvaluationService.requestEvaluation(String)
(源here)(这将导致使用该属性测试器的所有核心表达式被重新评估)。登记/> 重要的是,简单地更改视图不会导致重新评估(而不是更改启用状态)。您可以将属性测试器设置为特定于您需要的每个视图,或者创建一个
com.example.views.localSelection
并使用args
指定视图id
。
答案 1 :(得分:2)
我阅读了有关命令表达式中可用变量的更多信息,我来了 close 来自行解决,但失败了。然后我在eclipse新闻组上问了一个类似的问题,并被引导到正确的方向。这是一个如何做我所寻找的大部分的例子:
<command
commandId="org.marcesher.blogcodeformatter.commands.wikiFormatterCommand"
tooltip="Format And Copy to Clipboard"
id="org.marcesher.blogcodeformatter.popup.wikiFormatterCommand">
<visibleWhen>
<with variable="selection">
<instanceof value="org.eclipse.jface.text.ITextSelection"/>
</with>
</visibleWhen>