Wanneer de toepassing wordt geladen, wordt de methode
initApp()
aangeroepen voor Flex-toepassingen of wordt de tijdlijncode (niet functioneel) uitgevoerd voor Flash Professional-toepassingen. Deze code definieert een voorbeeld-XML-pakket dat door de klasse Validator wordt gecontroleerd. De volgende code wordt uitgevoerd:
employeeXML =
<employee id="12345">
<firstName>John</firstName>
<lastName>Doe</lastName>
<costCenter>12345</costCenter>
<costCenter>67890</costCenter>
</employee>;
}
Het XML-pakket wordt later in het werkgebied weergegeven in een instantie van een TextArea-component. Hierdoor kunt u het XML-pakket wijzigen voordat u probeert het opnieuw te valideren.
Wanneer de gebruiker op de knop Valideren klikt, wordt de methode
validateData()
aangeroepen. Deze methode valideert het employee-XML-pakket met de methode
validateEmployeeXML()
uit de klasse Validator. De volgende code toont de methode
validateData()
:
function validateData():void
{
try
{
var tempXML:XML = XML(xmlText.text);
Validator.validateEmployeeXML(tempXML);
status.text = "The XML was successfully validated.";
}
catch (error:FatalError)
{
showFatalError(error);
}
catch (error:WarningError)
{
showWarningError(error);
}
catch (error:Error)
{
showGenericError(error);
}
}
Eerst wordt een tijdelijk XML-object gemaakt met behulp van de inhoud van de instantie
xmlText
van de TextArea-component. Vervolgens wordt de methode
validateEmployeeXML()
uit de aangepaste klasse Validator aangeroepen (com.example.programmingas3/errors/Validator.as) en wordt het tijdelijke XML-object doorgegeven als parameter. Als het XML-pakket geldig is, geeft de instantie
status
van de Label-component een succesbericht weer en wordt de toepassing afgesloten. Als de methode
validateEmployeeXML()
een aangepaste fout genereert (dat wil zeggen, dat een FatalError, WarningError of een algemene Error optreedt), wordt de desbetreffende instructie
catch
uitgevoerd die de methode
showFatalError()
,
showWarningError()
of
showGenericError()
aanroept. Deze methoden geven elk het toepasselijke bericht weer in een tekstgebied,
statusText
, om de gebruiker op de hoogte te stellen van de specifieke fout. Elke methode werkt ook de instantie
status
van de Label-component bij met een specifiek bericht.
Als een fatale fout optreedt tijdens een poging om het employee-XML-pakket te valideren, wordt de foutmelding weergegeven in het tekstgebied
statusText
en worden de instantie
xmlText
van de TextArea-component en de instantie
validateBtn
van de Button-component uitgeschakeld, zoals in de volgende code wordt getoond:
function showFatalError(error:FatalError):void
{
var message:String = error.message + "\n\n";
var title:String = error.getTitle();
statusText.text = message + " " + title + "\n\nThis application has ended.";
this.xmlText.enabled = false;
this.validateBtn.enabled = false;
hideButtons();
}
Als een waarschuwingsfout in plaats van een fatale fout optreedt, wordt de foutmelding weergegeven in de TextArea-instantie
statusText
, maar in dit geval worden de
xmlText
-instanties van de TextField- en Button-component niet uitgeschakeld. De methode
showWarningError()
geeft het aangepaste foutbericht weer in het tekstgebied
statusText
. In deze melding wordt de gebruiker ook gevraagd of hij of zij wil doorgaan met de XML-validatie of dat het script moet worden geannuleerd. Het volgende fragment toont de methode
showWarningError()
:
function showWarningError(error:WarningError):void
{
var message:String = error.message + "\n\n" + "Do you want to exit this application?";
showButtons();
var title:String = error.getTitle();
statusText.text = message;
}
Wanneer de gebruiker op de knop Ja of Nee klikt, wordt de methode
closeHandler()
aangeroepen. Het volgende fragment toont de methode
closeHandler()
:
function closeHandler(event:CloseEvent):void
{
switch (event.detail)
{
case yesButton:
showFatalError(new FatalError(9999));
break;
case noButton:
statusText.text = "";
hideButtons();
break;
}
}
Als de gebruiker ervoor kiest het script te annuleren door op Ja te klikken, wordt een FatalError gegenereerd, waardoor de toepassing wordt afgesloten.