package com.imt.intimamedia.helpers { import com.imt.intimamedia.events.user.UserHelpEvent; import com.imt.intimamedia.model.ApplicationModelLocator; import flash.events.Event; import flash.events.MouseEvent; import mx.collections.ArrayCollection; import mx.containers.Canvas; import mx.containers.HBox; import mx.containers.VBox; import mx.controls.Alert; import mx.controls.CheckBox; import mx.controls.Image; import mx.controls.LinkButton; import mx.controls.Spacer; import mx.core.Application; import mx.core.UIComponent; import mx.effects.Parallel; import mx.effects.Zoom; import mx.events.ResizeEvent; import mx.managers.PopUpManager; import mx.resources.ResourceManager; import mx.skins.halo.HaloBorder; import mx.utils.ObjectUtil; public class HelpUtils { public static var helpCanvas : Canvas; public static var helpIndex : int; public static var helpPagesArray : ArrayCollection; public function HelpUtils() { } public static function addNavigationLink(helpIndex : int) : void { var phbox : HBox = new HBox(); var nhbox : HBox = new HBox(); if (helpIndex - 1 >= 0) { var prevLinkButton : LinkButton = new LinkButton(); prevLinkButton.label = ResourceManager.getInstance().getString('labels', 'previous') + ' ' + helpPagesArray.getItemAt(helpIndex - 1).label; prevLinkButton.name = helpPagesArray.getItemAt(helpIndex - 1).label; prevLinkButton.addEventListener(MouseEvent.CLICK, changeHelp ); prevLinkButton.setStyle("fontWeight", "bold"); prevLinkButton.setStyle("fontSize", 16); prevLinkButton.setStyle("color", "#FFFFFF"); phbox.addChild(prevLinkButton); } if (helpPagesArray.length > helpIndex + 1) { var nextLinkButton : LinkButton = new LinkButton(); nextLinkButton.label = ResourceManager.getInstance().getString('labels', 'next') + ' ' + helpPagesArray.getItemAt(helpIndex + 1).label; nextLinkButton.name = helpPagesArray.getItemAt(helpIndex + 1).label; nextLinkButton.addEventListener(MouseEvent.CLICK, changeHelp ); nextLinkButton.setStyle("fontWeight", "bold"); nextLinkButton.setStyle("fontSize", 16); nextLinkButton.setStyle("color", "#FFFFFF"); nhbox.addChild(nextLinkButton); } if (phbox.getChildren().length) { phbox.setStyle("backgroundColor", "#999999"); phbox.setStyle("horizontalAlign", "left"); phbox.setStyle("left", "20"); phbox.setStyle("bottom", "20"); phbox.setStyle("borderColor", "#222222"); phbox.setStyle("borderThickness", "1"); phbox.setStyle("borderStyle", "solid"); helpCanvas.addChild(phbox); } if (nhbox.getChildren().length) { nhbox.setStyle("backgroundColor", "#999999"); nhbox.setStyle("horizontalAlign", "right"); nhbox.setStyle("right", "20"); nhbox.setStyle("bottom", "20"); nhbox.setStyle("borderColor", "#222222"); nhbox.setStyle("borderThickness", "1"); nhbox.setStyle("borderStyle", "solid"); helpCanvas.addChild(nhbox); } } public static function loadHelp(helpPages : ArrayCollection, idx : int) : void { if (ApplicationModelLocator.getInstance().generalMenuActive) return; helpPagesArray = helpPages; showHelp(helpPages.getItemAt(idx).page, helpPages.getItemAt(idx).image, helpPages.getItemAt(idx).addEffect, helpPages.getItemAt(idx).removeEffect); helpIndex = idx; addNavigationLink(idx); } public static function changeHelp(event : Event) : void { var found : Boolean = false; hideHelp(event); for each (var help : Object in helpPagesArray) // labels have to be unique; there is a comparison on it if (event.currentTarget.name == help.label) { helpIndex = helpPagesArray.getItemIndex(help); found = true; break; } if (!found) return; showHelp(helpPagesArray.getItemAt(helpIndex).page, helpPagesArray.getItemAt(helpIndex).image, helpPagesArray.getItemAt(helpIndex).addEffect, helpPagesArray.getItemAt(helpIndex).removeEffect); addNavigationLink(helpIndex); } public static function showHelp(page : UIComponent, image : Image, addEffect : Zoom, removeEffect : Parallel) : void { if (ApplicationModelLocator.getInstance().generalMenuActive) return; var closeButton : Image = new Image(); closeButton.source = "/images/help/close.png"; closeButton.width = 20; closeButton.height = 20; closeButton.buttonMode = true; closeButton.useHandCursor = true; closeButton.addEventListener( MouseEvent.CLICK, hideHelp ); var helpCheckBox : CheckBox = new CheckBox(); helpCheckBox.label = ResourceManager.getInstance().getString('labels', 'hide.help'); helpCheckBox.labelPlacement = "right"; helpCheckBox.x = 450; helpCheckBox.setStyle("bottom", "20"); helpCheckBox.selected = !ApplicationModelLocator.getInstance().connectedUser.help; helpCheckBox.addEventListener(MouseEvent.CLICK, setUserHelp); image.visible = true; image.includeInLayout = true; helpCanvas = new Canvas(); // image width = 1000 and image height = 702 image.maintainAspectRatio = true; helpCanvas.width = image.getExplicitOrMeasuredWidth(); helpCanvas.height = image.getExplicitOrMeasuredHeight(); closeButton.setStyle("top", "10"); closeButton.setStyle("right", "15"); helpCanvas.addChild(image); helpCanvas.addChild(closeButton); helpCanvas.addChild(helpCheckBox); helpCanvas.verticalScrollPolicy = "off"; helpCanvas.horizontalScrollPolicy = "off"; helpCanvas.addEventListener( Event.COMPLETE, centerHelp ); helpCanvas.addEventListener( ResizeEvent.RESIZE, centerHelp ); // CJA : Ajouter Le 28 Aout 2013 (Demande PJT) helpCanvas.addEventListener( MouseEvent.CLICK, hideHelp ); helpCanvas.setStyle("addedEffect", addEffect); helpCanvas.setStyle("removedEffect", removeEffect); PopUpManager.addPopUp( helpCanvas, UIComponent(page), true ); } public static function centerHelp(event : Event) : void { PopUpManager.centerPopUp( helpCanvas as Canvas ); } public static function hideHelp(event : Event) : void { helpCanvas.removeAllChildren(); helpCanvas.removeEventListener( Event.COMPLETE, centerHelp ); helpCanvas.removeEventListener( ResizeEvent.RESIZE, centerHelp ); PopUpManager.removePopUp( helpCanvas as Canvas ); } public static function setUserHelp( event : Event ) : void { if ((event.currentTarget as CheckBox).selected) ApplicationModelLocator.getInstance().connectedUser.help = false; else ApplicationModelLocator.getInstance().connectedUser.help = true; new UserHelpEvent(ApplicationModelLocator.getInstance().connectedUser.id, ApplicationModelLocator.getInstance().connectedUser.help).dispatch(); } public static function loadPatientHelp(image : Image) : void { if (ApplicationModelLocator.getInstance().generalMenuActive) return; // help pages of Patient var helpPages : ArrayCollection = HelpUtils.buildPatientHelpPages(); var idx : int = 0; if (!ObjectUtil.compare(image, Application.application.physicianMenuHelp)) idx = 0; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.patient.patientFile.searchPatientHelp)) idx = 1; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.patient.patientFile.createPatientHelp)) idx = 2; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.patient.patientFile.patientTabHelp)) idx = 3; HelpUtils.loadHelp(helpPages, idx); } public static function buildPatientHelpPages() : ArrayCollection { // labels have to be unique; there is a comparison on it var helpPages : ArrayCollection = new ArrayCollection(); helpPages.addItem({page:Application.application, image:Application.application.physicianMenuHelp, label:ResourceManager.getInstance().getString('labels', 'main.menu'), addEffect:Application.application.zoomHelpAdd, removeEffect:Application.application.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.patient.patientFile, image:Application.application.menuPhysician.patient.patientFile.searchPatientHelp, label:ResourceManager.getInstance().getString('labels', 'label.search'), addEffect:Application.application.menuPhysician.patient.patientFile.zoomHelpAdd, removeEffect:Application.application.menuPhysician.patient.patientFile.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.patient.patientFile, image:Application.application.menuPhysician.patient.patientFile.createPatientHelp, label:ResourceManager.getInstance().getString('labels', 'title.patientFile'), addEffect:Application.application.menuPhysician.patient.patientFile.zoomHelpAdd, removeEffect:Application.application.menuPhysician.patient.patientFile.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.patient.patientFile, image:Application.application.menuPhysician.patient.patientFile.patientTabHelp, label:ResourceManager.getInstance().getString('labels', 'patient.tabs'), addEffect:Application.application.menuPhysician.patient.patientFile.zoomHelpAdd, removeEffect:Application.application.menuPhysician.patient.patientFile.zoomHelpRemove}); return helpPages; } public static function loadAcquireHelp(image : Image) : void { if (ApplicationModelLocator.getInstance().generalMenuActive) return; // help pages of Acquire var helpPages : ArrayCollection = HelpUtils.buildAcquireHelpPages(); var idx : int = 0; if (!ObjectUtil.compare(image, Application.application.menuPhysician.acquire.acquireGlobalProcessHelp)) idx = 0; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.acquire.acquireAcquisitionHelp)) idx = 1; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.acquire.acquireAffectationHelp)) idx = 2; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.acquire.acquireThumbnailHelp)) idx = 3; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.acquire.acquireLesionsHelp)) idx = 4; HelpUtils.loadHelp(helpPages, idx); } public static function buildAcquireHelpPages() : ArrayCollection { // labels have to be unique; there is a comparison on it var helpPages : ArrayCollection = new ArrayCollection(); helpPages.addItem({page:Application.application.menuPhysician.acquire, image:Application.application.menuPhysician.acquire.acquireGlobalProcessHelp, label:ResourceManager.getInstance().getString('labels', 'physicianAcquire'), addEffect:Application.application.menuPhysician.acquire.zoomHelpAdd, removeEffect:Application.application.menuPhysician.acquire.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.acquire, image:Application.application.menuPhysician.acquire.acquireAcquisitionHelp, label:ResourceManager.getInstance().getString('labels', 'measures.label.images'), addEffect:Application.application.menuPhysician.acquire.zoomHelpAdd, removeEffect:Application.application.menuPhysician.acquire.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.acquire, image:Application.application.menuPhysician.acquire.acquireAffectationHelp, label:ResourceManager.getInstance().getString('labels', 'title.affectation'), addEffect:Application.application.menuPhysician.acquire.zoomHelpAdd, removeEffect:Application.application.menuPhysician.acquire.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.acquire, image:Application.application.menuPhysician.acquire.acquireThumbnailHelp, label:ResourceManager.getInstance().getString('labels', 'acquire.incidence'), addEffect:Application.application.menuPhysician.acquire.zoomHelpAdd, removeEffect:Application.application.menuPhysician.acquire.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.acquire, image:Application.application.menuPhysician.acquire.acquireLesionsHelp, label:ResourceManager.getInstance().getString('labels', 'title.lesion'), addEffect:Application.application.menuPhysician.acquire.zoomHelpAdd, removeEffect:Application.application.menuPhysician.acquire.zoomHelpRemove}); return helpPages; } public static function loadMeasuresHelp(image : Image) : void { if (ApplicationModelLocator.getInstance().generalMenuActive) return; // help pages of Measures var helpPages : ArrayCollection = HelpUtils.buildMeasuresHelpPages(); var idx : int = 0; if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresThumbnailHelp)) idx = 0; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresHelp)) idx = 1; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresCalibrationHelp)) idx = 2; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresEndingCalibrationHelp)) idx = 3; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresImtButtonHelp)) idx = 4; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresDistanceButtonHelp)) idx = 5; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.generalMeasure.measures.measuresAreaButtonHelp)) idx = 6; HelpUtils.loadHelp(helpPages, idx); } public static function buildMeasuresHelpPages() : ArrayCollection { // labels have to be unique; there is a comparison on it var helpPages : ArrayCollection = new ArrayCollection(); helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures, image:Application.application.menuPhysician.generalMeasure.measures.measuresThumbnailHelp, label:ResourceManager.getInstance().getString('labels', 'images'), addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd, removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures, image:Application.application.menuPhysician.generalMeasure.measures.measuresHelp, label:ResourceManager.getInstance().getString('labels', 'physicianMeasure'), addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd, removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures, image:Application.application.menuPhysician.generalMeasure.measures.measuresCalibrationHelp, label:ResourceManager.getInstance().getString('labels', 'measures.label.scale'), addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd, removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures, image:Application.application.menuPhysician.generalMeasure.measures.measuresEndingCalibrationHelp, label:ResourceManager.getInstance().getString('labels', 'scale.next'), addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd, removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures, image:Application.application.menuPhysician.generalMeasure.measures.measuresImtButtonHelp, label:ResourceManager.getInstance().getString('labels', 'measures.label.imt'), addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd, removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures, image:Application.application.menuPhysician.generalMeasure.measures.measuresDistanceButtonHelp, label:ResourceManager.getInstance().getString('labels', 'distance'), addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd, removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.generalMeasure.measures, image:Application.application.menuPhysician.generalMeasure.measures.measuresAreaButtonHelp, label:ResourceManager.getInstance().getString('labels', 'area'), addEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpAdd, removeEffect:Application.application.menuPhysician.generalMeasure.measures.zoomHelpRemove}); return helpPages; } public static function loadReportHelp(image : Image) : void { if (ApplicationModelLocator.getInstance().generalMenuActive) return; // help pages of Report var helpPages : ArrayCollection = HelpUtils.buildReportHelpPages(); var idx : int; if (!ObjectUtil.compare(image, Application.application.menuPhysician.report.reportConfigurationHelp)) idx = 0; else if (!ObjectUtil.compare(image, Application.application.menuPhysician.report.reportDataHelp)) idx = 1; HelpUtils.loadHelp(helpPages, idx); } public static function buildReportHelpPages() : ArrayCollection { var helpPages : ArrayCollection = new ArrayCollection(); helpPages.addItem({page:Application.application.menuPhysician.report, image:Application.application.menuPhysician.report.reportConfigurationHelp, label:ResourceManager.getInstance().getString('labels', 'report.settings'), addEffect:Application.application.menuPhysician.report.zoomHelpAdd, removeEffect:Application.application.menuPhysician.report.zoomHelpRemove}); helpPages.addItem({page:Application.application.menuPhysician.report, image:Application.application.menuPhysician.report.reportDataHelp, label:ResourceManager.getInstance().getString('labels', 'report.data'), addEffect:Application.application.menuPhysician.report.zoomHelpAdd, removeEffect:Application.application.menuPhysician.report.zoomHelpRemove}); return helpPages; } } }