<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
    minWidth="1024" minHeight="768"
    backgroundColor="0xCCCCCC" viewSourceURL="srcview/index.html">
    <mx:Script>
        <![CDATA[
            import com.themorphicgroup.observer.core.ObservableSprite;
            import com.themorphicgroup.observer.core.SpriteObserver;
            
            private var spriteCount:int = 0;
            
            private function addSprites():void
            {
                for (var i:int = 0; i < 10; i++)
                {
                    spriteCount++;
                    var s:ObservableSprite = new ObservableSprite(spriteCount, 400 + (300 * Math.random()), 0 + (300 * Math.random()), 30, 30);
                    SpriteObserver.getInstance().addObservable(s);
                    spriteHolder.addChild(s);
                }
            }
            
            private function colorSprites(color:uint):void
            {
                SpriteObserver.getInstance().colorSprites(color, onColorChange);
            }
            
            private function onColorChange(value:ObservableSprite):void
            {
                traceBox.text += "color changed: " + value.id + "\r";
            }
            
        ]]>
    </mx:Script>
    <mx:UIComponent id="spriteHolder"/>
    <mx:Panel title="Fun with Observer Pattern" x="10" y="10">
        <mx:VBox>
            <mx:Form>
                <mx:FormHeading label="Add Sprites, then color them"/>
                <mx:HBox>
                    <mx:Button label="Add 10 Sprites" click="addSprites()"/>
                    <mx:ColorPicker id="colorPicker" />
                    <mx:Button label="Color All Sprites" click="colorSprites(colorPicker.selectedColor)"/>
                </mx:HBox>
            </mx:Form>
            <mx:TextArea id="traceBox" width="300" height="200"/>
        </mx:VBox>
    </mx:Panel>
</mx:Application>