要在地址簿应用程序中创建 ContactWizard 类,我们需要创建继承向导基本实现的子类并覆盖下列方法:
public void addPages() - 该方法提供了一个挂钩,以便在向最终用户显示向导之前给向导添加其它页面。要给向导添加新的页面,只要如 清单 3 所示的那样调用 addPage 方法即可。在 ContactWizard 类中定义了两个页面。我们将在下一节中研究如何创建新的页面。
清单 3. ContactWizard 类中的 addPages 方法
1 public void addPages()
2 {
3 page1 = new BasicContactPage(selection);
4 page2 = new AddressContactPage(selection);
5 addPage(page1);
6 addPage(page2);
7 }
8
2 {
3 page1 = new BasicContactPage(selection);
4 page2 = new AddressContactPage(selection);
5 addPage(page1);
6 addPage(page2);
7 }
8
public boolean performFinish() - 当用户点击 Finish 按钮时执行这个方法。在 ContactWizard 中,用这个方法收集向导的每个页面上每个域中的数据并把它们填充到一个域对象中。请参阅 清单 4。
清单 4. ContactWizard 类中的 performFinish 方法
1 public boolean performFinish()
2 {
3 Contact contact = new Contact();
4 contact.setFamilyName(page1.getFamilyName());
5 contact.setGivenName(page1.getGivenName());
6 contact.setBusinessPhone(page1.getBusinessPhone());
7 contact.setHomePhone(page1.getHomePhone());
8 contact.setEmailAddress(page1.getEmail());
9
10 AddressBook.addContact(contact);
11
12 return true;
13 }
2 {
3 Contact contact = new Contact();
4 contact.setFamilyName(page1.getFamilyName());
5 contact.setGivenName(page1.getGivenName());
6 contact.setBusinessPhone(page1.getBusinessPhone());
7 contact.setHomePhone(page1.getHomePhone());
8 contact.setEmailAddress(page1.getEmail());
9
10 AddressBook.addContact(contact);
11
12 return true;
13 }
清单 5 显示了具有 addPages 和 performFinish 方法的完整类。
清单 5. ContactWizard 类
1 ...
2 public class ContactWizard extends Wizard
3 {
4 private BasicContactPage page1;
5 private AddressContactPage page2;
6 private ISelection selection;
7 public ContactWizard()
8 {
9 super();
10 setNeedsProgressMonitor(true);
11 }
12 public void addPages()
13 {
14 page1 = new BasicContactPage(selection);
15 page2 = new AddressContactPage(selection);
16 addPage(page1);
17 addPage(page2);
18 }
19 public boolean performFinish()
20 {
21 Contact contact = new Contact();
22 contact.setFamilyName(page1.getFamilyName());
23 contact.setGivenName(page1.getGivenName());
24 contact.setBusinessPhone(page1.getBusinessPhone());
25 contact.setHomePhone(page1.getHomePhone());
26 contact.setEmailAddress(page1.getEmail());
27 AddressBook.addContact(contact);
28 return true;
29 }
30 }
31
2 public class ContactWizard extends Wizard
3 {
4 private BasicContactPage page1;
5 private AddressContactPage page2;
6 private ISelection selection;
7 public ContactWizard()
8 {
9 super();
10 setNeedsProgressMonitor(true);
11 }
12 public void addPages()
13 {
14 page1 = new BasicContactPage(selection);
15 page2 = new AddressContactPage(selection);
16 addPage(page1);
17 addPage(page2);
18 }
19 public boolean performFinish()
20 {
21 Contact contact = new Contact();
22 contact.setFamilyName(page1.getFamilyName());
23 contact.setGivenName(page1.getGivenName());
24 contact.setBusinessPhone(page1.getBusinessPhone());
25 contact.setHomePhone(page1.getHomePhone());
26 contact.setEmailAddress(page1.getEmail());
27 AddressBook.addContact(contact);
28 return true;
29 }
30 }
31