EclipseRCP以编程方式获取工具栏贡献

EclipseRCP以编程方式获取工具栏贡献,eclipse,eclipse-rcp,Eclipse,Eclipse Rcp,我有一个RCP应用程序,我希望在执行某些操作时禁用/启用工具栏的某些元素。我的分机号码: <extension point="org.eclipse.ui.menus"> <menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar"> <toolbar id="vendor.toolbar1h"> <command commandId="vend

我有一个RCP应用程序,我希望在执行某些操作时禁用/启用工具栏的某些元素。我的分机号码:

<extension point="org.eclipse.ui.menus">
   <menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar">
      <toolbar id="vendor.toolbar1h">
         <command commandId="vendor.commands.MyCommand"
          icon="icon.png"
          id="MyButtonID1"
          style="toggle">
         </command>
      </toolbar>
   </menuContribution>
</extension>

是否存在获取主操作栏的方法?

否,无法访问主工具栏。
iactionbar
工具栏返回视图工具栏(视图选项卡的右侧)

但是,您可以基于激活的处理程序的启用来启用/禁用命令。处理程序负责确定其启用状态

编程上,如果您将
org.eclipse.core.commands.AbstractHandler子类化
,您将调用
setBaseEnabled(布尔状态)
,以确保它触发正确的事件


声明性地说,当通过
org.eclipse.ui.handlers
提供时,它还支持
enabledWhen
元素。如果您想访问主工具栏上的项目,一旦IHandler实现了IElementUpdater接口,eclipse的命令框架将使用该类更新命令的标签、工具提示甚至图像。有关更多详细信息,请参见:


我刚刚发现以下活动模式删除了外部工具菜单的贡献。这个很难弄清楚

       <activity id="org.eclipse.ui.navigator.resources.unwanted" name="unwanted"/> 

       <activityPatternBinding
       activityId="org.eclipse.ui.navigator.resources.unwanted"
       pattern=".*ExternalTool.*">
       </activityPatternBinding>

不幸的是,链接似乎已断开/过时。顺便说一句:“这个答案是否过时?”问题应该包括这样一个选项(断开的链接)
       <activity id="org.eclipse.ui.navigator.resources.unwanted" name="unwanted"/> 

       <activityPatternBinding
       activityId="org.eclipse.ui.navigator.resources.unwanted"
       pattern=".*ExternalTool.*">
       </activityPatternBinding>