我们在 Eclipse Kepler 环境中添加了一个新的自定义视图。新视图类似于 Navigator 视图和 Project Explorer 视图,只是它根据我们的特殊需要对显示的资源进行过滤和重新排序。使用 Eclipse Common Navigator Framework (CNF) 创建自定义视图后,我们发现弹出的上下文菜单中没有复制或粘贴等编辑项,并且在常规下拉菜单中禁用。所以现在我们需要添加它们。其他几篇文章讨论了这个问题,但似乎没有一个给出完整的答案。
到目前为止,我们所拥有的是(仅针对 Copy 显示,其他类似):
在 plugin.xml 中,我们添加了 menus 扩展以将项目放置在弹出菜单上:
<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 但找不到使用它们的方法。鉴于它们被命名为“内部”,因此它们并非用于直接用户访问也就不足为奇了。
有没有人成功地做到这一点?非常感谢任何帮助或指针,尤其是工作代码示例。
干杯,比尔:-)