<?xml version="1.0" encoding="utf-8"?> <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:ac="com.adobe.ac.*" xmlns:view="com.adobe.cairngorm.samples.dashboard.view.*"> <mx:Script> <![CDATA[ import com.adobe.cairngorm.control.CairngormEventDispatcher; import com.adobe.cairngorm.samples.dashboard.model.StockTransaction; import com.adobe.cairngorm.samples.dashboard.events.GetStockQuoteEvent; import com.adobe.cairngorm.samples.dashboard.events.PurchaseStockEvent; import mx.controls.Alert; [Bindable] public var stockTransaction : StockTransaction; 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 ); } private function createChargedMessage() : void { Alert.show( "Thanks! Your bank account has been charged" ); } ]]> </mx:Script> <ac:ObserveValue id="observe" source="{ stockTransaction.stockPurchase.isComplete }" handler="{ createChargedMessage }" value="{ true }"/> <mx:CurrencyFormatter id="standardEuroFormatter" currencySymbol="€" precision="2"/> <view:StatusMessageFormatter id="statusFormatter" statusMessages="{ [ '', 'Quote retrieval error.', 'Purchase error.', 'Purchase succesfull.' ] }"/> <mx:StringValidator minLength="2" triggerEvent="change" source="{ symbolTextInput }" property="text" valid="stockTransaction.stockQuote.validateSymbol( true );" invalid="stockTransaction.stockQuote.validateSymbol( false );"/> <mx:NumberValidator minValue="1" maxValue="100" domain="int" allowNegative="false" triggerEvent="change" source="{ quantityTextInput }" property="text" valid="stockTransaction.stockPurchase.validateQuantity( true );" invalid="stockTransaction.stockPurchase.validateQuantity( false );"/> <mx:Form> <mx:FormItem label="Symbol"> <mx:TextInput id="symbolTextInput"/> <mx:Button label="Get Quote" enabled="{ stockTransaction.stockQuote.isValid }" click="getQuoteForSymbol();"/> </mx:FormItem> <mx:FormItem label="Price Quote"> <mx:Label text="{ standardEuroFormatter.format( stockTransaction.stockQuote.lastStockQuote ) }"/> </mx:FormItem> <mx:FormItem label="Quantity"> <mx:TextInput id="quantityTextInput"/> <mx:Button label="Purchase" enabled="{ stockTransaction.stockPurchase.isValid }" click="purchaseStock();"/> <mx:Label text="{ observe.execute( statusFormatter.format, stockTransaction.status ) }"/> </mx:FormItem> </mx:Form> </mx:Panel>