Eclipse rcp 开发 : 自定义导航视图CNF(4)为导航视图重新定义右键菜单

在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

Eclipse rcp 开发 : 自定义导航视图CNF(4)为导航视图重新定义右键菜单

在该配置下需要增加,否则不生效:

<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

转载麻烦加上链接,谢谢合作。


你可能感兴趣的:(Eclipse rcp 开发 : 自定义导航视图CNF(4)为导航视图重新定义右键菜单)