Java tutorial
/* SWT/JFace in Action GUI Design with Eclipse 3.0 Matthew Scarpino, Stephen Holder, Stanford Ng, and Laurent Mihalkovic ISBN: 1932394273 Publisher: Manning */ import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; public class Ch11WizardComposite extends Composite { public Ch11WizardComposite(Composite parent) { super(parent, SWT.NONE); buildControls(); } protected void buildControls() { final Composite parent = this; FillLayout layout = new FillLayout(); parent.setLayout(layout); Button dialogBtn = new Button(parent, SWT.PUSH); dialogBtn.setText("Wizard Dialog..."); dialogBtn.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { WizardDialog dialog = new WizardDialog(parent.getShell(), new ProjectWizard()); dialog.open(); } public void widgetDefaultSelected(SelectionEvent e) { } }); } } class ProjectWizard extends Wizard { public ProjectWizard() { super(); } public void addPages() { addPage(new DirectoryPage()); addPage(new ChooseDirectoryPage()); addPage(new SummaryPage()); } public boolean performFinish() { DirectoryPage dirPage = getDirectoryPage(); if (dirPage.useDefaultDirectory()) { System.out.println("Using default directory"); } else { ChooseDirectoryPage choosePage = getChoosePage(); System.out.println("Using directory: " + choosePage.getDirectory()); } return true; } private ChooseDirectoryPage getChoosePage() { return (ChooseDirectoryPage) getPage(ChooseDirectoryPage.PAGE_NAME); } private DirectoryPage getDirectoryPage() { return (DirectoryPage) getPage(DirectoryPage.PAGE_NAME); } public boolean performCancel() { System.out.println("Perform Cancel called"); return true; } public IWizardPage getNextPage(IWizardPage page) { if (page instanceof DirectoryPage) { DirectoryPage dirPage = (DirectoryPage) page; if (dirPage.useDefaultDirectory()) { SummaryPage summaryPage = (SummaryPage) getPage(SummaryPage.PAGE_NAME); summaryPage.updateText("Using default directory"); return summaryPage; } } IWizardPage nextPage = super.getNextPage(page); if (nextPage instanceof SummaryPage) { SummaryPage summary = (SummaryPage) nextPage; DirectoryPage dirPage = getDirectoryPage(); summary.updateText(dirPage.useDefaultDirectory() ? "Using default directory" : "Using directory:" + getChoosePage().getDirectory()); } return nextPage; } } class SummaryPage extends WizardPage { public static final String PAGE_NAME = "Summary"; private Label textLabel; public SummaryPage() { super(PAGE_NAME, "Summary Page", null); } public void createControl(Composite parent) { Composite topLevel = new Composite(parent, SWT.NONE); topLevel.setLayout(new FillLayout()); textLabel = new Label(topLevel, SWT.CENTER); textLabel.setText(""); setControl(topLevel); setPageComplete(true); } public void updateText(String newText) { textLabel.setText(newText); } } class DirectoryPage extends WizardPage { public static final String PAGE_NAME = "Directory"; private Button button; public DirectoryPage() { super(PAGE_NAME, "Directory Page", null); } public void createControl(Composite parent) { Composite topLevel = new Composite(parent, SWT.NONE); topLevel.setLayout(new GridLayout(2, false)); Label l = new Label(topLevel, SWT.CENTER); l.setText("Use default directory?"); button = new Button(topLevel, SWT.CHECK); setControl(topLevel); setPageComplete(true); } public boolean useDefaultDirectory() { return button.getSelection(); } } class ChooseDirectoryPage extends WizardPage { public static final String PAGE_NAME = "Choose Directory"; private Text text; public ChooseDirectoryPage() { super(PAGE_NAME, "Choose Directory Page", null); } public void createControl(Composite parent) { Composite topLevel = new Composite(parent, SWT.NONE); topLevel.setLayout(new GridLayout(2, false)); Label l = new Label(topLevel, SWT.CENTER); l.setText("Enter the directory to use:"); text = new Text(topLevel, SWT.SINGLE); text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); setControl(topLevel); setPageComplete(true); } public String getDirectory() { return text.getText(); } }