在自己的Eclipse RCP 产品中,可能经常要集成第三方的插件,来满足特定的功能需要。但是对于一些不需要的功能,通常的做法是该插件修改源代码。如果出于lisence或非开源的原因,无法修改,或删除其源代码,就要考虑如何在RCP中控制其扩展点的加载。
可以在RCP的WorkbenchWindowAdvisor.preWindowOpen中,取到所有加载的扩展点,然后进行相应的过滤处理。首先使用 WorkbenchPlugin.getDefault() 得到WorkbenchPlugin;通过 WorkbenchPlugin可以获取各种类型的扩展点的注册表。WorkbenchPlugin.getActionSetRegistry() 得到的注册表中存有所有的ActionSet扩展点;WorkbenchPlugin.getViewRegistry()得到了所有的views扩展点。 通过注册表的removeExtension() 可以去掉相应的扩展点,使其不被加载到RCP中。
可以在RCP的WorkbenchWindowAdvisor.preWindowOpen中,取到所有加载的扩展点,然后进行相应的过滤处理。首先使用 WorkbenchPlugin.getDefault() 得到WorkbenchPlugin;通过 WorkbenchPlugin可以获取各种类型的扩展点的注册表。WorkbenchPlugin.getActionSetRegistry() 得到的注册表中存有所有的ActionSet扩展点;WorkbenchPlugin.getViewRegistry()得到了所有的views扩展点。 通过注册表的removeExtension() 可以去掉相应的扩展点,使其不被加载到RCP中。