Alertを操作するユーティリティクラス
FlexUnitのflexUnitUIRunnerでテストする際に役に立ちそうなユーティリティクラスを作ってみた。
名前のつけ方にセンスがないのはご愛嬌…。
package tmftake.util { import mx.controls.Alert; import mx.core.Application; import mx.core.IFlexDisplayObject; import mx.events.CloseEvent; import mx.managers.ISystemManager; import mx.managers.PopUpManager; public class AlertTestUtil { /** * アラートのボタン押下 * * 最後に表示したアラートを、引数で指定した種類のボタンを押下して閉じる。 * * @param flags 押下するボタン。 (Alert.OK|Alert.Cancel|Alert.YES|Alert.NO) */ public static function closeAlert(flags:uint = 0x4 /* Alert.OK */):void { var alert:Alert = AlertTestUtil.getAlert(); if (alert != null) { alert.dispatchEvent(new CloseEvent(CloseEvent.CLOSE, false, false, flags)); PopUpManager.removePopUp(alert); } } /** * アラートの表示文字列取得 * * 最後に表示したアラートの表示文字列を取得する。 */ public static function getAlertText():String { var text:String = ""; var alert:Alert = AlertTestUtil.getAlert(); if (alert != null) { text = alert.text; } return text; } /** * アラートの取得 * * 最後に表示したアラートのオブジェクトを取得する。 */ public static function getAlert():Alert { var systemManager:ISystemManager = Application.application.systemManager; var len:int = systemManager.rawChildren.numChildren; var alert:Alert = null; for (var i:int = len - 1; i > -1; i--) { var obj:IFlexDisplayObject = systemManager.rawChildren.getChildAt(i) as IFlexDisplayObject; if (obj is Alert) { alert = obj as Alert; } } return alert; } /** * アラートの全除去 */ public static function clearAllAlert():Alert { var systemManager:ISystemManager = Application.application.systemManager; var len:int = systemManager.rawChildren.numChildren; for (var i:int = len - 1; i > -1; i--) { var obj:IFlexDisplayObject = systemManager.rawChildren.getChildAt(i) as IFlexDisplayObject; if (obj is Alert) { PopUpManager.removePopUp(obj); } } } } }