最近的一个feature request又需要做一个Dialog,我又一次面临在Eclipse平台的众多Dialog里选择一个来实现功能。借此再把这些dialog整理一下
1,SWT的Dialog
(1) 最简单的Dialog,只是封装了一个Shell。完全就可以当成一个Shell。
(2) 我还一直以为它和JFace的dialog差不多重。悲惨的是我的一个dialog就是用的swt的dialog,还自己负责readAndDispatch()
2,JFace的Window
(1) 也是对一个Shell的封装,地位和SWT的Dialog。
(2) 它open()方法里封装readAndDispatch(),Client可以只关心Dialog了
(3) 维护了parentShell,处理有有关模态和非模态的逻辑
3,JFace的Dialog
(1) 继承JFace的Window,也就是说,JFace的Dialog和SWT的Dialog一点关系都没有
(2) 最简单的Dialog,只有两个button:OK 或 Cancel
(3) TrayDialog, 继承于Dialog,实现Help相关的内容,比如经常在Dialog里看到的小问号
(4) TitleAreaDialog,继承于TrayDialog,实现一个Title Area,可以放图片,Message等,一般比较重的Dialog用它
(5) WizardDialog,继承于TitleAreaDialog,越来越重了。