是否可以扩展Eclipse搜索菜单

时间:2011-08-04 06:54:01

标签: eclipse search menu extend eclipse-jdt

现在在eclipse中,使用eclipse扩展无法扩展其他插件定义的Menu: org.eclipse.ui.menus。

我想在搜索中添加一个菜单项,但不是搜索页面。由于菜单搜索是由org.eclipse.search定义的,我无法添加它。

但我看到JDT和CDT确实在搜索下添加了一些菜单项。有没有人知道它们是如何起作用的?

任何提示都表示赞赏。

3 个答案:

答案 0 :(得分:1)

您可以使用org.eclipse.ui.actionSets扩展点

扩展其他插件的菜单

这就是JDT如何使用自己的操作扩展搜索菜单。要在给定菜单中执行操作,您必须填写menubarPath值。例如,Java搜索操作的JDT用以下内容填充:

org.eclipse.search.menu/dialogGroup

我建议导入JDT UI源并查看JDT plugin.xml文件。您需要一个经典的Eclipse SDK,然后在插件视图中右键单击org.eclipse.jdt.ui插件并选择import as source。

答案 1 :(得分:1)

2012年8月更新,reprogrammer评论,org.eclipse.ui.actionSets已被弃用:

  

相反,请使用扩展点org.eclipse.ui.commands


原始答案(2011年8月)

extension point="org.eclipse.ui.actionSets"推荐的“menubarPath="org.eclipse.search.menu/dialogGroup"”操作的actionSet(Manuel Selva)是官方解决方案,与general menu contribution一致。

但要注意一些可能仍会延续搜索菜单贡献的问题,因为illustrated by this thread围绕着({固定的] bug 15684:{{3}} (这是在2009年,希望这个问题已经解决了)

  

的工作原理是重新定义整个搜索菜单,就像当前在JDT 3.6中使用的变通方法一样:

   <extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            label="%JavaSearchActionSet.label"
            description="%JavaSearchActionSet.description"
            visible="false"
            id="org.eclipse.jdt.ui.SearchActionSet">
<!-- see http://bugs.eclipse.org/bugs/show_bug.cgi?id=15684    -->
<!-- Note: The menu (re-) definition has to be here due to bug: -->
<!-- =================================================================== -->
<!-- Search Menu                                                         -->
<!-- =================================================================== -->
         <menu
               label="%searchMenu.label"
               path="navigate"
               id="org.eclipse.search.menu">
                <groupMarker name="internalDialogGroup"/>   <!-- not to be used by clients  -->
                <groupMarker name="dialogGroup"/>           <!-- to be used by clients      -->
                <separator name="fileSearchContextMenuActionsGroup"/> <!-- to be used by clients      -->
                <separator name="contextMenuActionsGroup"/> <!-- to be used by clients -->
                <separator name="occurencesActionsGroup"/> <!-- to be used by clients -->
                <separator name="extraSearchGroup"/> <!-- to be used by clients -->
         </menu>
<!-- (...) -->

答案 2 :(得分:1)

只要您知道菜单或工具栏的ID,就可以使用org.eclipse.ui.menus扩展点扩展这些ID。对于搜索菜单,此ID为org.eclipse.search.menu。如果您要向dialogGroup添加内容,请使用org.eclipse.search.menu?after=dialogGroup