Eclipse插件开发:如何在Project Explorer中排序上下文菜单?
Eclipse插件Project Explorer向导菜单排序解决方案
下面是几种不用修改向导名称就能调整菜单顺序的可行方法:
通过Navigator Viewer扩展点配置排序规则
不用改动org.eclipse.ui.newWizards的原有配置,在其中一个插件的plugin.xml里添加org.eclipse.ui.navigator.viewer扩展点,针对Project Explorer的固定viewer ID(org.eclipse.ui.navigator.ProjectExplorer),绑定两个项目的navigatorContent并设置排序优先级。高优先级的内容提供商对应的向导会排在前面。
示例配置:<extension point="org.eclipse.ui.navigator.viewer"> <viewerContentBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer"> <includes> <contentExtension pattern="com.business.a.navigatorContent"> </contentExtension> <contentExtension pattern="com.business.b.navigatorContent"> </contentExtension> </includes> <sortConfiguration contentProviderId="com.business.a.navigatorContent" priority="high"> </sortConfiguration> <sortConfiguration contentProviderId="com.business.b.navigatorContent" priority="low"> </sortConfiguration> </viewerContentBinding> </extension>给向导设置自定义分类并排序
在两个插件的newWizards配置里,把向导归到同一个自定义分类下,给分类设置priority控制分类在菜单中的位置,再给每个向导加order属性控制分类内的顺序。
示例:
com.business.a的plugin.xml:<extension point="org.eclipse.ui.newWizards"> <category id="com.business.custom.category" name="业务向导" priority="1"> </category> <wizard category="com.business.custom.category" id="com.business.a.wizard" name="A业务向导" order="1"> <!-- 原有向导配置 --> </wizard> </extension>com.business.b的plugin.xml:
<extension point="org.eclipse.ui.newWizards"> <wizard category="com.business.custom.category" id="com.business.b.wizard" name="B业务向导" order="2"> <!-- 原有向导配置 --> </wizard> </extension>自定义菜单绕过默认排序
直接用org.eclipse.ui.menus扩展点给Project Explorer右键菜单加自定义菜单项,绑定对应的向导命令,通过order属性直接指定每个菜单项的位置。这种方式完全不受默认排序逻辑影响。
示例:<extension point="org.eclipse.ui.menus"> <menuContribution locationURI="popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu"> <command commandId="com.business.a.newWizardCommand" label="A业务向导" order="10"> <visibleWhen> <with variable="activeMenuSelection"> <instanceof value="org.eclipse.core.resources.IProject"/> </with> </visibleWhen> </command> <command commandId="com.business.b.newWizardCommand" label="B业务向导" order="20"> <visibleWhen> <with variable="activeMenuSelection"> <instanceof value="org.eclipse.core.resources.IProject"/> </with> </visibleWhen> </command> </menuContribution> </extension>注意这里需要给每个向导创建对应的command,关联到向导的执行逻辑。
内容的提问来源于stack exchange,提问作者user26267915
相关产品推荐
相关产品推荐

