SampleDialog Class


package com.ibm.etools.systems.samples.ui.frameworks.dialogs;

import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;

import com.ibm.etools.systems.samples.*;

import com.ibm.etools.systems.core.ui.dialogs.SystemPromptDialog;
import com.ibm.etools.systems.core.ui.*;
import com.ibm.etools.systems.core.ui.widgets.*;
import com.ibm.etools.systems.core.ui.messages.*;
import com.ibm.etools.systems.core.ui.validators.*;

/**
 * A simple example of using the SystemPromptDialog class as the basis for a new dialog.
 */
public class SampleDialog extends SystemPromptDialog 
{
	// gui widgets
	private SystemHistoryCombo namePrompt;
	private Text yearPrompt, monthPrompt, dayPrompt;
	// input
	private SampleCustomer inpCust;
	// validators
	private ISystemValidator nameValidator, yearValidator, monthValidator, dayValidator;
	// message
	private SystemMessage errorMessage;

	/**
	 * Constructor for SampleDialog.
	 */
	public SampleDialog(Shell shell) 
	{
		super(shell, SamplesPlugin.getString("com.ibm.etools.systems.samples.ui.dialogs.dialog1.title"));
		setHelp(SamplesPlugin.HELPPREFIX + "dlg11000");
		nameValidator = new SampleNameValidator();
		yearValidator = new SampleBirthYearValidator();
		monthValidator = new SampleBirthMonthValidator();
		dayValidator = new SampleBirthDayValidator();
	}

	/**
	 * Required parent override.
* This is where we populate the client area */ protected Control createInner(Composite parent) { int nbrColumns = 2; Composite parentComposite = SystemWidgetHelpers.createComposite(parent, nbrColumns); // add gui widgets... SystemWidgetHelpers.createLabel(parentComposite, SamplesPlugin.getResourceBundle(), "com.ibm.etools.systems.samples.ui.dialogs.dialog1.name."); boolean readonly = false; namePrompt = SystemWidgetHelpers.createHistoryCombo(parentComposite, null, "name.history.key", readonly, SamplesPlugin.getResourceBundle(), "com.ibm.etools.systems.samples.ui.dialogs.dialog1.name.tooltip"); addSeparatorLine(parentComposite, nbrColumns); boolean wantBorder = false; SystemWidgetHelpers.createLabel(parentComposite, SamplesPlugin.getResourceBundle(), "com.ibm.etools.systems.samples.ui.dialogs.dialog1.birthday.verbage.", nbrColumns, wantBorder); yearPrompt = SystemWidgetHelpers.createLabeledTextField(parentComposite, null, SamplesPlugin.getResourceBundle(), "com.ibm.etools.systems.samples.ui.dialogs.dialog1.birthday.year."); monthPrompt = SystemWidgetHelpers.createLabeledTextField(parentComposite, null, SamplesPlugin.getResourceBundle(), "com.ibm.etools.systems.samples.ui.dialogs.dialog1.birthday.month."); dayPrompt = SystemWidgetHelpers.createLabeledTextField(parentComposite, null, SamplesPlugin.getResourceBundle(), "com.ibm.etools.systems.samples.ui.dialogs.dialog1.birthday.day."); // if given an existing object, prefill it... inpCust = (SampleCustomer)getInputObject(); if (inpCust != null) { namePrompt.setText(inpCust.getName()); yearPrompt.setText(inpCust.getYear()); monthPrompt.setText(inpCust.getMonth()); dayPrompt.setText(inpCust.getDay()); } // add modify listeners... namePrompt.addModifyListener( new ModifyListener() { public void modifyText(ModifyEvent event) { validateName(); } } ); yearPrompt.addModifyListener( new ModifyListener() { public void modifyText(ModifyEvent event) { validateYear(); } } ); monthPrompt.addModifyListener( new ModifyListener() { public void modifyText(ModifyEvent event) { validateMonth(); } } ); dayPrompt.addModifyListener( new ModifyListener() { public void modifyText(ModifyEvent event) { validateDay(); } } ); // initialize enabled state... setPageComplete(isPageComplete()); return parentComposite; } /** * Required parent override.
* This is where we return the first input control, to give it focus when the dialog appears. */ protected Control getInitialFocusControl() { return namePrompt.getCombo(); } /** * Typical parent override.
* This is where we get control when the user presses OK. */ protected boolean processOK() { Control controlInError = null; if (!validateName()) controlInError = namePrompt.getCombo(); if ((controlInError==null) && !validateYear()) controlInError = yearPrompt; if ((controlInError==null) && !validateMonth()) controlInError = monthPrompt; if ((controlInError==null) && !validateDay()) controlInError = dayPrompt; if (controlInError != null) controlInError.setFocus(); else { SampleCustomer newCust = inpCust; if (newCust == null) newCust = new SampleCustomer(); newCust.setName(namePrompt.getText().trim()); newCust.setYear(yearPrompt.getText().trim()); newCust.setMonth(monthPrompt.getText().trim()); newCust.setDay(dayPrompt.getText().trim()); setOutputObject(newCust); SystemMessage completionMsg = null; if (inpCust == null) completionMsg = SamplesPlugin.getPluginMessage("SPPD1010"); else completionMsg = SamplesPlugin.getPluginMessage("SPPD1011"); completionMsg.makeSubstitution(newCust.getName()); SystemMessageDialog msgDlg = new SystemMessageDialog(getShell(), completionMsg); msgDlg.open(); } return isPageComplete(); } // --------------------- // Validation methods... // --------------------- /** * Validate the customer name prompt. We only ensure it is not-empty. */ protected boolean validateName() { String input = namePrompt.getText().trim(); setErrorMessageAndPageCompletionStatus(nameValidator.validate(input)); return (errorMessage==null); } /** * Validate the customer birth year prompt. */ protected boolean validateYear() { String input = yearPrompt.getText().trim(); setErrorMessageAndPageCompletionStatus(yearValidator.validate(input)); return (errorMessage==null); } /** * Validate the customer birth month prompt. */ protected boolean validateMonth() { String input = monthPrompt.getText().trim(); setErrorMessageAndPageCompletionStatus(monthValidator.validate(input)); return (errorMessage==null); } /** * Validate the customer birth day prompt. */ protected boolean validateDay() { String input = dayPrompt.getText().trim(); setErrorMessageAndPageCompletionStatus(dayValidator.validate(input)); return (errorMessage==null); } /** * A convenience method that issues or clears the error message on the message line, * and sets the page completion status */ protected void setErrorMessageAndPageCompletionStatus(SystemMessage errorMessage) { this.errorMessage = errorMessage; if (errorMessage == null) clearErrorMessage(); else setErrorMessage(errorMessage); setPageComplete(isPageComplete()); } /** * Return true if the OK button can be enabled. */ protected boolean isPageComplete() { return ((errorMessage == null) && (namePrompt.getText().trim().length()>0) && (yearPrompt.getText().trim().length()>0) && (monthPrompt.getText().trim().length()>0) && (dayPrompt.getText().trim().length()>0)); } }


Copyright IBM Corporation 2002, 2003.