diff -r 000000000000 -r 522a326673b6 sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/wizard/NewProjectWizardTabbedPropertiesPage.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/wizard/NewProjectWizardTabbedPropertiesPage.java Thu Mar 11 19:08:43 2010 +0200 @@ -0,0 +1,932 @@ +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// ${file_name} +// +// + +package com.symbian.smt.gui.wizard; + +import java.util.List; + +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.TabFolder; +import org.eclipse.swt.widgets.TabItem; + +import com.symbian.smt.gui.PersistentDataStore; +import com.symbian.smt.gui.smtwidgets.AdvancedOptionsWidget; +import com.symbian.smt.gui.smtwidgets.BuildControlWidget; +import com.symbian.smt.gui.smtwidgets.FilterWidget; +import com.symbian.smt.gui.smtwidgets.IgnoreWidget; +import com.symbian.smt.gui.smtwidgets.ModelControlWidget; +import com.symbian.smt.gui.smtwidgets.ModelLabelsWidget; +import com.symbian.smt.gui.smtwidgets.ValidModelDefinedListener; +import com.symbian.smt.gui.smtwidgets.ValidModelEvent; +import com.symbian.smt.gui.smtwidgets.resources.ResourcesWidget; + +public class NewProjectWizardTabbedPropertiesPage extends WizardPage implements + ValidModelDefinedListener { + + // Custom composite SWT widgets + private ModelLabelsWidget modelLabelsWidget; + private ResourcesWidget resourcesWidget; + private ModelControlWidget modelControlWidget; + private FilterWidget filterWidget; + private IgnoreWidget ignoreWidget; + private BuildControlWidget buildWidget; + private AdvancedOptionsWidget advancedOptionsWidget; + private TabFolder tabFolder; + + /** + * Creates a wizard page for entering optional System Model information + * + * @return void + */ + protected NewProjectWizardTabbedPropertiesPage(ISelection selection) { + super("wizardPage"); + setTitle("System Model Manager Wizard"); + setDescription("Enter any optional configuration information for the System Model Diagram"); + } + + public void createControl(Composite parent) { + Composite container = new Composite(parent, SWT.NULL); + + container.setLayout(new FillLayout(SWT.VERTICAL)); + + setControl(container); + + tabFolder = new TabFolder(container, SWT.NONE); + + final TabItem labelsTabItem = new TabItem(tabFolder, SWT.NONE); + labelsTabItem.setText("Labels"); + modelLabelsWidget = new ModelLabelsWidget(tabFolder, SWT.NONE); + labelsTabItem.setControl(modelLabelsWidget); + + final TabItem resourcesTabItem = new TabItem(tabFolder, SWT.NONE); + resourcesTabItem.setText("Resources"); + resourcesWidget = new ResourcesWidget(tabFolder, SWT.NONE); + resourcesTabItem.setControl(resourcesWidget); + + final TabItem modelControlTabItem = new TabItem(tabFolder, SWT.NONE); + modelControlTabItem.setText("Model Control"); + modelControlWidget = new ModelControlWidget(tabFolder, SWT.NONE); + modelControlTabItem.setControl(modelControlWidget); + + final TabItem filtersTabItem = new TabItem(tabFolder, SWT.NONE); + filtersTabItem.setText("Filters"); + filterWidget = new FilterWidget(tabFolder, SWT.NONE); + filtersTabItem.setControl(filterWidget); + + final TabItem ignoreListTabItem = new TabItem(tabFolder, SWT.NONE); + ignoreListTabItem.setText("Ignore List"); + ignoreWidget = new IgnoreWidget(tabFolder, SWT.NONE); + ignoreListTabItem.setControl(ignoreWidget); + + final TabItem buildControlTabItem = new TabItem(tabFolder, SWT.NONE); + buildControlTabItem.setText("Build Options"); + buildWidget = new BuildControlWidget(tabFolder, SWT.NONE, false); + buildControlTabItem.setControl(buildWidget); + + final TabItem advancedOptionsTabItem = new TabItem(tabFolder, SWT.NONE); + advancedOptionsTabItem.setText("Advanced Options"); + advancedOptionsWidget = new AdvancedOptionsWidget(tabFolder, SWT.NONE); + advancedOptionsTabItem.setControl(advancedOptionsWidget); + } + + @Override + public void dispose() { + if (buildWidget != null) { + buildWidget.removeModelListener(this); + } + + if (modelControlWidget != null) { + modelControlWidget.removeModelListener(this); + } + + super.dispose(); + } + + /** + * Returns the advanced options or an empty string array if no advanced + * options have been specified + * + * @return String the advanced options + */ + public String[] getAdvancedOptions() { + return advancedOptionsWidget.getAdvancedOptions(); + } + + /** + * Returns the shapes files or an empty string if no shapes file has been + * specified + * + * @return String[] + */ + public String[] getBorderShapesFiles() { + return resourcesWidget.getBorderShapesFiles(); + } + + // Build Options + + /** + * Returns the shapes files or an empty string if no shapes file has been + * specified + * + * @return String[] + */ + public String[] getBorderStylesFiles() { + return resourcesWidget.getBorderStylesFiles(); + } + + // Model Labels Setters & Getters + + /** + * Returns the shapes files or an empty string if no shapes file has been + * specified + * + * @return String[] + */ + public String[] getColoursFiles() { + return resourcesWidget.getColoursFiles(); + } + + /** + * Returns the copyright text from the Model Labels widget + * + * @return String + */ + public String getCopyrightText() { + return modelLabelsWidget.getCopyrightText(); + } + + /** + * Returns the border shapes files or an empty string if no border shapes + * file has been specified + * + * @return String + */ + public String[] getDefaultBorderShapesFiles() { + return resourcesWidget.getSelectedBorderShapesFiles(); + } + + /** + * Returns the border styles files or an empty string if no border styles + * file has been specified + * + * @return String[] + */ + public String[] getDefaultBorderStylesFiles() { + return resourcesWidget.getSelectedBorderStylesFiles(); + } + + /** + * Returns the colours files or an empty string if no colours file has been + * specified + * + * @return String + */ + public String[] getDefaultColoursFiles() { + return resourcesWidget.getSelectedColoursFiles(); + } + + /** + * Returns the dependencies files or an empty string if no dependencies file + * has been specified + * + * @return String[] + */ + public String[] getDefaultDependenciesFiles() { + return resourcesWidget.getSelectedDependenciesFiles(); + } + + /** + * Returns the default distribution text value from the Model Labels widget + * + * @return String + */ + public String getDefaultDistributionText() { + return modelLabelsWidget.getSelectedDistributionText(); + } + + /** + * Returns the levels files or an empty string if no levels file has been + * specified + * + * @return String[] + */ + public String[] getDefaultLevelsFiles() { + return resourcesWidget.getSelectedLevelsFiles(); + } + + /** + * Returns the localisation files or an empty string if no localisation file + * has been specified + * + * @return String[] + */ + public String[] getDefaultLocalisationFiles() { + return resourcesWidget.getSelectedLocalisationFiles(); + } + + /** + * Returns the default model version text value from the Model Label widget + * + * @return String + */ + public String getDefaultModelVersionText() { + return modelLabelsWidget.getSelectedModelVersionText(); + } + + /** + * Returns the patterns files or an empty string if no patterns file has + * been specified + * + * @return String[] + */ + public String[] getDefaultPatternsFiles() { + return resourcesWidget.getSelectedPatternsFiles(); + } + + /** + * Returns the default printed DPI value from the Model Control widget + * + * @return String + */ + public String getDefaultPrintedDpi() { + return modelControlWidget.getSelectedPrintedDpi(); + } + + /** + * Returns the S12 XML files or an empty string if no system info file has + * been specified + * + * @return String[] + */ + public String[] getDefaultS12XmlFiles() { + return resourcesWidget.getSelectedS12XmlFiles(); + } + + /** + * Returns the shapes files or an empty string if no shapes file has been + * specified + * + * @return String[] + */ + public String[] getDefaultShapesFiles() { + return resourcesWidget.getSelectedShapesFiles(); + } + + /** + * Returns the system info files or an empty string if no system info file + * has been specified + * + * @return String[] + */ + public String[] getDefaultSystemInfoFiles() { + return resourcesWidget.getSelectedSystemInfoFiles(); + } + + /** + * Returns the shapes files or an empty string if no shapes file has been + * specified + * + * @return String[] + */ + public String[] getDependenciesFiles() { + return resourcesWidget.getDependenciesFiles(); + } + + // Model Control Setters & Getters + + /** + * Returns the distribution text values from the Model Labels widget + * + * @return String[] + */ + public String[] getDistributionTexts() { + return modelLabelsWidget.getDistributionTexts(); + } + + /** + * Returns the filter items from the Filter Widget + * + * @return String[] + */ + public String[] getFilterItems() { + return filterWidget.getFilterItems(); + } + + /** + * Returns a boolean value from the Model Control widget indicating if the + * Fix Item Size button has been selected + * + * @return a Boolean value specifying whether or not the item size is fixed. + */ + public Boolean getFixItemSize() { + return modelControlWidget.getFixItemSize(); + } + + /** + * Returns a boolean value from the Model Control widget indicating if the + * Highlight Core OS button has been selected + * + * @return Boolean + */ + public Boolean getHighlightCoreOS() { + return modelControlWidget.getHighlightCoreOS(); + } + + /** + * Returns a list of the ignore items from the Ignore Items Widget + * + * @return List + */ + public List getIgnoreItems() { + return ignoreWidget.getIgnoreItems(); + } + + /** + * Returns the level of detail from the Model Control widget + * + * @return String + */ + public String getLevelOfDetail() { + return modelControlWidget.getLevelOfDetail(); + } + + /** + * Returns the levels files or an empty string if no shapes file has been + * specified + * + * @return String[] + */ + public String[] getLevelsFiles() { + return resourcesWidget.getLevelsFiles(); + } + + /** + * Returns the shapes files or an empty string if no shapes file has been + * specified + * + * @return String[] + */ + public String[] getLocalisationFiles() { + return resourcesWidget.getLocalisationFiles(); + } + + /** + * Returns the model name from the Model Labels widget + * + * @return String + */ + public String getModelName() { + return modelLabelsWidget.getModelName(); + } + + /** + * Returns the text for the model version from the Model Labels widget + * + * @return String + */ + public String getModelVersion() { + return modelLabelsWidget.getModelVersion(); + } + + /** + * Returns the model version text values from the Model Labels widget + * + * @return String[] + */ + public String[] getModelVersionTexts() { + return modelLabelsWidget.getModelVersionTexts(); + } + + public String getOutputFilename() { + return buildWidget.getOutputFilename(); + } + + /** + * Returns the shapes files or an empty string if no shapes file has been + * specified + * + * @return String[] + */ + public String[] getPatternsFiles() { + return resourcesWidget.getPatternsFiles(); + } + + /** + * Returns the printed DPI values from the Model Control widget + * + * @return String + */ + public String[] getPrintedDpis() { + return modelControlWidget.getPrintedDpis(); + } + + /** + * Returns the S12 XML files or an empty string if no shapes file has been + * specified + * + * @return String[] + */ + public String[] getS12XmlFiles() { + return resourcesWidget.getS12XmlFiles(); + } + + /** + * Returns the selected distribution text value from the Model Labels widget + * + * @return String + */ + public String getSelectedDistributionText() { + return modelLabelsWidget.getSelectedDistributionText(); + } + + /** + * Returns the selected model version text value from the Model Label widget + * + * @return String + */ + public String getSelectedModelVersionText() { + return modelLabelsWidget.getSelectedModelVersionText(); + } + + /** + * Returns the selected printed DPI value from the Model Control widget + * + * @return String + */ + public String getSelectedPrintedDpi() { + return modelControlWidget.getSelectedPrintedDpi(); + } + + // Resources Setters & Getters + + /** + * Returns the shapes files or an empty string if no shapes file has been + * specified + * + * @return String[] + */ + public String[] getShapesFiles() { + return resourcesWidget.getShapesFiles(); + } + + /** + * Returns a boolean value indicating if the Suppress Mouseover Effects + * button has been selected + * + * @return Boolean + */ + public Boolean getSuppressMouseOverEffect() { + return modelControlWidget.getSuppressMouseOverEffect(); + } + + /** + * Returns the shapes files or an empty string if no shapes file has been + * specified + * + * @return String[] + */ + public String[] getSystemInfoFiles() { + return resourcesWidget.getSystemInfoFiles(); + } + + /** + * Returns the system name from the Model Labels widget + * + * @return String + */ + public String getSystemName() { + return modelLabelsWidget.getSystemName(); + } + + /** + * Returns the text for the system version from the Model Labels widget + * + * @return String + */ + public String getSystemVersion() { + return modelLabelsWidget.getSystemVersion(); + } + + /** + * This method is for PDE JUnit testing purposes. + * + * @return the tabFolder + */ + public TabFolder getTabFolder() { + return tabFolder; + } + + public void initialize(PersistentDataStore store) { + filterWidget.setFilterItems(store.getFilterHasItems()); + + ignoreWidget.setIgnoreItems(store.getIgnoreItems()); + + // Model Control + modelControlWidget.initialisePrintedDpi(store); + modelControlWidget.setLevelOfDetail(store.getLevelOfDetail()); + modelControlWidget.setHighlightCoreOS(store.getHighlightCoreOS()); + modelControlWidget.setSuppressMouseOverEffect(store + .getSuppressMouseOverEffect()); + modelControlWidget.setFixItemSize(store.getFixItemSize()); + + // Model Labels + modelLabelsWidget.initialiseModelVersionText(store); + modelLabelsWidget.initialiseDistributionText(store); + modelLabelsWidget.setModelVersion(store.getModelVersion()); + modelLabelsWidget.setSystemVersion(store.getSystemVersion()); + modelLabelsWidget.setCopyrightText(store.getCopyrightText()); + modelLabelsWidget.setModelName(store.getModelName()); + modelLabelsWidget.setSystemName(store.getSystemName()); + + // All files + resourcesWidget.setBorderShapesFiles(store.getBorderShapesFiles()); + resourcesWidget.setBorderStylesFiles(store.getBorderStylesFiles()); + resourcesWidget.setColoursFiles(store.getColoursFiles()); + resourcesWidget.setDependenciesFiles(store.getDependenciesFiles()); + resourcesWidget.setLevelsFiles(store.getLevelsFiles()); + resourcesWidget.setLocalisationFiles(store.getLocalisationFiles()); + resourcesWidget.setPatternsFiles(store.getPatternsFiles()); + resourcesWidget.setShapesFiles(store.getShapesFiles()); + resourcesWidget.setSystemInfoFiles(store.getSystemInfoFiles()); + resourcesWidget.setS12XmlFiles(store.getS12XmlFiles()); + + // Default files + resourcesWidget.setSelectedBorderShapesFiles(store + .getSelectedBorderShapesFiles()); + resourcesWidget.setSelectedBorderStylesFiles(store + .getSelectedBorderStylesFiles()); + resourcesWidget + .setSelectedColoursFiles(store.getSelectedColoursFiles()); + resourcesWidget.setSelectedDependenciesFiles(store + .getSelectedDependenciesFiles()); + resourcesWidget.setSelectedLevelsFiles(store.getSelectedLevelsFiles()); + resourcesWidget.setSelectedLocalisationFiles(store + .getSelectedLocalisationFiles()); + resourcesWidget.setSelectedPatternsFiles(store + .getSelectedPatternsFiles()); + resourcesWidget.setSelectedShapesFiles(store.getSelectedShapesFiles()); + resourcesWidget.setSelectedSystemInfoFiles(store + .getSelectedSystemInfoFiles()); + resourcesWidget.setSelectedS12XmlFiles(store.getSelectedS12XmlFiles()); + + // Advanced Options + advancedOptionsWidget.setAdvancedOptions(store.getAdvancedOptions()); + + buildWidget.setOutputFilename(store.getOutputFilename()); + + // Adding this class as listener of model valid events + buildWidget.addModelListener(this); + modelControlWidget.addModelListener(this); + } + + public void setAdvancedOptions(String[] options) { + advancedOptionsWidget.setAdvancedOptions(options); + } + + public void setBorderShapesFiles(String[] filenames) { + resourcesWidget.setBorderShapesFiles(filenames); + } + + public void setBorderStylesFiles(String[] filenames) { + resourcesWidget.setBorderStylesFiles(filenames); + } + + public void setColoursFiles(String[] filenames) { + resourcesWidget.setColoursFiles(filenames); + } + + /** + * Sets the text for the copyright text in the Model Labels widget + * + * @param copyrightText + * String to be used for the copyright text + * @return void + */ + public void setCopyrightText(String copyrightText) { + modelLabelsWidget.setCopyrightText(copyrightText); + } + + public void setDefaultBorderShapesFiles(String[] filenames) { + resourcesWidget.setSelectedBorderShapesFiles(filenames); + } + + public void setDefaultBorderStylesFiles(String[] filenames) { + resourcesWidget.setSelectedBorderStylesFiles(filenames); + } + + public void setDefaultColoursFiles(String[] filenames) { + resourcesWidget.setSelectedColoursFiles(filenames); + } + + public void setDefaultDependenciesFiles(String[] filenames) { + resourcesWidget.setSelectedDependenciesFiles(filenames); + } + + /** + * Sets the default distribution text value in the Model Labels widget + * + * @param distributionText + * The default distribution text value to set. + * @return void + */ + public void setDefaultDistributionText(String distributionText) { + modelLabelsWidget.setSelectedDistributionText(distributionText); + } + + public void setDefaultLevelsFiles(String[] filenames) { + resourcesWidget.setSelectedLevelsFiles(filenames); + } + + public void setDefaultLocalisationFiles(String[] filenames) { + resourcesWidget.setSelectedLocalisationFiles(filenames); + } + + /** + * Sets the default model version text value in the Model Label widget + * + * @param modelVersionText + * The default model version text value to set. + * @return void + */ + public void setDefaultModelVersionText(String modelVersionText) { + modelLabelsWidget.setSelectedModelVersionText(modelVersionText); + } + + public void setDefaultPatternsFiles(String[] filenames) { + resourcesWidget.setSelectedPatternsFiles(filenames); + } + + /** + * Sets the default printed DPI value in the Model Control widget + * + * @param dpi + * The default printed DPI value to set. + * @return void + */ + public void setDefaultPrintedDpi(String dpi) { + modelControlWidget.setSelectedPrintedDpi(dpi); + } + + public void setDefaultS12XmlFiles(String[] filenames) { + resourcesWidget.setSelectedS12XmlFiles(filenames); + } + + public void setDefaultShapesFiles(String[] filenames) { + resourcesWidget.setSelectedShapesFiles(filenames); + } + + public void setDefaultSystemInfoFiles(String[] filenames) { + resourcesWidget.setSelectedSystemInfoFiles(filenames); + } + + public void setDependenciesFiles(String[] filenames) { + resourcesWidget.setDependenciesFiles(filenames); + } + + /** + * Sets the distribution text values in the Model Labels widget + * + * @param distributionTexts + * The distribution text values to set. + * @return void + */ + public void setDistributionTexts(String[] distributionTexts) { + modelLabelsWidget.setDistributionTexts(distributionTexts); + } + + /** + * Sets the filter items in the the Filter Widget + * + * @param filterItems + * A list containing filters. + * @return void + */ + public void setFilterItems(String[] filterItems) { + filterWidget.setFilterItems(filterItems); + } + + /** + * Sets the value for the Fix Item Size button in the Model Control widget + * + * @param value + * Boolean value indicating if the item size is fixed or not + * @return void + */ + public void setFixItemSize(Boolean value) { + modelControlWidget.setFixItemSize(value); + } + + /** + * Sets the value for the Highlight Core OS button in the Model Control + * widget + * + * @param HighlightCoreOS + * Boolean value indicating if the Core OS section is to be + * highlighted + * @return void + */ + public void setHighlightCoreOS(Boolean value) { + modelControlWidget.setHighlightCoreOS(value); + } + + /** + * Sets the ignore items in the Ignore Items Widget + * + * @param ignoreItems + * an List containing 2 element lists. The first element contains + * the item type and the second element contains the item text. + * @return void + */ + public void setIgnoreItems(List ignoreItems) { + ignoreWidget.setIgnoreItems(ignoreItems); + } + + /** + * Sets the level of detail in the Model Control widget + * + * @param level + * The level of detail to set. + * @return void + */ + public void setLevelOfDetail(String level) { + modelControlWidget.setLevelOfDetail(level); + } + + public void setLevelsFiles(String[] filenames) { + resourcesWidget.setLevelsFiles(filenames); + } + + public void setLocalisationFiles(String[] filenames) { + resourcesWidget.setLocalisationFiles(filenames); + } + + /** + * Sets the text for the model name in the Model Labels widget + * + * @param modelName + * String to be used for the model name + * @return void + */ + public void setModelName(String modelName) { + modelLabelsWidget.setModelName(modelName); + } + + /** + * Sets the text for the model version in the Model Labels widget + * + * @param modelVersion + * String to be used for the model version + * @return void + */ + public void setModelVersion(String modelVersion) { + modelLabelsWidget.setModelVersion(modelVersion); + } + + /** + * Sets the values for the model version text in the Model Labels widget + * + * @param modelVersionTexts + * String array to be used for the model version text values + * @return void + */ + public void setModelVersionTexts(String[] modelVersionTexts) { + modelLabelsWidget.setModelVersionTexts(modelVersionTexts); + } + + public void setPatternsFiles(String[] filenames) { + resourcesWidget.setPatternsFiles(filenames); + } + + /** + * Sets the printed DPI values in the Model Control widget + * + * @param dpi + * The printed DPI values to set. + * @return void + */ + public void setPrintedDpis(String[] dpis) { + modelControlWidget.setPrintedDpis(dpis); + } + + public void setS12XmlFiles(String[] filenames) { + resourcesWidget.setS12XmlFiles(filenames); + } + + /** + * Sets the selected distribution text value in the Model Labels widget + * + * @param distributionText + * The selected distribution text value to set. + * @return void + */ + public void setSelectedDistributionText(String distributionText) { + modelLabelsWidget.setSelectedDistributionText(distributionText); + } + + /** + * Sets the selected model version text value in the Model Label widget + * + * @param modelVersionText + * The selected model version text value to set. + * @return void + */ + public void setSelectedModelVersionText(String modelVersionText) { + modelLabelsWidget.setSelectedModelVersionText(modelVersionText); + } + + // Filter Items Getters & Setters + + /** + * Sets the selected printed DPI value in the Model Control widget + * + * @param dpi + * The selected printed DPI value to set. + * @return void + */ + public void setSelectedPrintedDpi(String dpi) { + modelControlWidget.setSelectedPrintedDpi(dpi); + } + + public void setShapesFiles(String[] filenames) { + resourcesWidget.setShapesFiles(filenames); + } + + // Ignore Items Getters & Setters + + /** + * Sets the value for the Suppress Mouseover Effects button + * + * @param suppressMouseOverEffect + * Boolean value indicating if the Suppress Mouseover Effects is + * it be used when generating the diagram + * @return void + */ + public void setSuppressMouseOverEffect(Boolean suppressMouseOverEffect) { + modelControlWidget.setSuppressMouseOverEffect(suppressMouseOverEffect); + } + + public void setSystemInfoFiles(String[] filenames) { + resourcesWidget.setSystemInfoFiles(filenames); + } + + /** + * Sets the text for the system name in the Model Labels widget + * + * @param systemName + * String to be used for the system name + * @return void + */ + public void setSystemName(String systemName) { + modelLabelsWidget.setSystemName(systemName); + } + + /** + * Sets the text for the system version in the Model Labels widget + * + * @param systemVersion + * String to be used for the system version + * @return void + */ + public void setSystemVersion(String systemVersion) { + modelLabelsWidget.setSystemVersion(systemVersion); + } + + /** + * This is called by the observed object when a change is made and controls + * wizard flow + * + * @param event + * the ValidModelEvent object created by the observer object and + * indicating if the wizard page is complete + * @return void + */ + public void validModelDefined(ValidModelEvent event) { + Boolean isValid = event.isValid(); + + setPageComplete(isValid); + + if (isValid) { + setErrorMessage(null); + } else { + setErrorMessage(event.getMessage()); + } + } +}