在org.eclipse.ui.navigator.navigatorContent 扩展点中新建actionprovider,其实这个就是cnf默认提供的一些导航视图的右键菜单。
常用的actionprovider有:
1. "org.eclipse.ui.navigator.resources.actions.EditActions",编辑菜单,包括复制、剪贴、粘贴等
2. "org.eclipse.ui.navigator.resources.actions.RefactorActions",重构菜单
3. "org.eclipse.ui.navigator.resources.OpenActions",打开菜单
4. "org.eclipse.ui.navigator.resources.GotoActions",转到菜单
5. "org.eclipse.ui.navigator.resources.GoIntoActions"转到菜单(Go Into)
6. "org.eclipse.ui.navigator.resources.PortingActions"导入导出菜单
7. "org.eclipse.ui.navigator.resources.NewActions"新建菜单
8. "org.eclipse.ui.navigator.resources.PropertiesActionProvider"属性菜单
9. "org.eclipse.ui.navigator.resources.WorkManagementActionProvider"
10. "org.eclipse.ui.navigator.resources.ResourceMgmtActions"资源管理菜单
11. "org.eclipse.ui.navigator.resources.UndoRedoActionProvider"撤销重做菜单
具体的可以导入“org.eclipse.ui.navigator.resources”源码,查看plugin.xml。在org.eclipse.ui.navigator.navigatorContent 扩展点中有定义。
现在重新定义New的组菜单:
-- 新建一个actionprovider,常见类,继承CommonActionProvider。覆盖父类fillContextMenu 方法 。添加到class属性中
-- ID唯一
--overrides 填写:org.eclipse.ui.navigator.resources.NewActions。
-- priority 选择normal
在该配置下需要增加,否则不生效:
<enablement>
<or>
<adapt
type="org.eclipse.core.resources.IResource">
</adapt>
<adapt
type="java.util.Collection">
<count
value="0">
</count>
</adapt>
</or>
</enablement>
完成之后,在viewerActionBinding -- includes 下增加actionExtension。在pattern中输入刚刚创建的id
启动后在导航视图中右键,已经没有了New的组菜单,那是因为在NewExtension.java中并没有重新定义菜单
在fillContextMenu 方法中添加。group.new 是添加到new菜单组中。
OpenAction openAction = new OpenAction();
openAction.setText("New");
menu.appendToGroup("group.new", openAction);
添加后,导航视图中会新增一个New的菜单。
这样一个菜单的重写就完成了
源码地址:http://pan.baidu.com/s/1qWFe1q8
转载麻烦加上链接,谢谢合作。