Java 如何在Eclipse RCP中从导入向导中删除类别?

Java 如何在Eclipse RCP中从导入向导中删除类别?,java,eclipse-rcp,wizard,plugin.xml,Java,Eclipse Rcp,Wizard,Plugin.xml,我需要将导入向导添加到我的eclipse rcp应用程序中。为此,我希望仅将现有向导用于我的类别。我在网上找到了几个例子,但没有多大帮助 我的问题是,我不仅有我的类别,还有一般类别。如果可能的话,我想删除它。事实上,我已经找到了一个解决方案,但它似乎不起作用。我曾尝试将提供的代码片段放入WorkbrenchWindowAdvisor和ActionBarAdvisor中,甚至在创建向导之前执行它,但包含5个可能向导的常规类别仍然存在。有什么建议,如何删除它或至少隐藏它 比尔, AlexG.听起来它

我需要将导入向导添加到我的eclipse rcp应用程序中。为此,我希望仅将现有向导用于我的类别。我在网上找到了几个例子,但没有多大帮助

我的问题是,我不仅有我的类别,还有一般类别。如果可能的话,我想删除它。事实上,我已经找到了一个解决方案,但它似乎不起作用。我曾尝试将提供的代码片段放入WorkbrenchWindowAdvisor和ActionBarAdvisor中,甚至在创建向导之前执行它,但包含5个可能向导的常规类别仍然存在。有什么建议,如何删除它或至少隐藏它

比尔,
AlexG.

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

一般类别(包括向导首选项、文件系统、现有项目、归档文件)由
org.eclipse.ui.ide
插件提供

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


查看它描述了如何检查和更改所使用的插件。

您可以通过使用扩展点和适当的
activityPatternBinding来选择在RCP应用程序中可见的贡献(不管他们在链接的页面上说了什么)

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

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


请注意,这个特定的解决方案将禁用(几乎)除文件>导入之外的所有Eclipse贡献。。。如果您想启用很多功能,而只禁用一些小部件,则需要进行大量挖掘。但是,找到正确的模式来实现这一点几乎是可能的。

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

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


其他一切正常。

谢谢你的回答,但很遗憾,我无法删除org.eclipse.ui.ide插件,因为它是其他插件所必需的。谢谢你的回答,我认为这是唯一正确的解决方案,因为某些原因,我无法使它工作。当我定义一个只与我的贡献匹配的活动时,我仍然可以看到一些其他贡献。@AlexanderGavrilov事实上,一些UI元素由于不同的原因仍然可见,这取决于具体情况。例如,您不能禁用“Java项目”向导之类的主向导。或者,如果您正在重用一些操作生成器,那么这些操作生成器可能会忽略活动。或者有时候Eclipse中会出现bug…@MarttiKärik:使用regex的优秀解决方案!
PlatformUI.getWorkbench().getActivitySupport().setEnabledActivityIds(...);