我们在3.x上有一个Eclipse IDE应用程序,它使用各种newWizards来允许用户创建不同的文件。尽管这些文件在内容上略有不同,但向导的结构非常相似。
因此,一个合理的面向对象的方法是从同一个类中实例化不同的向导,并用不同的数据初始化它们。
问题:
要确定哪个向导需要哪种数据,我们需要一种方法来区分不同的已经实例化的向导(例如在调用向导的init方法期间)。
有没有办法这样做?它会例如如果有人知道从实例化向导中获取扩展点中定义的向导ID的方法,请提供帮助。
答案 0 :(得分:2)
如果您的向导实现IExecutableExtension
,它将传递配置元素,该元素表示为其创建的扩展。
您还可以使用扩展工厂,因为您指定了实现IExecutableExtensionFactory
的类型。
该界面允许您控制提供给扩展点(在您的情况下为向导)的实例的方式。
扩展示例:
<extension point="org.eclipse.ui.wizards">
<newWizard
name="..."
class="com.example.WizardFactory">
</newWizard>
请注意,扩展工厂也可能会在创建扩展程序的可执行类之前实现IExecutableExtension
以获取对扩展属性的访问权。