HelpUtils.as 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. package com.imt.intimamedia.helpers
  2. {
  3. import com.imt.intimamedia.events.user.UserHelpEvent;
  4. import com.imt.intimamedia.model.ApplicationModelLocator;
  5. import flash.events.Event;
  6. import flash.events.MouseEvent;
  7. import mx.collections.ArrayCollection;
  8. import mx.containers.Canvas;
  9. import mx.containers.HBox;
  10. import mx.containers.VBox;
  11. import mx.controls.Alert;
  12. import mx.controls.CheckBox;
  13. import mx.controls.Image;
  14. import mx.controls.LinkButton;
  15. import mx.controls.Spacer;
  16. import mx.core.Application;
  17. import mx.core.UIComponent;
  18. import mx.effects.Parallel;
  19. import mx.effects.Zoom;
  20. import mx.events.ResizeEvent;
  21. import mx.managers.PopUpManager;
  22. import mx.resources.ResourceManager;
  23. import mx.skins.halo.HaloBorder;
  24. import mx.utils.ObjectUtil;
  25. public class HelpUtils
  26. {
  27. public static var helpCanvas : Canvas;
  28. public static var helpIndex : int;
  29. public static var helpPagesArray : ArrayCollection;
  30. public function HelpUtils() { }
  31. public static function addNavigationLink(helpIndex : int) : void
  32. {
  33. var phbox : HBox = new HBox();
  34. var nhbox : HBox = new HBox();
  35. if (helpIndex - 1 >= 0)
  36. {
  37. var prevLinkButton : LinkButton = new LinkButton();
  38. prevLinkButton.label = ResourceManager.getInstance().getString('labels', 'previous') + ' ' + helpPagesArray.getItemAt(helpIndex - 1).label;
  39. prevLinkButton.name = helpPagesArray.getItemAt(helpIndex - 1).label;
  40. prevLinkButton.addEventListener(MouseEvent.CLICK, changeHelp );
  41. prevLinkButton.setStyle("fontWeight", "bold");
  42. prevLinkButton.setStyle("fontSize", 16);
  43. prevLinkButton.setStyle("color", "#FFFFFF");
  44. phbox.addChild(prevLinkButton);
  45. }
  46. if (helpPagesArray.length > helpIndex + 1)
  47. {
  48. var nextLinkButton : LinkButton = new LinkButton();
  49. nextLinkButton.label = ResourceManager.getInstance().getString('labels', 'next') + ' ' + helpPagesArray.getItemAt(helpIndex + 1).label;
  50. nextLinkButton.name = helpPagesArray.getItemAt(helpIndex + 1).label;
  51. nextLinkButton.addEventListener(MouseEvent.CLICK, changeHelp );
  52. nextLinkButton.setStyle("fontWeight", "bold");
  53. nextLinkButton.setStyle("fontSize", 16);
  54. nextLinkButton.setStyle("color", "#FFFFFF");
  55. nhbox.addChild(nextLinkButton);
  56. }
  57. if (phbox.getChildren().length)
  58. {
  59. phbox.setStyle("backgroundColor", "#999999");
  60. phbox.setStyle("horizontalAlign", "left");
  61. phbox.setStyle("left", "20");
  62. phbox.setStyle("bottom", "20");
  63. phbox.setStyle("borderColor", "#222222");
  64. phbox.setStyle("borderThickness", "1");
  65. phbox.setStyle("borderStyle", "solid");
  66. helpCanvas.addChild(phbox);
  67. }
  68. if (nhbox.getChildren().length)
  69. {
  70. nhbox.setStyle("backgroundColor", "#999999");
  71. nhbox.setStyle("horizontalAlign", "right");
  72. nhbox.setStyle("right", "20");
  73. nhbox.setStyle("bottom", "20");
  74. nhbox.setStyle("borderColor", "#222222");
  75. nhbox.setStyle("borderThickness", "1");
  76. nhbox.setStyle("borderStyle", "solid");
  77. helpCanvas.addChild(nhbox);
  78. }
  79. }
  80. public static function loadHelp(helpPages : ArrayCollection, idx : int) : void
  81. {
  82. if (ApplicationModelLocator.getInstance().generalMenuActive)
  83. return;
  84. helpPagesArray = helpPages;
  85. showHelp(helpPages.getItemAt(idx).page, helpPages.getItemAt(idx).image,
  86. helpPages.getItemAt(idx).addEffect, helpPages.getItemAt(idx).removeEffect);
  87. helpIndex = idx;
  88. addNavigationLink(idx);
  89. }
  90. public static function changeHelp(event : Event) : void
  91. {
  92. var found : Boolean = false;
  93. hideHelp(event);
  94. for each (var help : Object in helpPagesArray)
  95. // labels have to be unique; there is a comparison on it
  96. if (event.currentTarget.name == help.label)
  97. {
  98. helpIndex = helpPagesArray.getItemIndex(help);
  99. found = true;
  100. break;
  101. }
  102. if (!found)
  103. return;
  104. showHelp(helpPagesArray.getItemAt(helpIndex).page, helpPagesArray.getItemAt(helpIndex).image,
  105. helpPagesArray.getItemAt(helpIndex).addEffect, helpPagesArray.getItemAt(helpIndex).removeEffect);
  106. addNavigationLink(helpIndex);
  107. }
  108. public static function showHelp(page : UIComponent, image : Image, addEffect : Zoom, removeEffect : Parallel) : void
  109. {
  110. if (ApplicationModelLocator.getInstance().generalMenuActive)
  111. return;
  112. var closeButton : Image = new Image();
  113. closeButton.source = "/images/help/close.png";
  114. closeButton.width = 20;
  115. closeButton.height = 20;
  116. closeButton.buttonMode = true;
  117. closeButton.useHandCursor = true;
  118. closeButton.addEventListener( MouseEvent.CLICK, hideHelp );
  119. var helpCheckBox : CheckBox = new CheckBox();
  120. helpCheckBox.label = ResourceManager.getInstance().getString('labels', 'hide.help');
  121. helpCheckBox.labelPlacement = "right";
  122. helpCheckBox.x = 450;
  123. helpCheckBox.setStyle("bottom", "20");
  124. helpCheckBox.selected = !ApplicationModelLocator.getInstance().connectedUser.help;
  125. helpCheckBox.addEventListener(MouseEvent.CLICK, setUserHelp);
  126. image.visible = true;
  127. image.includeInLayout = true;
  128. helpCanvas = new Canvas();
  129. // image width = 1000 and image height = 702
  130. image.maintainAspectRatio = true;
  131. helpCanvas.width = image.getExplicitOrMeasuredWidth();
  132. helpCanvas.height = image.getExplicitOrMeasuredHeight();
  133. closeButton.setStyle("top", "10");
  134. closeButton.setStyle("right", "15");
  135. helpCanvas.addChild(image);
  136. helpCanvas.addChild(closeButton);
  137. helpCanvas.addChild(helpCheckBox);
  138. helpCanvas.verticalScrollPolicy = "off";
  139. helpCanvas.horizontalScrollPolicy = "off";
  140. helpCanvas.addEventListener( Event.COMPLETE, centerHelp );
  141. helpCanvas.addEventListener( ResizeEvent.RESIZE, centerHelp );
  142. // CJA : Ajouter Le 28 Aout 2013 (Demande PJT)
  143. helpCanvas.addEventListener( MouseEvent.CLICK, hideHelp );
  144. helpCanvas.setStyle("addedEffect", addEffect);
  145. helpCanvas.setStyle("removedEffect", removeEffect);
  146. PopUpManager.addPopUp( helpCanvas, UIComponent(page), true );
  147. }
  148. public static function centerHelp(event : Event) : void
  149. {
  150. PopUpManager.centerPopUp( helpCanvas as Canvas );
  151. }
  152. public static function hideHelp(event : Event) : void
  153. {
  154. helpCanvas.removeAllChildren();
  155. helpCanvas.removeEventListener( Event.COMPLETE, centerHelp );
  156. helpCanvas.removeEventListener( ResizeEvent.RESIZE, centerHelp );
  157. PopUpManager.removePopUp( helpCanvas as Canvas );
  158. }
  159. public static function setUserHelp( event : Event ) : void
  160. {
  161. if ((event.currentTarget as CheckBox).selected)
  162. ApplicationModelLocator.getInstance().connectedUser.help = false;
  163. else
  164. ApplicationModelLocator.getInstance().connectedUser.help = true;
  165. new UserHelpEvent(ApplicationModelLocator.getInstance().connectedUser.id, ApplicationModelLocator.getInstance().connectedUser.help).dispatch();
  166. }
  167. public static function loadPatientHelp(image : Image) : void
  168. {
  169. if (ApplicationModelLocator.getInstance().generalMenuActive)
  170. return;
  171. // help pages of Patient
  172. var helpPages : ArrayCollection = HelpUtils.buildPatientHelpPages();
  173. var idx : int = 0;
  174. if (!ObjectUtil.compare(image, Application.application.physicianMenuHelp))
  175. idx = 0;
  176. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.patient.patientFile.searchPatientHelp))
  177. idx = 1;
  178. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.patient.patientFile.createPatientHelp))
  179. idx = 2;
  180. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.patient.patientFile.patientTabHelp))
  181. idx = 3;
  182. HelpUtils.loadHelp(helpPages, idx);
  183. }
  184. public static function buildPatientHelpPages() : ArrayCollection
  185. {
  186. // labels have to be unique; there is a comparison on it
  187. var helpPages : ArrayCollection = new ArrayCollection();
  188. helpPages.addItem({page:Application.application,
  189. image:Application.application.physicianMenuHelp,
  190. label:ResourceManager.getInstance().getString('labels', 'main.menu'),
  191. addEffect:Application.application.zoomHelpAdd,
  192. removeEffect:Application.application.zoomHelpRemove});
  193. helpPages.addItem({page:Application.application.menuPhysician.patient.patientFile,
  194. image:Application.application.menuPhysician.patient.patientFile.searchPatientHelp,
  195. label:ResourceManager.getInstance().getString('labels', 'label.search'),
  196. addEffect:Application.application.menuPhysician.patient.patientFile.zoomHelpAdd,
  197. removeEffect:Application.application.menuPhysician.patient.patientFile.zoomHelpRemove});
  198. helpPages.addItem({page:Application.application.menuPhysician.patient.patientFile,
  199. image:Application.application.menuPhysician.patient.patientFile.createPatientHelp,
  200. label:ResourceManager.getInstance().getString('labels', 'title.patientFile'),
  201. addEffect:Application.application.menuPhysician.patient.patientFile.zoomHelpAdd,
  202. removeEffect:Application.application.menuPhysician.patient.patientFile.zoomHelpRemove});
  203. helpPages.addItem({page:Application.application.menuPhysician.patient.patientFile,
  204. image:Application.application.menuPhysician.patient.patientFile.patientTabHelp,
  205. label:ResourceManager.getInstance().getString('labels', 'patient.tabs'),
  206. addEffect:Application.application.menuPhysician.patient.patientFile.zoomHelpAdd,
  207. removeEffect:Application.application.menuPhysician.patient.patientFile.zoomHelpRemove});
  208. return helpPages;
  209. }
  210. public static function loadAcquireHelp(image : Image) : void
  211. {
  212. if (ApplicationModelLocator.getInstance().generalMenuActive)
  213. return;
  214. // help pages of Acquire
  215. var helpPages : ArrayCollection = HelpUtils.buildAcquireHelpPages();
  216. var idx : int = 0;
  217. if (!ObjectUtil.compare(image, Application.application.menuPhysician.acquire.acquireGlobalProcessHelp))
  218. idx = 0;
  219. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.acquire.acquireAcquisitionHelp))
  220. idx = 1;
  221. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.acquire.acquireAffectationHelp))
  222. idx = 2;
  223. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.acquire.acquireThumbnailHelp))
  224. idx = 3;
  225. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.acquire.acquireLesionsHelp))
  226. idx = 4;
  227. HelpUtils.loadHelp(helpPages, idx);
  228. }
  229. public static function buildAcquireHelpPages() : ArrayCollection
  230. {
  231. // labels have to be unique; there is a comparison on it
  232. var helpPages : ArrayCollection = new ArrayCollection();
  233. helpPages.addItem({page:Application.application.menuPhysician.acquire,
  234. image:Application.application.menuPhysician.acquire.acquireGlobalProcessHelp,
  235. label:ResourceManager.getInstance().getString('labels', 'physicianAcquire'),
  236. addEffect:Application.application.menuPhysician.acquire.zoomHelpAdd,
  237. removeEffect:Application.application.menuPhysician.acquire.zoomHelpRemove});
  238. helpPages.addItem({page:Application.application.menuPhysician.acquire,
  239. image:Application.application.menuPhysician.acquire.acquireAcquisitionHelp,
  240. label:ResourceManager.getInstance().getString('labels', 'measures.label.images'),
  241. addEffect:Application.application.menuPhysician.acquire.zoomHelpAdd,
  242. removeEffect:Application.application.menuPhysician.acquire.zoomHelpRemove});
  243. helpPages.addItem({page:Application.application.menuPhysician.acquire,
  244. image:Application.application.menuPhysician.acquire.acquireAffectationHelp,
  245. label:ResourceManager.getInstance().getString('labels', 'title.affectation'),
  246. addEffect:Application.application.menuPhysician.acquire.zoomHelpAdd,
  247. removeEffect:Application.application.menuPhysician.acquire.zoomHelpRemove});
  248. helpPages.addItem({page:Application.application.menuPhysician.acquire,
  249. image:Application.application.menuPhysician.acquire.acquireThumbnailHelp,
  250. label:ResourceManager.getInstance().getString('labels', 'acquire.incidence'),
  251. addEffect:Application.application.menuPhysician.acquire.zoomHelpAdd,
  252. removeEffect:Application.application.menuPhysician.acquire.zoomHelpRemove});
  253. helpPages.addItem({page:Application.application.menuPhysician.acquire,
  254. image:Application.application.menuPhysician.acquire.acquireLesionsHelp,
  255. label:ResourceManager.getInstance().getString('labels', 'title.lesion'),
  256. addEffect:Application.application.menuPhysician.acquire.zoomHelpAdd,
  257. removeEffect:Application.application.menuPhysician.acquire.zoomHelpRemove});
  258. return helpPages;
  259. }
  260. public static function loadMeasuresHelp(image : Image) : void
  261. {
  262. if (ApplicationModelLocator.getInstance().generalMenuActive)
  263. return;
  264. // help pages of Measures
  265. var helpPages : ArrayCollection = HelpUtils.buildMeasuresHelpPages();
  266. var idx : int = 0;
  267. if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresThumbnailHelp))
  268. idx = 0;
  269. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresHelp))
  270. idx = 1;
  271. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresCalibrationHelp))
  272. idx = 2;
  273. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresEndingCalibrationHelp))
  274. idx = 3;
  275. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresImtButtonHelp))
  276. idx = 4;
  277. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresDistanceButtonHelp))
  278. idx = 5;
  279. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresAreaButtonHelp))
  280. idx = 6;
  281. HelpUtils.loadHelp(helpPages, idx);
  282. }
  283. public static function buildMeasuresHelpPages() : ArrayCollection
  284. {
  285. // labels have to be unique; there is a comparison on it
  286. var helpPages : ArrayCollection = new ArrayCollection();
  287. helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures,
  288. image:Application.application.menuPhysician.generalMeasure.measures.measuresThumbnailHelp,
  289. label:ResourceManager.getInstance().getString('labels', 'images'),
  290. addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd,
  291. removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove});
  292. helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures,
  293. image:Application.application.menuPhysician.generalMeasure.measures.measuresHelp,
  294. label:ResourceManager.getInstance().getString('labels', 'physicianMeasure'),
  295. addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd,
  296. removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove});
  297. helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures,
  298. image:Application.application.menuPhysician.generalMeasure.measures.measuresCalibrationHelp,
  299. label:ResourceManager.getInstance().getString('labels', 'measures.label.scale'),
  300. addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd,
  301. removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove});
  302. helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures,
  303. image:Application.application.menuPhysician.generalMeasure.measures.measuresEndingCalibrationHelp,
  304. label:ResourceManager.getInstance().getString('labels', 'scale.next'),
  305. addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd,
  306. removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove});
  307. helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures,
  308. image:Application.application.menuPhysician.generalMeasure.measures.measuresImtButtonHelp,
  309. label:ResourceManager.getInstance().getString('labels', 'measures.label.imt'),
  310. addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd,
  311. removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove});
  312. helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures,
  313. image:Application.application.menuPhysician.generalMeasure.measures.measuresDistanceButtonHelp,
  314. label:ResourceManager.getInstance().getString('labels', 'distance'),
  315. addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd,
  316. removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove});
  317. helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures,
  318. image:Application.application.menuPhysician.generalMeasure.measures.measuresAreaButtonHelp,
  319. label:ResourceManager.getInstance().getString('labels', 'area'),
  320. addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd,
  321. removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove});
  322. return helpPages;
  323. }
  324. public static function loadReportHelp(image : Image) : void
  325. {
  326. if (ApplicationModelLocator.getInstance().generalMenuActive)
  327. return;
  328. // help pages of Report
  329. var helpPages : ArrayCollection = HelpUtils.buildReportHelpPages();
  330. var idx : int;
  331. if (!ObjectUtil.compare(image, Application.application.menuPhysician.report.reportConfigurationHelp))
  332. idx = 0;
  333. else if (!ObjectUtil.compare(image, Application.application.menuPhysician.report.reportDataHelp))
  334. idx = 1;
  335. HelpUtils.loadHelp(helpPages, idx);
  336. }
  337. public static function buildReportHelpPages() : ArrayCollection
  338. {
  339. var helpPages : ArrayCollection = new ArrayCollection();
  340. helpPages.addItem({page:Application.application.menuPhysician.report,
  341. image:Application.application.menuPhysician.report.reportConfigurationHelp,
  342. label:ResourceManager.getInstance().getString('labels', 'report.settings'),
  343. addEffect:Application.application.menuPhysician.report.zoomHelpAdd,
  344. removeEffect:Application.application.menuPhysician.report.zoomHelpRemove});
  345. helpPages.addItem({page:Application.application.menuPhysician.report,
  346. image:Application.application.menuPhysician.report.reportDataHelp,
  347. label:ResourceManager.getInstance().getString('labels', 'report.data'),
  348. addEffect:Application.application.menuPhysician.report.zoomHelpAdd,
  349. removeEffect:Application.application.menuPhysician.report.zoomHelpRemove});
  350. return helpPages;
  351. }
  352. }
  353. }