在popupmenu中选中 一个菜单项时,我期望能够启动 一个wizard,进行简单的配置。
Eclipse PDT提供了NewWizard的模板,它是使用的org.eclipse.ui.newwizards扩展点;它在plugin.xml中定义了一个category和一个wizard。使用模板创建出来的插件必须要用new来启动,这不是我想要的。
查看Eclipseme和FatJar的源码,发现它们启动wizard用的都是同一种方式:
WizardDialog dialog = new WizardDialog(shell, this);
return (dialog.open() == Window.OK);
使用WizardDialog,将shell和Wizard对象的实例传入来构建WizardDialog后启动即可。
这也是NewWizard模板隐藏了的部分。
Wizard实现中需要注意的就是addPages方法,注意它还有一个addpage方法,两个方法之间是调用的关系;还有performFinish方法,当Wizard Finish后,这个方法会被调用;还有dialog.open(),如果Wizard以Finish结束,它是会返回OK的;如果被Cancel掉,则返回FALSE。
而WizardPage实现中的核心方法就是CreateControl了。这个CreateControl的实现很值得研究。因为,在这个方法中,要创建Page上面的很多控件,比如button、Text、Label;消息是怎么传递到这些控件的呢?