<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import it.mxml.utilities.taxes.ITTaxCalculator;
import it.mxml.utilities.taxes.ENTaxCalcultator;
import it.mxml.utilities.taxes.DefaulTaxCalculator;
import it.mxml.utilities.taxes.ITaxCalculator;
import mx.collections.ArrayCollection;
import flash.system.Capabilities;
import flash.utils.getDefinitionByName
private var defaultTaxCalculator:DefaulTaxCalculator;
private var enTaxCalculator:ENTaxCalcultator;
private var itTaxCalculator:ITTaxCalculator;
[Bindable]
private var availableItems:ArrayCollection = new ArrayCollection([{name: "Flash CS4", price: 400}, {name: "Device Central CS4", price: 400},
{name: "Dreamweaver CS4", price: 600}, {name: "Photoshop CS4", price: 200},
{name: "Premiere CS4", price: 500}, {name: "Illustrator CS4", price: 800}]);
private var selectedItems:Array;
override protected function childrenCreated():void{
super.childrenCreated();
selectedItems = [];
}
private function doAdd():void{
var item:Object = items.selectedItem;
tracer.text += "Adding to the basket " + item.name + " $ " + item.price + "\n";
tracer.verticalScrollPosition = tracer.maxVerticalScrollPosition + 4;
selectedItems.push(item);
}
private function doCalculate():void{
var lang:String = Capabilities.language.toUpperCase();
var amount:Number = 0;
for each (var item:Object in selectedItems){
amount += item.price;
}
var calculator:ITaxCalculator;
var ClassDefinition:Class;
try{
ClassDefinition = getDefinitionByName("it.mxml.utilities.taxes." + lang + "TaxCalculator") as Class;
}catch(e:Error){
ClassDefinition = getDefinitionByName("it.mxml.utilities.taxes.DefaulTaxCalculator") as Class;
}
calculator = new ClassDefinition();
calculator.amount = amount;
tracer.text += "==================================\n";
tracer.text += "Amount: " + amount + "\n";
tracer.text += "Taxes: " + calculator.taxes + "\n";
tracer.text += "==================================\n";
tracer.verticalScrollPosition = tracer.maxVerticalScrollPosition + 4;
}
]]>
</mx:Script>
<mx:List id="items" x="10" y="10" dataProvider="{availableItems}" labelField="name" width="162"/>
<mx:Button x="10" y="174" label=":: add item ::" width="162" click="doAdd()"/>
<mx:Button x="10" y="204" label=":: calculate taxes ::" width="162" click="doCalculate()"/>
<mx:TextArea id="tracer" x="180" y="12" width="250" height="214"/>
</mx:Application>