Po załadowaniu aplikacji Flex wywoływana jest metoda
initApp()
, natomiast w przypadku aplikacji dla środowiska Flash Professional wykonywany jest kod (nie funkcje) osi czasu. Ten kod definiuje przykładowy pakiet XML, który zostanie sprawdzony przez klasę Validator. Uruchamiany jest następujący kod:
employeeXML =
<employee id="12345">
<firstName>John</firstName>
<lastName>Doe</lastName>
<costCenter>12345</costCenter>
<costCenter>67890</costCenter>
</employee>;
}
Pakiet XML wyświetlany jest później w instancji składnika TextArea stołu montażowego. Ten krok umożliwia zmodyfikowanie pakietu XML przed próbą ponownego sprawdzenia jego poprawności.
Po kliknięciu przycisku Validate wywołana zostanie metoda
validateData()
. Metoda ta sprawdza poprawność pakietu XML pracownika za pomocą metody
validateEmployeeXML()
klasy Validator. Poniższy kod przedstawia metodę
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);
}
}
Najpierw jest tworzony tymczasowy obiekt XML z użyciem treści instancji składnika TextArea o nazwie
xmlText
. Następnie wywoływana jest metoda
validateEmployeeXML()
niestandardowej klasy Validator (com.example.programmingas3/errors/Validator.as), która przekazuje tymczasowy obiekt XML jako parametr. Jeśli pakiet XML jest poprawny, instancja
status
składnika Label wyświetla komunikat o powodzeniu operacji, a aplikacja kontynuuje działanie. Jeśli metoda
validateEmployeeXML()
wygeneruje niestandardowy błąd (tj. pojawi się błąd FatalError, WarningError lub ogólny Error), wykonana zostanie właściwa instrukcja
catch
i wywołana metoda
showFatalError()
,
showWarningError()
lub
showGenericError()
. Każda z metod wyświetla właściwy komunikat w obszarze tekstowym o nazwie
statusTex
w celu powiadomienia użytkownika o pojawieniu się konkretnego błędu. Każda metoda aktualizuje także instancję
status
składnika Label konkretnym komunikatem.
Jeśli podczas próby sprawdzenia poprawności pakietu XML pracownika pojawi się błąd, w obszarze tekstowym
statusText
wyświetlony zostanie komunikat o błędzie, a instancja
xmlText
składnika TextArea i instancja
validateBtn
składnika Button są wyłączone tak, jak przedstawione to zostało w poniższym kodzie:
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();
}
Jeśli zamiast błędu krytycznego pojawi się ostrzeżenie, komunikat o błędzie zostanie wyświetlony w instancji
statusText
składnika TextArea, ale instancja
xmlText
składnika TextField i instancja składnika Button nie są wyłączone. Metoda
showWarningError()
wyświetla niestandardowy komunikat o błędzie w obszarze tekstowym
statusText
. Komunikat zawiera również pytanie o kontynuowanie sprawdzania poprawności XML lub przerwanie skryptu. Poniższy kod przedstawia fragment metody
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;
}
Po kliknięciu przez użytkownika przycisku Yes lub No wywołana zostanie metoda
closeHandler()
. Poniższy kod przedstawia fragment metody
closeHandler()
:
function closeHandler(event:CloseEvent):void
{
switch (event.detail)
{
case yesButton:
showFatalError(new FatalError(9999));
break;
case noButton:
statusText.text = "";
hideButtons();
break;
}
}
Jeśli użytkownik przerwie skrypt, klikając przycisk Yes, wygenerowany zostanie błąd FatalError, który spowoduje zamknięcie aplikacji.