/* SaveConfigBoardCommand.as */ package gov.va.med.edp.command.config { import com.adobe.cairngorm.commands.ICommand; import com.adobe.cairngorm.control.CairngormEvent; import gov.va.med.edp.business.config.SaveConfigBoardDelegate; import gov.va.med.edp.command.AbstractResponderCommand; import gov.va.med.edp.control.config.BoardConfigEvent; import gov.va.med.edp.model.TrackingModelLocator; import gov.va.med.edp.vo.ColumnSpecVO; import gov.va.med.edp.widget.InfoDialog; import gov.va.med.edp.util.BoardTools; import gov.va.med.edp.factory.SessionFactory; import gov.va.med.edp.util.Vista; import mx.rpc.IResponder; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; public class SaveConfigBoardCommand extends AbstractResponderCommand implements ICommand, IResponder { private var model:TrackingModelLocator = TrackingModelLocator.getInstance(); public function execute(event:CairngormEvent):void { var delegate: SaveConfigBoardDelegate = new SaveConfigBoardDelegate(this); var saveEvent: BoardConfigEvent = BoardConfigEvent(event); var xml:XML = ; var row:XML = ; row.@color = model.config.rowColorMap.id; xml.appendChild(row); var displayProperties:XML = ; displayProperties.@fontSize = model.config.displayBoardProperties.fontSize; displayProperties.@displayWidth = model.config.displayBoardProperties.displaySize.width; displayProperties.@displayHeight = model.config.displayBoardProperties.displaySize.height; displayProperties.@displayLabel = model.config.displayBoardProperties.displaySize.label; displayProperties.@scrollDelay = model.config.displayBoardProperties.scrollDelay; displayProperties.@squish = model.config.displayBoardProperties.squish; xml.appendChild(displayProperties); var colSpec: ColumnSpecVO; for (var i:int = 0; i < model.config.columns.length; i++) { colSpec = model.config.columns[i] as ColumnSpecVO; var node:XML = ; node.@att = colSpec.attribute; node.@header = colSpec.header; node.@color = (colSpec.colorMap != null) ? colSpec.colorMap.id : ""; node.@width = colSpec.width; node.@label = colSpec.label; xml.appendChild(node); } model.config.boardLoaded = false; delegate.saveConfigBoard(model.logArea, saveEvent.boardID, saveEvent.boardName, model.config.boardToken, xml); } public override function result(data:Object):void { var xml:XML = ResultEvent(data).result as XML; if ((xml.save.@status == "ok")|| (xml.save.@status == "collide")) { BoardTools.applyBoardSpec(model.config, xml); model.config.boardLoaded = true; if (xml.save.@status == "ok") { InfoDialog.show("New board colors saved."); } else { InfoDialog.show("Save failed: " + xml.save); } } if (xml.save.@status == "fail") { InfoDialog.show("Save failed: " + xml.save); } } protected override function getFaultMessage(faultEvent:FaultEvent):String { return "Error saving configuration for display board: " + super.getFaultMessage(faultEvent); } } }