eclipsercp。如何为不同的透视图制作不同的工具栏项

eclipsercp。如何为不同的透视图制作不同的工具栏项,eclipse,eclipse-plugin,swt,eclipse-rcp,Eclipse,Eclipse Plugin,Swt,Eclipse Rcp,我对EclipseRCP开发还很陌生。 在我的EclipseRCP应用程序中有不同的透视图。我希望他们有不同的工具栏项目。根据官方文档,此工具栏的内容会根据活动透视图进行更改。但在谷歌搜索了很多次之后,我仍然不知道该怎么做 我的最佳想法如下: 首先,我创建项目并将它们添加到工具栏和coolbar protectedvoid fillCoolBar(ICoolBarManager coolBar){ IToolBarManager工具栏=新工具栏管理器(SWT.FLAT | SWT.RIGHT);

我对EclipseRCP开发还很陌生。 在我的EclipseRCP应用程序中有不同的透视图。我希望他们有不同的工具栏项目。根据官方文档,此工具栏的内容会根据活动透视图进行更改。但在谷歌搜索了很多次之后,我仍然不知道该怎么做

我的最佳想法如下:

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

protectedvoid fillCoolBar(ICoolBarManager coolBar){
IToolBarManager工具栏=新工具栏管理器(SWT.FLAT | SWT.RIGHT);
ActionContributionItem saveItem=新的ActionContributionItem(saveAction);
saveItem.setId(ApplicationActionBarAdvisor.SAVE);
工具栏。添加(保存项);
ActionContributionItem saveAllItem=新的ActionContributionItem(saveAllAction);
saveAllItem.setId(“saveAllItem”);
工具栏.添加(saveAllItem);
添加(新工具栏贡献项(工具栏,“主”);
}
然后,在透视类中,我重写createInitialLayout()方法,并隐藏不必要的项

@覆盖
公共void createInitialLayout(IPageLayout布局){
String editorArea=layout.getEditorArea();
PageLayout pl=(PageLayout)布局;
pl.addHiddenToolBarItemId(ApplicationActionBarAdvisor.SAVE);
pl.seteditorreavisible(假);
pl.addStandaloneView(View.ID,false,IPageLayout.LEFT,0.25f,editorArea);
pl.getViewLayout(View.ID).setCloseable(false);
}

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

使用
org.eclipse.ui.perspectiveExtensions
扩展点,为透视图设计一个
actionSet

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



注意:不要使用内部类,例如
PageLayout
,它们可能会随时更改,事实上该类在Eclipse 3中,但在Eclipse 4中已被删除。

什么是
PageLayout
?Eclipse4Package org.Eclipse.ui.internalPageLayout中没有这样的类,该类在Eclipse4中不存在,而且在任何情况下它都是内部的-您使用它就打破了这个限制。谢谢。我的透视类应该实现/扩展哪个类/接口?您将一如既往地实现
IPerspectiveFactory
。您可以使用
IPageLayout
,但不能将其转换为
PageLayout
。我明白了。但是,IPageLayout没有addHiddenToolBarItemId。(我使用PageLayout只是为了访问addHiddenToolBarItemId)。但除此之外,我需要使用layout.addActionSet(“saveItem”),对吗?addHiddenToolBarItemId不是官方API的一部分,所以您不能使用它。在Eclipse的网络上有很多写得非常糟糕的代码,当您转到Eclipse4时,很多代码都会中断。