 import mx.events.SandboxMouseEvent;
 import mx.graphics.SolidColor;
 import mx.managers.IFocusManagerComponent;
+import mx.utils.EventUtil;
 import mx.utils.MatrixUtil;
 
 import spark.components.Button;

                e.ctrlKey, e.altKey, e.shiftKey, e.buttonDown, e.delta);
        e.target.dispatchEvent(cancelableEvent);               
    }
    
    /**
     *  @private
     */
    private static function addDownDragUpHandler(target:UIComponent, handler:Function):void
    {
        var f:Function = function(e:Event):void 
        {
            var sbr:IEventDispatcher;
            switch(e.type)
            {
                case MouseEvent.MOUSE_DOWN:
                    if (e.isDefaultPrevented())
                        break;
                    handler(e);
                    sbr = target.systemManager.getSandboxRoot();
                    sbr.addEventListener(MouseEvent.MOUSE_MOVE, f, true);
                    sbr.addEventListener(MouseEvent.MOUSE_UP, f, true );
                    sbr.addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, f, true); 
                    break;
                case MouseEvent.MOUSE_MOVE:
                    handler(e);
                    break;
                case MouseEvent.MOUSE_UP:
                    handler(e);
                    sbr = target.systemManager.getSandboxRoot(); 
                    sbr.removeEventListener(MouseEvent.MOUSE_MOVE, f, true);
                    sbr.removeEventListener(MouseEvent.MOUSE_UP, f, true);
                    sbr.removeEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, f, true); 
                    break;
                case "removeHandler":
                    target.removeEventListener("removeHandler", f);            
                    target.removeEventListener(MouseEvent.MOUSE_DOWN, f);
                    sbr = target.systemManager.getSandboxRoot();
                    sbr.removeEventListener(MouseEvent.MOUSE_MOVE, f, true);
                    sbr.removeEventListener(MouseEvent.MOUSE_UP, f, true);
                    sbr.removeEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, f, true); 
                    break;
            }
        }
        target.addEventListener(MouseEvent.MOUSE_DOWN, f);
        target.addEventListener("removeHandler", f);
    }
    
    /**
     *  @private
     */
    private static function removeDownDragUpHandler(target:UIComponent, handler:Function):void
    {
        target.dispatchEvent(new RemoveHandlerEvent(handler));
    }
    
    
    //--------------------------------------------------------------------------
    //
    //  IList listeners: columns, dataProvider

        if (_typicalItem == value)
            return;
        
        _typicalItem = value;
        typicalItemChanged = true;
        
        invalidateProperties();
