source: EDIS/trunk/java/tracking-ui-main/src/main/flex/tracking.mxml@ 1227

Last change on this file since 1227 was 1227, checked in by George Lilly, 13 years ago

initial load of EDIS 1.0

File size: 9.6 KB
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<!--tracking.mxml -->
3
4<mx:Application
5 xmlns:mx="http://www.adobe.com/2006/mxml"
6 xmlns:control="gov.va.med.edp.control.*"
7 xmlns:business="gov.va.med.edp.business.*"
8 xmlns:view="gov.va.med.edp.view.*"
9 xmlns:log="gov.va.med.edp.view.log.*"
10 pageTitle="Patient Tracking"
11 height="100%" width="100%" frameRate="100"
12 paddingLeft="0" paddingRight="0" paddingBottom="0" paddingTop="6"
13 creationComplete="initApp()" xmlns:debug="gov.va.med.edp.view.debug.*"
14 initialize="callJSmaxBrowser();">
15
16 <mx:Style source="edp.css"/>
17
18 <mx:Script>
19 <![CDATA[
20import mx.managers.FocusManager;
21import mx.managers.IFocusManagerContainer;
22 import mx.accessibility.ButtonAccImpl;
23 import gov.va.med.edp.widget.LinkButtonTab;
24 import gov.va.med.edp.util.AccessibilityTools;
25 import gov.va.med.edp.control.ModalDialogEvent;
26 import flash.utils.getTimer;
27 import gov.va.med.edp.control.ClearUnsavedViewsModelEvent;
28 import mx.binding.utils.ChangeWatcher;
29 import mx.core.Container;
30 import mx.utils.URLUtil;
31 import com.adobe.cairngorm.control.CairngormEventDispatcher;
32 import com.adobe.cairngorm.control.CairngormEvent;
33 import gov.va.med.edp.model.TrackingModelLocator;
34 import gov.va.med.edp.control.InitAppEvent;
35 import gov.va.med.edp.control.SwitchAppViewEvent;
36 import gov.va.med.edp.control.TrackingEvent;
37 import com.adobe.cairngorm.business.ServiceLocator;
38 import gov.va.med.edp.business.Services;
39 import gov.va.med.edp.vo.LookupVO;
40 import gov.va.med.edp.util.InactivityTimeout;
41 import gov.va.med.edp.view.DisconnectedDialog;
42 import gov.va.med.edp.widget.InfoDialog;
43
44 [Bindable]
45 public var model:TrackingModelLocator = TrackingModelLocator.getInstance();
46
47 [Bindable]
48 private var inactivityTimeout:InactivityTimeout = new InactivityTimeout();
49
50 private var modalCount: int = 0;
51
52 /**
53 * Function: callJSmaxBrowser()
54 * Parameters:
55 * NA
56 * Description:
57 * Calls external javascript to maximize browser and makescreen
58 * component visible if screen reader is activated
59 *
60 * Created by: jtorreno
61 *
62 * Date: 2008.05.12
63 *
64 **/
65 private function callJSmaxBrowser():void {
66 trace("** Is screen reader active: " + AccessibilityTools.isAccessibilityActive());
67
68 if (AccessibilityTools.isAccessibilityActive()) {
69 trace("** Calls external javascript to maximize browser and " +
70 "makescreen component visible")
71 ExternalInterface.call("maximizeBrowser");
72 }
73 }
74
75
76 private function initApp():void
77 {
78 ChangeWatcher.watch(model, "disconnected", connectionStatusChanged);
79 model.reconnectFunction = reconnect;
80
81 var e: InitAppEvent = new InitAppEvent(InitAppEvent.EVENT_INIT_APP);
82 e.appName = TrackingModelLocator.APP_NAME_TRACKING;
83 e.contextRoot = Application.application.parameters.contextRoot;
84 e.helpContextRoot = Application.application.parameters.helpContextRoot;
85 e.protocol = URLUtil.getProtocol(Application.application.url);
86 if (e.protocol == "file") e.protocol = "http";
87
88 // first check the vljServ parameter
89 if (Application.application.parameters.hasOwnProperty("vljServ")) {
90 e.server = Application.application.parameters.vljServ;
91 e.mode = InitAppEvent.SERVICE_USE_VLJ;
92 }
93 // then check the cspServ parameter
94 if ((e.server.length == 0) && Application.application.parameters.hasOwnProperty("cspServ")) {
95 e.server = Application.application.parameters.cspServ;
96 e.mode = InitAppEvent.SERVICE_USE_CSP;
97 e.token = Application.application.parameters.cspToken;
98 }
99 // if running in development mode try localhost
100 if ((e.server.length == 0) && (Application.application.url.substr(0, 7) == "file://")) {
101 e.server = "localhost:7001";
102 e.mode = InitAppEvent.SERVICE_USE_VLJ;
103 }
104 // default: use the server and port of the HTML wrapper with VLJ
105 if (e.server.length == 0) {
106 e.server = URLUtil.getServerNameWithPort(Application.application.url);
107 e.mode = InitAppEvent.SERVICE_USE_VLJ;
108 }
109 e.dispatch();
110
111 Application.application.pageTitle = "Tracking System: " + e.server;
112
113 if (AccessibilityTools.isAccessibilityActive()) {
114 this.addEventListener(gov.va.med.edp.control.ModalDialogEvent.OPEN, setModalBackground);
115 this.addEventListener(gov.va.med.edp.control.ModalDialogEvent.CLOSE, clearModalBackground);
116 }
117
118 if (ExternalInterface.available) {
119 ExternalInterface.addCallback("getUnsavedDataWarning",
120 function(): String {
121 var x: String = model.modifiedViews();
122 if (x.length > 0) {
123 x = "The following views have unsaved changes: \n\n" + x +
124 "\nDo you want to continue and lose these changes?";
125 return x;
126 }
127 return "";
128 }
129 );
130 }
131 }
132
133 private function connectionStatusChanged(e:Event):void {
134 if (model.disconnected)
135 DisconnectedDialog.show();
136 else
137 DisconnectedDialog.hide();
138 }
139
140 private function reconnect():void {
141 new TrackingEvent(TrackingEvent.EVENT_INIT_TRACKING).dispatch();
142 }
143
144 private function proceed(): void {
145 var e:SwitchAppViewEvent = new SwitchAppViewEvent(SwitchAppViewEvent.EVENT_SWITCH_APP_VIEW);
146 if (model.appViewList.length > 0) {
147 e.view = (model.appViewList[0] as LookupVO).data;
148 }
149 e.dispatch();
150 }
151
152 private function getView(view:Number): Container
153 {
154 if (view == TrackingModelLocator.VIEW_APP_INTRO) {
155 return introView;
156 } else if (view == TrackingModelLocator.VIEW_APP_VERSION_INCOMPATIBILITY) {
157 return versionIncompatibilityView;
158 } else {
159 return trackingViews;
160 }
161 }
162
163 private function set initSessionTimeout(value: uint):void
164 {
165 inactivityTimeout.start();
166 }
167
168 public function set workingStatus(bText:String):void
169 {
170 if (bText.length > 0) {
171/* if (lblWorkingStatus.text == "") { // true when starting timeout
172 ExternalInterface.call("indicateTimeout");
173 trace("done calling indicate timeout");
174 } */
175 currentState = 'sessionTimeOutState';
176 lblWorkingStatus.text = bText;
177 } else {
178 currentState = "";
179 lblWorkingStatus.text = "";
180 }
181 }
182
183 private function setModalBackground(e: ModalDialogEvent): void
184 {
185 if (modalCount == 0) {
186 if (e.dialogPanel != null) {
187// if (e.dialogPanel is IFocusManagerContainer) {
188 // if (IFocusManagerContainer(e.dialogPanel).focusManager)
189 // e.dialogPanel.systemManager.addFocusManager(IFocusManagerContainer(e.dialogPanel));
190 // else // Popups get their own focus loop
191 // IFocusManagerContainer(e.dialogPanel).focusManager = new FocusManager(IFocusManagerContainer(e.dialogPanel));
192 // }
193
194 e.dialogPanel.setStyle("horizontalCenter", 0);
195 e.dialogPanel.setStyle("verticalCenter", 0);
196 emptyBackground.addChild(e.dialogPanel);
197
198 }
199 appView.selectedChild = emptyBackground;
200
201 }
202 modalCount++;
203 }
204
205 private function clearModalBackground(e: ModalDialogEvent): void
206 {
207 modalCount--;
208 if (modalCount == 0) {
209
210 emptyBackground.removeAllChildren();
211 appView.selectedChild = getView(model.appViewState);
212 callLater(resetSelectionForJaws);
213 }
214 }
215
216 private function resetSelectionForJaws(): void
217 {
218 if (trackingViews != null && trackingViews.appList != null) {
219
220 // var selectedIndex:int = trackingViews.appList.selectedIndex;
221 // var dispObj:DisplayObject = trackingViews.appList.getChildAt(selectedIndex);
222 // var lbt:LinkButtonTab = LinkButtonTab(dispObj);
223 // lbt.setFocus();
224 trackingViews.appList.setFocus();
225 }
226 }
227
228
229 ]]>
230 </mx:Script>
231
232 <!-- ========================================================================== -->
233
234 <!-- the ServiceLocator where we specify the remote services -->
235 <business:Services id="services"/>
236
237 <!-- the FrontController, containing Commands specific to this appliation -->
238 <control:TrackingController id="controller"/>
239
240 <!-- ========================================================================== -->
241
242 <mx:ViewStack
243 id="appView"
244 width="100%"
245 height="100%"
246 selectedChild="{getView(model.appViewState)}">
247
248 <mx:TitleWindow id="introView" title="Emergency Department Integration Software"/>
249 <mx:Canvas id="emptyBackground" width="100%" height="100%"/>
250 <mx:Canvas id="versionIncompatibilityView">
251 <mx:Panel title="EDIS Version Incompatibility"
252 paddingTop="10" paddingLeft="10" paddingRight="10" horizontalCenter="0" verticalCenter="0"
253 width="75%">
254 <mx:Text width="100%">
255 <mx:text>
256 This is EDIS client version '{model.appClientVersion}'.
257 The EDIS server package version running in your VistA account is
258 '{model.session.serverPackageVersion}'.
259 It appears that the web server has served you the wrong version of the user interface for your
260 configuration.
261 </mx:text>
262 </mx:Text>
263 <mx:ControlBar horizontalAlign="right">
264 <mx:Button label="Proceed (Not Recommended)" click="proceed()"/>
265 <mx:Button label="Exit" click="model.logout()"/>
266 </mx:ControlBar>
267 </mx:Panel>
268 </mx:Canvas>
269 <view:TrackingViews id="trackingViews"/>
270 </mx:ViewStack>
271
272 <mx:states>
273 <mx:State name="sessionTimeOutState">
274 <mx:AddChild relativeTo="{appView}" position="after">
275 <mx:target>
276 <mx:Label id="lblWorkingStatus" width="90%" text="" textAlign="center"
277 styleName="sessionTimeoutLabel"/>
278 </mx:target>
279 </mx:AddChild>
280 </mx:State>
281 </mx:states>
282 <mx:Binding source="model.session.timeOut" destination="initSessionTimeout"/>
283 <mx:Binding source="inactivityTimeout.status" destination="workingStatus"/>
284</mx:Application>
Note: See TracBrowser for help on using the repository browser.