package flare.vis.controls
{
    import flare.animate.Transitioner;
    import flare.vis.Visualization;
    import flare.vis.data.NodeSprite;
    
    import flash.display.InteractiveObject;
    import flash.events.MouseEvent;

    /**
     * Interactive control for expaning and collapsing graph or tree nodes
     * by clicking them. This control will only work when applied to a
     * Visualization instance.
     */
    public class ExpandControl extends Control
    {
        private var _cur:NodeSprite;
        
        /** Update function invoked after expanding or collapsing an item.
         *  By default, invokes the <code>update</code> method on the
         *  visualization with a 1-second transitioner. */
        public var update:Function = function():void {
            var vis:Visualization = _object as Visualization;
            if (vis) vis.update(1).play();
        }
        
        // --------------------------------------------------------------------
        
        /**
         * Creates a new ExpandControl.
         * @param filter a Boolean-valued filter function for determining which
         *  item this control will expand or collapse
         * @param update function invokde after expanding or collapsing an
         *  item.
         */        
        public function ExpandControl(filter:*=n