添加复制/粘贴到Eclipse CNF弹出菜单(Adding Copy/Paste to Eclip

2019-11-02 23:29发布

我们增加了一个新的自定义视图,以我们的Eclipse开普勒环境。 新的观点是类似的Navigator视图和Project Explorer视图,不同之处在于它的过滤器,并根据我们的特殊需求进行重新排序显示的资源。 创建使用Eclipse通用导航器架构(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()函数。

但是,应执行()呢? 这就是这个帖子的点。 我们已经发现的Eclipse类org.eclipse.ui.internal.navigator.resources.actions.CopyAction和org.eclipse.ui.internal.navigator.resources.actions.EditActionGroup但无法找到一个方法来使用它们。 鉴于它们被命名为“内部”这并不奇怪他们的目的不是直接的用户访问。

有没有人成功地做到了这一点? 任何帮助或指针,尤其是工作代码示例,不胜感激。

欢呼声中,比尔:-)

文章来源: Adding Copy/Paste to Eclipse CNF popup menu