我有插件A,它通过org.eclipse.ui.exportWizard ExtensionPoint扩展了“导出向导”。 插件B依赖于插件A,是否可以将插件B中定义的WizardPages添加到插件A中? 我知道动态添加页面可以使用DynamicWizard和函数getNextPage使用相同的插件。
答案 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中定义的任何扩展点中访问它。插件编辑器将帮助您,如果你指的是在你的向导扩展点中无法访问的类,它会给你一个警告。