<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="feedback('Application Initialized')">
    
    <mx:Script>
        <![CDATA[
            import mx.core.UIComponent;
            import mx.controls.Alert; 
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import mx.utils.ObjectUtil; 
            import mx.controls.Alert;
            import mx.core.UIComponent;
            import com.cynergysystems.graphics.BitmapUtil;
            import mx.managers.CursorManager;
 
            private function saveImage() : void
            {
                mx.managers.CursorManager.setBusyCursor();
                feedback("Exporting Image...");
                var data : ByteArray = BitmapUtil.toJPEG( getUIComponentBitmapData( UIComponent(Application.application) ), 65 );
                dataManager.exportToSession(data)
            }
            
            private function saveImageResult( event : ResultEvent ) : void
            {
                mx.managers.CursorManager.removeBusyCursor();
                feedback("saveImageResult: " + event.result.toString() );
                navigateToURL( new URLRequest("components/cynergysystems/retrieveImage.cfm"), "_blank");
            }
            
            private function server_fault( event : FaultEvent ):void
            {
                mx.managers.CursorManager.removeBusyCursor();
                feedback("server_fault:" + "\n" + ObjectUtil.toString(event.fault));
                Alert.show( ObjectUtil.toString(event.fault) );
            }
            
            private function getUIComponentBitmapData( target : UIComponent ) : BitmapData
            { 
                feedback("getUIComponentBitmapData on " + target.toString() );
                var bd : BitmapData = new BitmapData( target.width, target.height );
                var m : Matrix = new Matrix();
                bd.draw( target, m );
                return bd;  
            }
            
            private function feedback( text : String ) : void
            {
                feedbackText.text =  new Date().toString() + ": " + text + "\n" + feedbackText.text;
            }
            
        ]]>
    </mx:Script>
    
    <mx:RemoteObject
        id="dataManager"
        showBusyCursor="true"
        destination="ColdFusion" source="BitmapDataExport.components.cynergysystems.JPGExport">
        
        <mx:method name="exportToSession" result="saveImageResult(event)" fault="server_fault(event)" />
    </mx:RemoteObject>
    
    <mx:Button x="10" y="10" label="Export Image" click="saveImage()" />
    <mx:TextArea id="feedbackText" top="40" left="10" right="10" bottom="10" wordWrap="false"/>
    
</mx:Application>