[1240] | 1 | <?xml version="1.0" encoding="utf-8"?>
|
---|
| 2 | <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:widget="gov.va.med.edp.widget.*" paddingTop="0"
|
---|
| 3 | borderThicknessTop="0" creationComplete="creationCompleteHandler()" keyDown="disposeOnEscape(event)"
|
---|
| 4 | minWidth="240" minHeight="140" horizontalAlign="center" verticalAlign="top" layout="vertical"
|
---|
| 5 | defaultButton="{closeBtn}"
|
---|
| 6 | xmlns:accessibility="flash.accessibility.*">
|
---|
| 7 | <mx:Script>
|
---|
| 8 | <![CDATA[
|
---|
| 9 | import gov.va.med.edp.util.AccessibilityTools;
|
---|
| 10 | import gov.va.med.edp.control.ModalDialogEvent;
|
---|
| 11 | import mx.events.CloseEvent;
|
---|
| 12 | import mx.accessibility.ComboBoxAccImpl;
|
---|
| 13 | import mx.controls.ComboBox;
|
---|
| 14 | import mx.managers.FocusManager;
|
---|
| 15 | import flash.net.sendToURL;
|
---|
| 16 | import mx.core.Container;
|
---|
| 17 | import mx.core.UIComponent;
|
---|
| 18 | import mx.core.Application;
|
---|
| 19 | import mx.managers.PopUpManager;
|
---|
| 20 |
|
---|
| 21 | [Bindable]
|
---|
| 22 | private var message : String;
|
---|
| 23 | [Bindable]
|
---|
| 24 | private var closeButtonLabel : String;
|
---|
| 25 | [Bindable]
|
---|
| 26 | private var selfDisposing : Boolean;
|
---|
| 27 | private var closeListener : Function = null;
|
---|
| 28 | [Bindable]
|
---|
| 29 | private var invoker : UIComponent;
|
---|
| 30 |
|
---|
| 31 | public static function show(message:String,
|
---|
| 32 | title:String = "Alert",
|
---|
| 33 | selfDisposing:Boolean = false,
|
---|
| 34 | invokerComponent:UIComponent = null,
|
---|
| 35 | closeListener:Function = null,
|
---|
| 36 | closeButtonLabel:String = "Close") : void {
|
---|
| 37 | var dialog:InfoDialog = InfoDialog(PopUpManager.createPopUp(Application.application as DisplayObject, InfoDialog, true));
|
---|
| 38 | if (title != null && title.length > 0)
|
---|
| 39 | dialog.title = title;
|
---|
| 40 | dialog.closeButtonLabel = closeButtonLabel;
|
---|
| 41 | dialog.selfDisposing = selfDisposing;
|
---|
| 42 | dialog.message = message;
|
---|
| 43 | dialog.closeListener = closeListener;
|
---|
| 44 |
|
---|
| 45 | dialog.invoker = invokerComponent;
|
---|
| 46 |
|
---|
| 47 | //Dispatch the event for get clear background
|
---|
| 48 | Application.application.dispatchEvent(new ModalDialogEvent(ModalDialogEvent.OPEN));
|
---|
| 49 |
|
---|
| 50 | PopUpManager.centerPopUp(dialog);
|
---|
| 51 |
|
---|
| 52 | }
|
---|
| 53 |
|
---|
| 54 | private function creationCompleteHandler() : void {
|
---|
| 55 | var focusTimer: Timer = new Timer(500, 1);
|
---|
| 56 | focusTimer.addEventListener(TimerEvent.TIMER, moveFocus);
|
---|
| 57 | focusTimer.start();
|
---|
| 58 |
|
---|
| 59 | if (this.selfDisposing) {
|
---|
| 60 | var disposeTime: Timer = new Timer(800, 1);
|
---|
| 61 | disposeTime.addEventListener(TimerEvent.TIMER, autoDisposeDialog);
|
---|
| 62 | disposeTime.start();
|
---|
| 63 | accessibleMessage.name = this.title;
|
---|
| 64 | }
|
---|
| 65 |
|
---|
| 66 |
|
---|
| 67 | }
|
---|
| 68 |
|
---|
| 69 | private function disposeDialog() : void {
|
---|
| 70 | if (closeListener != null) {
|
---|
| 71 | closeListener();
|
---|
| 72 | }
|
---|
| 73 |
|
---|
| 74 | //Dispatch the event for remove clear background
|
---|
| 75 | Application.application.dispatchEvent(new ModalDialogEvent(ModalDialogEvent.CLOSE));
|
---|
| 76 | PopUpManager.removePopUp(this);
|
---|
| 77 |
|
---|
| 78 | if (invoker != null) {
|
---|
| 79 | callLater(setInvokerComponentFocus);
|
---|
| 80 | }
|
---|
| 81 | }
|
---|
| 82 |
|
---|
| 83 | private function setInvokerComponentFocus(): void
|
---|
| 84 | { // EVENT_OBJECT_SELECTION == 0x8006
|
---|
| 85 | Accessibility.sendEvent(invoker, 0, 0x8006);
|
---|
| 86 | invoker.setFocus();
|
---|
| 87 | }
|
---|
| 88 |
|
---|
| 89 | private function moveFocus(e: TimerEvent): void
|
---|
| 90 | {
|
---|
| 91 | if (AccessibilityTools.isAccessibilityActive()) {
|
---|
| 92 | messageBox.setFocus();
|
---|
| 93 | } else {
|
---|
| 94 | messageBox.editable = false;
|
---|
| 95 | closeBtn.setFocus();
|
---|
| 96 | }
|
---|
| 97 | }
|
---|
| 98 |
|
---|
| 99 | private function autoDisposeDialog(e: TimerEvent): void
|
---|
| 100 | {
|
---|
| 101 | disposeDialog();
|
---|
| 102 | }
|
---|
| 103 |
|
---|
| 104 | public function disposeOnEscape(event:KeyboardEvent):void
|
---|
| 105 | {
|
---|
| 106 | if (event.keyCode == Keyboard.ESCAPE) {
|
---|
| 107 | disposeDialog();
|
---|
| 108 | }
|
---|
| 109 | }
|
---|
| 110 |
|
---|
| 111 | ]]>
|
---|
| 112 | </mx:Script>
|
---|
| 113 |
|
---|
| 114 | <accessibility:AccessibilityProperties name="Info Dialog {this.title}" id="accessibleMessage"/>
|
---|
| 115 |
|
---|
| 116 |
|
---|
| 117 | <mx:VBox id="contentBox" width="100%" height="100%">
|
---|
| 118 | <mx:TextArea restrict="*~_" id="messageBox" text="{message}" borderThickness="0" width="100%" height="100%"
|
---|
| 119 | focusEnabled="true" tabIndex="1" accessibilityProperties="{accessibleMessage}"/>
|
---|
| 120 | </mx:VBox>
|
---|
| 121 | <mx:ControlBar width="100%" horizontalAlign="right">
|
---|
| 122 | <mx:Button id="closeBtn" label="{closeButtonLabel}" click="disposeDialog()" tabIndex="5"/>
|
---|
| 123 | </mx:ControlBar>
|
---|
| 124 | </mx:TitleWindow>
|
---|