在 Eclipse 项目资源管理器上下文菜单中添加 "Project" 上方的项目

Add item above "Project" in eclipse project explorer contextmenu

我正在为我们的开发环境开发基于 eclipse 的自定义 IDE。
在我的新视角中,我包含了一个 "Project Explorer" 并且我能够在上下文菜单中添加命令,但是当我在 "new" 类型中包含一个新的向导(项目向导)时,它会显示在 "Project" 向导

之下

而且我希望它高于它。

已附加此代码段的 plugin.xml

<extension point="org.eclipse.ui.navigator.navigatorContent">
      <commonWizard
              type="new"
              wizardId="dev.xxx.wizard.XXXProject">
              <enablement></enablement>
      </commonWizard>
</extension>

当我从工具栏或菜单栏访问 New 时显示它(在我将它添加为布局中的快捷方式之后,在 IPerspectiveFactory[=17 的实现中=]

但由于某种原因它没有出现在 "Project Explorer" 下。但它在 "Navigator View"

下工作正常

使用 org.eclipse.ui.perspectiveExtensions 扩展点为您的新项目向导定义 newWizardShortcut 条目。

类似于:

<extension
     point="org.eclipse.ui.perspectiveExtensions">
  <perspectiveExtension
        targetID="org.eclipse.jdt.ui.JavaPerspective">
     <newWizardShortcut
           id="org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard">
     </newWizardShortcut>
  </perspectiveExtension>

您可能需要 'reset perspective' 才能取回零钱。

您还可以在 'Shortcuts' 选项卡的 'Window > Customize Perspective' 对话框中设置这些快捷方式。

如 NewActionProvider.java

中所述

"Project..." 组中没有可容纳 "My Project Wizard" 的菜单组 :(。

/**
 * Adds a submenu to the given menu with the name "group.new" see
 * {@link ICommonMenuConstants#GROUP_NEW}). The submenu contains the following structure:
 * 
 * <ul>
 * <li>a new generic project wizard shortcut action, </li>
 * <li>a separator, </li>
 * <li>a set of context senstive wizard shortcuts (as defined by
 * <b>org.eclipse.ui.navigator.commonWizard</b>), </li>
 * <li>another separator, </li>
 * <li>a generic examples wizard shortcut action, and finally </li>
 * <li>a generic "Other" new wizard shortcut action</li>
 * </ul>
 */

"Project Explorer" 的 "New" 子菜单将始终采用这种格式,因此必须自己实现才能将项目添加到项目组中。亲爱的格雷格,谢谢你的时间。所以我要创建 NewActionProvider 的实现,如 https://cvalcarcel.wordpress.com/tag/commonwizard/

使用标准 ResourceNavigator ( org.eclipse.ui.views.ResourceNavigator) 视图而不是 ProjectExplorer

在那里,新向导将自动分为项目向导和非项目向导,而前者会自动添加到与 Project... 向导相同的组中(它们实际上添加在它上面,无论menuGroupId 设置了什么)。

因此,如果您想正确实现问题中所述的行为,则必须使用 Navigator 视图或扩展它。

(我知道这个问题是专门针对 ProjectExplorer 提出的,但我认为我的回答可能对有类似问题的人有用)