Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Eclipse中为编辑器上下文菜单提供命令_Eclipse_Eclipse Plugin - Fatal编程技术网

如何在Eclipse中为编辑器上下文菜单提供命令

如何在Eclipse中为编辑器上下文菜单提供命令,eclipse,eclipse-plugin,Eclipse,Eclipse Plugin,我想在选择文本时向任何文本编辑器的上下文菜单提供一个命令。在“过去”,我会使用objectContribution和带有“enablesFor='+'的嵌套操作来完成这项工作 如何使用命令而不是操作来执行此操作?如果我重新查看我的答案“”,您需要一个命令处理程序 似乎总结了您的选择: 一种是通用模式,在视图中实例化处理程序,让处理程序只需查看视图选择并控制自己的启用状态。 处理程序API允许它在启用更改时触发事件,请参阅 另一个是创建一个属性测试程序,它可以获取您的视图选择 您的视图将监视自

我想在选择文本时向任何文本编辑器的上下文菜单提供一个命令。在“过去”,我会使用objectContribution和带有“enablesFor='+'的嵌套操作来完成这项工作

如何使用命令而不是操作来执行此操作?

如果我重新查看我的答案“”,您需要一个命令处理程序

似乎总结了您的选择:

  • 一种是通用模式,在视图中实例化处理程序,让处理程序只需查看视图选择并控制自己的启用状态。
    处理程序API允许它在启用更改时触发事件,请参阅

  • 另一个是创建一个属性测试程序,它可以获取您的视图选择

您的视图将监视自己的选择更改事件,并为该属性调用(源)(这将导致使用该属性测试仪的所有核心表达式重新计算)。
重要的一点是,仅仅更改视图不会导致重新评估(而不是更改启用状态)

您可以将property tester设置为特定于您需要的每个视图,或者创建一个
com.example.views.localSelection
,并使用
args
指定视图
id


我读了更多关于命令表达式中可用变量的内容,我几乎自己就知道了,但失败了。然后我在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>


谢谢你。因此,看看这一点,我看不出使用命令与objectContributions和Actions做这件事有什么好处。想法?如果在许多编辑器/视图中没有重用
命令
/
处理程序
,那么这可能有点过火,一个
操作
就足够了。
 <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>