How to remove a Category from Import wizard in Eclipse-RCP?

試著忘記壹切 提交于 2019-11-28 12:47:49

You can choose which contributions are visible in your RCP application by using org.eclipse.ui.activities extension point with appropriate activityPatternBinding (despite of what they say at the page that you linked).

Using this extension point you can define one activity with a pattern that matches anything but your own contributions (e.g. pattern="[^\.]++\.(?!myplugin).*" matches contributions wiht ID-s not starting with com.myplugin). This activity, when not being enabled, will exclude all the contributions from UI except your own.

With another acitvity you will define a pattern that includes the contributions that you'd like to include from other plugins (e.g. pattern=".*file\.import" matches the Import... menu item in File menu). This is the activity that you will enable in your WorkbenchAdvisor using

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

Please note that this particular solution will disable (almost) all of the Eclipse contributions except File > Import... It will take quite a bit of digging if you want to have a lot of functionality enabled and only small parts disabled. But it's mostly possible to figure out correct patterns to achieve this.

mecsco

It sounds like it's related to your RCP run configuration and the plug-ins included.

The General category (with it's wizards Preferences, File System, Existing Projects, Archive File) is contributed by the org.eclipse.ui.ide plug-in.

Is this plug-in required by your RCP application?

Have a look at this question related to the Help Menu in an RCP as it describes how to check and change the plug-ins used.

The problem with the solution you point out is that it is using the NewWizardRegistry to retrieve the categories of the wizards. Instead, if you want to remove the import wizards you should poll the Workbench for the ImportWizardRegistry:

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

Everything else is OK.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!