Eclipse RCP。如何为不同的Perspectives制作不同的ToolBarItems

时间:2018-02-12 10:57:20

标签: eclipse eclipse-plugin swt eclipse-rcp

我是Eclipse RCP开发的新手。 在我的Eclipse RCP应用程序中,有不同的观点。我希望他们有不同的ToolBarItems。根据官方文档,此工具栏的内容根据活动透视图进行更改。但经过大量的谷歌搜索,我仍然不知道如何。

我最好的想法如下:

首先我创建项目,然后将它们添加到工具栏和coolbar

protected void fillCoolBar(ICoolBarManager coolBar) {
    IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);

    ActionContributionItem saveItem = new ActionContributionItem(saveAction);
    saveItem.setId(ApplicationActionBarAdvisor.SAVE);
    toolbar.add(saveItem);

    ActionContributionItem saveAllItem = new ActionContributionItem(saveAllAction);
    saveAllItem.setId("saveAllItem");
    toolbar.add(saveAllItem);

    coolBar.add(new ToolBarContributionItem(toolbar, "main"));
}

然后,在Perspective类中,我重写了createInitialLayout()方法,我只是隐藏了不必要的项目。

@Override
public void createInitialLayout(IPageLayout layout) {
    String editorArea = layout.getEditorArea();
    PageLayout pl = (PageLayout) layout;
    pl.addHiddenToolBarItemId(ApplicationActionBarAdvisor.SAVE);
    pl.setEditorAreaVisible(false); 
    pl.addStandaloneView(View.ID,  false, IPageLayout.LEFT, 0.25f, editorArea);
    pl.getViewLayout(View.ID).setCloseable(false);
}

它不起作用,但我不知道我错过了什么。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:3)

使用org.eclipse.ui.perspectiveExtensions扩展点并将actionSet与视角相对应。

例如,这是JDT插件的一部分:

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

  <perspectiveExtension targetID="org.eclipse.debug.ui.DebugPerspective">
     <perspectiveShortcut id="org.eclipse.jdt.ui.JavaPerspective"/>
     <perspectiveShortcut id="org.eclipse.jdt.ui.JavaBrowsingPerspective"/>
     <actionSet id="org.eclipse.jdt.ui.JavaActionSet"/>
     <showInPart id="org.eclipse.jdt.ui.PackageExplorer"/>
  </perspectiveExtension>

注意:使用内部类,例如PageLayout,它们可能随时更改,实际上这个类在Eclipse 3中,但已在Eclipse 4中删除。