package {
    
    import de.popforge.parameter.Parameter;
    
    import flash.display.Graphics;
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.net.SharedObject;
    
    import net.saqoosha.gui.ParameterSlider;
    
    [SWF(width=640,height=480,backgroundColor=0xffffff,frameRate=60)]

    public class ParameterSliderTest extends Sprite {
        
        private var _radiusSlider:ParameterSlider;
        private var _thicknessSlider:ParameterSlider;
        private var _alphaSlider:ParameterSlider;
        
        private var _canvas:Shape;
        
        public function ParameterSliderTest() {
            this._canvas = this.addChild(new Shape()) as Shape;
            this._canvas.x = 320;
            this._canvas.y = 240;
            
            var so:SharedObject = SharedObject.getLocal('parameter');
            this._radiusSlider = this.addChild(ParameterSlider.createInt(10, 300, 100, 300, 'radius', so)) as ParameterSlider;
            this._radiusSlider.parameter.addChangedCallbacks(this.onParameterChanged);
            this._radiusSlider.x = this._radiusSlider.y = 10;
            this._thicknessSlider = this.addChild(ParameterSlider.createInt(1, 50, 15, 300, 'thickness', so)) as ParameterSlider;
            this._thicknessSlider.parameter.addChangedCallbacks(this.onParameterChanged);
            this._thicknessSlider.x = 10; this._thicknessSlider.y = 30;
            this._alphaSlider = this.addChild(ParameterSlider.createNumber(0, 1, 1, 300, 'alpha', so)) as ParameterSlider;
            this._alphaSlider.parameter.addChangedCallbacks(this.onParameterChanged);
            this._alphaSlider.x = 10; this._alphaSlider.y = 50;
            
            this.draw();
        }
        
        private function onParameterChanged(parameter:Parameter, oldValue:*, newValue:*):void {
            this.draw();
        }
        
        private function draw():void {
            var g:Graphics = this._canvas.graphics;
            g.clear();
            g.lineStyle(this._thicknessSlider.value, 0x0, this._alphaSlider.value);
            g.drawCircle(0, 0, this._radiusSlider.value);
        }
        
    }
    
}