使用 IPageLayout.addActionSet()

Use of IPageLayout.addActionSet()

我正在使用以下方法定义我自己的观点:

<extension point="org.eclipse.ui.perspectives">

在我的 IPerspectiveFactory::createInitialLayout() 实现中,我想使用 IPageLayout.addActionSet() 指向一个新的动作集。但是动作集已被弃用;推荐的替代方案是什么?

我想添加新动作集的原因是我希望 运行 菜单显示调试动作,而不是 运行 动作。如果我使用 layout.addActionSet(IDebugUIConstants.LAUNCH_ACTION_SET) 我会得到两者。所以我想我会用其中的调试变体定义我自己的动作集。但我想使用一个未弃用的 API。推荐什么

另一种方法是对菜单项使用 org.eclipse.ui.menus 扩展点。但是,您不能将其添加到透视图,而是必须使用 visibleWhen 元素来控制何时显示菜单。

例如,当插件开发透视图处于活动状态或正在使用搜索操作集时,PDE 插件将菜单添加到导航菜单的方式如下:

  <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            locationURI="menu:navigate?after=open.ext2">
         <separator
               name="org.eclipse.pde.ui.openPluginArtifactSeparator"
               visible="true">
         </separator>
         <command
               commandId="org.eclipse.pde.ui.openPluginArtifact"
               icon="$nl$/icons/obj16/open_artifact_obj.gif"
               label="%pluginsearch.action.menu.name">
            <visibleWhen>
            <or>
                <with
                     variable="activeWorkbenchWindow.currentPerspective">
                    <equals
                        value="org.eclipse.pde.ui.PDEPerspective">
                    </equals>
                </with>
                <with
                     variable="activeContexts">
                  <iterate
                        operator="or">
                     <equals
                           value="org.eclipse.pde.ui.SearchActionSet">
                     </equals>
                  </iterate>
               </with>
           </or>
            </visibleWhen>
         </command>
      </menuContribution>

尽管操作集已被弃用,但它们在很长一段时间内都不会被删除,因为许多 Eclipse 代码仍在使用它们,因此您可能只想坚持使用它们。