如何从Eclipse-RCP中的导入向导中删除类别?

我需要在我的eclipse-rcp应用程序中添加导入向导。 为此,我想使用只有我的类别的现有向导。 我在互联网上找到了几个例子,但它们并没有多大帮助。

我的问题是我不仅有我的类别,还有通用类别。 如果可能的话,我想删除它。 实际上我在这里找到了一个解决方案,但似乎它没有用。 我试图在WorkbrenchWindowAdvisor和ActionBarAdvisor中提供提供的代码片段,甚至在创建向导之前执行它,但是仍有5个可能向导的常规类别。 任何建议,如何删除它或至少隐藏?

BR,AlexG。

您可以使用org.eclipse.ui.activities扩展点和相应的activityPatternBinding来选择在您的RCP应用程序中可见的贡献(尽管他们在您链接的页面上说了什么)。

使用此扩展点,您可以使用与您自己的贡献匹配的模式定义一个活动(例如, pattern="[^\.]++\.(?!myplugin).*"匹配ID-s的贡献不是以com.myplugin)。 未启用此活动时,将排除除您自己的UI以外的所有贡献。

通过另一种活动,您将定义一个模式,其中包含您希望从其他插件中包含的贡献(例如, pattern=".*file\.import"pattern=".*file\.import"菜单中的“导入…”菜单项匹配)。 这是您将在WorkbenchAdvisor启用的活动

 PlatformUI.getWorkbench().getActivitySupport().setEnabledActivityIds(...); 

请注意,此特定解决方案将禁用(几乎)所有Eclipse贡献,但文件>导入…如果您希望启用许多function并且仅禁用小部件,则需要进行相当多的挖掘。 但是,最有可能找出正确的模式来实现这一目标。

听起来它与您的RCP运行配置和包含的插件有关。

常规类别(使用它的向导首选项,文件系统,现有项目,存档文件)由org.eclipse.ui.ide插件提供。

您的RCP应用程序是否需要此插件?

请查看与RCP中的“帮助”菜单相关的此问题,因为它描述了如何检查和更改所使用的插件。

您指出的解决方案的问题是它正在使用NewWizardRegistry来检索向导的类别。 相反,如果要删除导入向导,则应轮询Workbench以获取ImportWizardRegistry:

AbstractExtensionWizardRegistry importWizardRegistry =(AbstractExtensionWizardRegistry)PlatformUI.getWorkbench()。 getImportWizardRegistry() ;

其他一切都还可以。