如何将两个工具栏管理器添加到Coolbar或任何其他替代品中?

问题描述 投票:0回答:1

我有两个视图 View1 和 View2 set1 工具栏项目对于视图来说是通用的,set2 工具栏项目应该仅与 set1 一起显示在 view2 中。

我正在使用 Eclipse 的菜单贡献功能。我创建了两个位置 URI 工具栏:com.omg.views.Objects.custom --> 其中有常用项目 toolbar:com.omg.views.Objects.custom1 --> 仅 View2 需要。

我尝试了以下方法:

CoolBar coolBar = new CoolBar(toolBarComposite, SWT.NONE);
GridData gridData1 = new GridData(GridData.FILL_BOTH);
coolBar.setLayoutData(gridData1);
CoolBarManager coolManager = new CoolBarManager(SWT.DEFAULT);


IMenuService menuService = (IMenuService)                             
PlatformUI.getWorkbench().getActiveWorkbenchWindow()
        .getService(IMenuService.class);
manager = new ToolBarManager(SWT.FLAT);
menuService.populateContributionManager(manager,
        "toolbar:com.omg.views.Objects.custom"); //$NON-NLS-1$
manager.createControl(coolBar);
manager.getControl().setLayoutData(new GridData(SWT.END, SWT.CENTER,    
true, false));

manager1 = new ToolBarManager(SWT.FLAT);
menuService.populateContributionManager(manager1,
        "toolbar:com.omg.views.Objects.custom1"); //$NON-NLS-1$
manager1.createControl(coolBar);
manager1.getControl().setLayoutData(new GridData(SWT.END, 
 SWT.CENTER, true, false));

coolManager.add(manager);
coolManager.add(manager1);
coolManager.createControl(toolBarComposite);
coolManager.getControl().setLayoutData(new GridData(SWT.END, 
SWT.CENTER, true, false));

不幸的是上面的代码对我不起作用,如果我得到一些建议那就太好了。

java swt eclipse-rcp toolbar rcp
1个回答
0
投票

我的应用程序中曾经有类似的东西,但是当我必须从 3.8.2 更新到 Eclipse 4.27 时,我没有找到任何通过 CoolBarManager 以编程方式配置工具栏项的方法,旧的方法不再有效。

通过在plugin.xml 中使用actionSets 和viewActions 配置这些工具栏项,我设法获得了相同的结果。第一个工具栏 (toolbar:com.omg.views.Objects.custom) 可以使用 actionSet 配置,因为您希望它全局显示,第二个工具栏 (toolbar:com.omg.views.Objects.custom1) 可以配置为viewAction,因此仅当 View1 可见时才启用它。您将需要具有实现 IWorkbenchWindowActionDelegate 的类来执行操作。这些插件项并不完整,可能需要填写一些额外的字段。

      <extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            id="com.package.actions"
            label="Label1"
            visible="true">
         <menu
               id="com.package.menu1"
               label="Label2"
               path="additions">
         </menu>
         <action
               class="class implementing the action"
               id="com.package.id.Class1"
               label="some label"
               state="false"
               style="push"
               toolbarPath="com.omg.views.Objects.custom"
               tooltip="some label">
            <enablement>
               <systemProperty
                     name="someProperty"
                     value="1"/>
            </enablement>
         </action>
      </actionSet>
   </extension>


   <extension
         point="org.eclipse.ui.viewActions">
      <viewContribution
            targetID="The id for View1"
            id="com.package.id.ViewContribution">
         <menu
               id="com.package.menu2"
               label="Label3"
         </menu>
         <action
               class="class implementing the action"
               enablesFor="1"
               icon="icon.gif"
               id="com.package.id.Class2"
               label="some label"
               style="push"
               toolbarPath="com.omg.views.Objects.custom1"
               tooltip="some label">
            <enablement>
               <systemProperty
                     name="someProperty"
                     value="1"/>
            </enablement>
         </action>
      </actionSet>
   </extension>
© www.soinside.com 2019 - 2024. All rights reserved.