1.WizardDialog是承载的主窗体; Wizard是中间的管理类,它管理着4个WizardPage; 而WizardPage是真正
的窗体中的可控制的UI界面,它填充了dialogArea区域,并且4个WizardPage都进行了初始化,并且都是setVisual(false)
它们在WizardDialog使用特殊的布局器,进行布局。
2.WizardDialog持有Wizard + currentWizardPage.
Wizard持有WizardDialog和4个WizardPage.
WizardPage持有Wizard--->所以,它也可以间接通过Wizard得到WizardDialog.
(但是一般,不这样做,一般直接调用它的setMessage()来更新WizardDialog上的界面)
3.WizardPage之间,WizardPage与Wizard之间的信息交互有三种方式:
1).在WizardPage中定义username/password,让每个页面存储自己的模型信息。
2).在Wizard中定义一个javabean来封装各个页面的模型,每个页面不再自己存储信息了,都来统一访问Wizard中的bean.
3).利用Wizard里面的DialogSettings来作为通用存储
4.如何控制WizardPage的isPageComplete信息,对于Text要注意addModifyListener。
同时由于页面的username改变了,所以有必要及时的update WizardDialog的buttons.
5.在UI(eclipse)中,父子类是经过精心设计的,但是仍然会有一些设计的问题。
如果直接操作父类得不到API时,就及时向下转型。
6.关于进度条与IRunnableWithProgress + IProgressMonitor的作用,参见例子:
http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/JFacesProgressMonitorDialog.htm