<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="416" height="276" viewSourceURL="srcview/index.html" >
    <mx:Script>
        <![CDATA[
            import mx.messaging.MessageResponder;
            import mx.messaging.messages.RemotingMessage;
            import mx.messaging.Channel;
            import mx.messaging.events.ChannelEvent;
            import mx.utils.UIDUtil;
            import mx.messaging.events.MessageEvent;
            import mx.rpc.AsyncRequest;
            import mx.messaging.MessageAgent;
            import mx.messaging.ChannelSet;
            import mx.messaging.messages.AsyncMessage;
            import mx.messaging.config.ServerConfig;
            import mx.controls.Alert;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;
            [Bindable]
            public var opsList: Array = [ {label:"+", data:1}, 
                                          {label:"-", data:2}, 
                                          {label:"*", data:3},
                                          {label:"/", data:4} ];
            private var invokeTime:Number;                                          
                          
            private function sendRequest():void
            {
                if( arg1.text.length == 0 )
                {
                    arg1.setFocus();
                    Alert.show( "Argument 1 is missing", "Incomplete Data" );
                }
                else if( arg2.text.length == 0 )
                {
                    arg2.setFocus();
                    Alert.show( "Argument 2 is missing", "Incomplete Data" );
                } 
                else
                {
                    invokeTime = new Date().getTime();
                    calculatorService.concurrency
                    calculatorService.Calculate( arg1.text, op.selectedItem.data, arg2.text );
                }
            }
            
            private function gotError( fault:FaultEvent ):void
            {
                invTime.text = (new Date().getTime() - invokeTime) + " ms";                
                serverResult.text = "Error";                
                Alert.show( "Server reported an error - " + fault.fault.faultString, "Error" );
            }   
            
            private function gotCalculationResult( result:ResultEvent ):void
            {
                invTime.text = (new Date().getTime() - invokeTime) + " ms";
                serverResult.text = result.result.toString();                
            }                      
        ]]>
    </mx:Script>
    <mx:Panel x="10" y="10" width="396" height="253" layout="absolute" title="Basic Remoting Invocation Example">
        <mx:Text x="50" y="23" text="Argument 1:"/>
        <mx:Button x="50" y="113" label="Calculate result on the server" click="sendRequest()"/>
        <mx:TextInput id="arg1" restrict="0-9" x="126" y="21" width="59"/>
        <mx:Text x="50" y="81" text="Argument 2:"/>
        <mx:Text x="50" y="155" text="Server responded:"/>
        <mx:TextInput id="arg2" restrict="0-9" x="126" y="79" width="59"/>
        <mx:Text x="50" y="51" text="Operation:"/>
        <mx:ComboBox id="op" x="126" y="49" dataProvider="{opsList}" width="59"></mx:ComboBox>
        <mx:HRule x="50" y="145" width="298" height="1"/>
        <mx:Label x="155" y="155" id="serverResult" fontWeight="bold"/>
        <mx:Label x="50" y="181" text="Invocation time:"/>
        <mx:Label x="155" y="181" id="invTime"/>
    </mx:Panel>
    
    <mx:RemoteObject id="calculatorService" destination="GenericDestination" source="Weborb.Examples.BasicService" fault="gotError(event)">
        <mx:method name="Calculate" result="gotCalculationResult(event)" />
    </mx:RemoteObject>
    
</mx:Application>