添加复制/粘贴到Eclipse CNF弹出菜单

时间:2014-02-20 20:22:28

标签: eclipse contextmenu add copy-paste cnf

我们为Eclipse Kepler环境添加了一个新的自定义视图。新视图类似于Navigator视图和Project Explorer视图,只是它根据我们的特殊需要过滤和重新排序显示的资源。使用Eclipse Common Navigator Framework(CNF)创建自定义视图后,我们发现弹出上下文菜单中没有复制或粘贴等编辑项,并且在常规下拉菜单中禁用了它们。所以现在我们需要添加它们。其他几个帖子讨论了这个问题,但似乎都没有给出完整的答案。

到目前为止我们所拥有的(仅显示复制,其他类似):

在plugin.xml中,我们添加了菜单扩展名以在弹出菜单上放置项目:

<extension
      point="org.eclipse.ui.menus">
   <menuContribution
         locationURI="popup:com.company.views.CustomView?before=import">
      <command
            commandId="org.eclipse.ui.edit.copy"
            icon="icons/copy_16x16.png"
            label="Copy"
            style="push">
      </command>
   </menuContribution>
</extension>

接下来在plugin.xml中我们添加了处理程序扩展以使菜单项起作用:

<extension
      point="org.eclipse.ui.handlers">
   <handler
         commandId="org.eclipse.ui.edit.copy"
         class="com.company.views.CustomViewCopyHandler">
      <enabledWhen>
         <not>
            <count value="0"/>
         </not>
      </enabledWhen>
      <activeWhen>
         <with variable="activePartId">
            <equals value="com.company.views.CustomView"/>
         </with>
      </activeWhen>
   </handler>
</extension>

最后我们实现了处理程序类:

public class CustomViewCopyHandler
     extends AbstractHandler
  implements IHandler
{
    public Object execute( ExecutionEvent event )
            throws ExecutionException
    {
        return null;
    }
}

它尽可能地发挥作用。复制添加到弹出菜单中,单击它调用类execute()函数。

但是execute()应该做什么?这就是这篇文章的重点。我们发现Eclipse类org.eclipse.ui.internal.navigator.resources.actions.CopyAction和org.eclipse.ui.internal.navigator.resources.actions.EditActionGroup但找不到使用它们的方法。鉴于它们被命名为“内部”,因此它们不适合直接用户访问也就不足为奇了。

有没有人成功完成过这项工作?任何帮助或指针,尤其是工作代码示例,都非常感谢。

干杯,比尔: - )

0 个答案:

没有答案