在依赖插件中扩展插件A中定义的ExportWizard

时间:2009-12-14 09:17:44

标签: eclipse eclipse-plugin eclipse-rcp

我有插件A,它通过org.eclipse.ui.exportWizard ExtensionPoint扩展了“导出向导”。 插件B依赖于插件A,是否可以将插件B中定义的WizardPages添加到插件A中? 我知道动态添加页面可以使用DynamicWizard和函数getNextPage使用相同的插件。

2 个答案:

答案 0 :(得分:1)

一种方法是在插件A中定义扩展点“plugin_a_wizard_page”,插件B对其进行扩展。这样,插件A可以扫描扩展扩展点的插件,并将所有这些插件添加到向导中。

你不必看看Buddy-Class-Loading。简而言之:PluginA必须定义Eclipse-BuddyPolicy: registered的策略,PluginB必须将自己注册为PluginA的伙伴。

请参阅:Eclipse RCP: ClassNotFoundException or How to make other bundle load my class

然后PluginA可以执行以下循环:

IExtensionRegistry registry = Platform.getExtensionRegistry();
IConfigurationElement[] wizardContributions = extensionRegistry
            .getConfigurationElementsFor(
                    "my.plugin",
                    "myExtensionPoint");

for (IConfigurationElement wizardContribution  : wizardContributions ) {
    try {
        IMyWizardContributionInterface listenerClass = (IContactsListener) wizardContribution.createExecutableExtension("class");
        // User your class and add it to the wizard
    } catch (final Exception e) {
         e.printStackTrace();
    }
}

答案 1 :(得分:0)

是的,只要插件B位于Plugin A所需的插件列表中(在插件A的清单中),您就可以在插件A中定义的任何扩展点中访问它。插件编辑器将帮助您,如果你指的是在你的向导扩展点中无法访问的类,它会给你一个警告。