<?xml version="1.0" encoding="utf-8"?>
<mx:Application
  xmlns:mx="http://www.adobe.com/2006/mxml" 
  xmlns:controller="flater.cairngormtips.controller.*" 
  xmlns:generator="com.universalmind.cairngorm.events.generator.*" 
  xmlns:events="flater.cairngormtips.controller.events.*">
  
    <mx:Script>
        <![CDATA[
            import flater.cairngormtips.util.out;
            
            import mx.controls.Alert;
            import mx.rpc.events.ResultEvent;
            
            [Bindable] public var output : String = "";
            
            private function sequentialGenerator_Result( 
                                          event : Event ) : void
            {
                out( "*** sequentialGenerator has finished ***" );
            }
            
            private function parallelGenerator_Result( 
                                          event : Event ) : void
            {
                out( "*** parallelGenerator has finished ***" );
            }
        ]]>
    </mx:Script>
  
  
    <!-- ========================================================= -->
    <!--  Need to keep a reference to the FrontController so that  -->
    <!--  it is not garbage collected.                             -->
    <!--  CairngormTipsFrontController maps the Cairngorm Events   -->     
    <!--  used in the sample to the appropriate Cairngorm          -->
    <!--  Commands.                                                -->
    <!-- ========================================================= -->
    <controller:CairngormTipsFrontController />  

    <!-- ========================================================= -->
    <!--  sequentialGenerator - An instance of EventGenerator      -->
    <!--    responsible for dispatching the included events in     --> 
    <!--    sequence                                               -->
    <!-- ========================================================= -->
    <generator:EventGenerator id="sequentialGenerator"  
      trigger="sequence" result="sequentialGenerator_Result( event )">
        <generator:events>
            <mx:Array id="seqEvents">
                <events:GetConfigurationEvent />
                <events:DownloadSomethingEvent 
                  url="assets/images/flexIcon.jpg" /> 
            </mx:Array>
        </generator:events>
    </generator:EventGenerator>

    <!-- ========================================================= -->
    <!--  parallelGenerator - An instance of EventGenerator        -->
    <!--    responsible for dispatching the included events in     --> 
    <!--    parallel                                               -->
    <!-- ========================================================= -->
    <generator:EventGenerator id="parallelGenerator" 
      trigger="parallel" result="parallelGenerator_Result( event )">
        <generator:events>
            <events:GetConfigurationEvent />
            <events:DownloadSomethingEvent 
              url="assets/images/flexIcon.jpg" /> 
        </generator:events>
    </generator:EventGenerator>

    
    <!-- ========================================================= -->
    <!--  UI                                                       -->
    <!-- ========================================================= -->

    <mx:VBox horizontalAlign="center" height="100%">
        <mx:Button label="Start sequentialGenerator" 
          click="out( '' );
                 out( '*** sequentialGenerator dispatched ***' ); 
                   sequentialGenerator.dispatch();
                   event.target.enabled = false;" />
        
        <mx:Button label="Start parallelGenerator" 
          click="out( '' );
                 out( '*** parallelGenerator dispatched ***' );
                 parallelGenerator.dispatch();
                 event.target.enabled = false;" />
        
        <mx:TextArea id="consoleOutput" width="500" height="100%"
          text="{ output }" />
    </mx:VBox>
    
</mx:Application>