<?xml version="1.0" encoding="utf-8"?>
<mx:Panel 
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:util="com.adobe.cairngorm.samples.dashboard.util.*">

    <mx:Script>
        <![CDATA[
            import com.adobe.cairngorm.control.CairngormEventDispatcher;
            import com.adobe.cairngorm.samples.dashboard.model.StockQuote;
            import com.adobe.cairngorm.samples.dashboard.model.StockPurchase;
            import com.adobe.cairngorm.samples.dashboard.events.GetStockQuoteEvent;    
            import com.adobe.cairngorm.samples.dashboard.events.PurchaseStockEvent;
            
            [Bindable]
            public var stockQuote : StockQuote;
            [Bindable]
            public var stockPurchase : StockPurchase;
                        
            private function getQuoteForSymbol() : void
            {
                var event : GetStockQuoteEvent = new GetStockQuoteEvent( symbolTextInput.text );
                CairngormEventDispatcher.getInstance().dispatchEvent( event );    
            }
            
            private function purchaseStock() : void
            {
                var event : PurchaseStockEvent = new PurchaseStockEvent( symbolTextInput.text, quantityTextInput.text as int );
                CairngormEventDispatcher.getInstance().dispatchEvent( event );
            }
        ]]>
    </mx:Script>
    
    <mx:CurrencyFormatter 
        id="standardEuroFormatter"  
        currencySymbol="" precision="2"/>
    
    <mx:StringValidator 
        minLength="2" 
        triggerEvent="change" 
        source="{ symbolTextInput }" property="text"
        valid="stockQuote.validateSymbol( true );" 
        invalid="stockQuote.validateSymbol( false );"/>

    <mx:NumberValidator 
        minValue="1" maxValue="100" domain="int" allowNegative="false" 
        triggerEvent="change" 
        source="{ quantityTextInput }" property="text"
        valid="stockPurchase.validateQuantity( true );" 
        invalid="stockPurchase.validateQuantity( false );"/>

    <mx:Form>
    
        <mx:FormItem label="Symbol">
            <mx:TextInput 
                id="symbolTextInput"/>
            <mx:Button 
                label="Get Quote" 
                enabled="{ stockQuote.isValid }" 
                click="getQuoteForSymbol();"/>
        </mx:FormItem>
        
        <mx:FormItem label="Price Quote">
            <mx:Label text="{ standardEuroFormatter.format( stockQuote.lastStockQuote ) }"/>
            <mx:Label text="{ stockQuote.statusMessage }"/>
        </mx:FormItem>
        
        <mx:FormItem label="Quantity">
            <mx:TextInput 
                id="quantityTextInput"/>
            <mx:Button 
                label="Purchase" 
                enabled="{ stockPurchase.isValid }" 
                click="purchaseStock();"/>
            <mx:Label text="{ stockPurchase.statusMessage }"/>
        </mx:FormItem>        
    </mx:Form>    
</mx:Panel>