      *  If <code>dataTipField</code> properties is also null in the grid control, 
      *  then use the <code>dataField</code> property.</p>
      * 
-     *  <p>If <code>dataTipFunction</code> is null, then this method is equivalent to:
-     *  <code>item[dataTipField].toString()</code>.   
+     *  <p>If <code>dataTipFunction</code> and <code>dataTipFormatter</code> are
+     *  null, then this method's value is the same as:
+     *  <code>item[dataTipField].toString()</code>.   If <code>dataTipFormatter</code> is 
+     *  specified then this method's value is the same as: 
+     *  <code>dataTipFormatter.format(item[dataTipField])</code>
      *  If resolving the item's <code>dataField</code>
      *  causes an error to be thrown, <code>ERROR_TEXT</code> is returned.</p>
      * 

     * 
     *  <p>If <code>labelFunction</code> is null, and <code>dataField</code> 
     *  is a string that does not contain "." field name separator characters, 
     *  then this method is equivalent to:</p>
     *
     *  <pre>item[dataField].toString()</pre>   
     *
     *  <p>If <code>dataField</code> is a "." separated
     *  path, then this method looks up each successive path element.  
     *  For example if <code>="foo.bar.baz"</code>, then this method returns
     *  the value of <code>item.foo.bar.baz</code>.   
     *  If resolving the item's <code>dataField</code>
     *  causes an error to be thrown, ERROR_TEXT is returned.</p>
     * 

    }
    
    //----------------------------------
    //  dataTipFormatter
    //----------------------------------
    
    private var _dataTipFormatter:IFormatter = null;
    private var dataTipFormatterStyleParentInvalid:Boolean = false;
    
    [Bindable("dataTipFormatterChanged")]
    [Inspectable(category="General")]
    
    /**
     *  Specifies the formatter used by the column's itemToDataTip() method to 
     *  convert dataProvider items to strings.
     * 
     *  <p>If the formatter's <code>styleParent</code> wasn't specified, it's set
     *  to the column's grid, so that the formatter inherits the grid's "locale" style.</p>
     *
     *  @default null
     * 
     *  @see #itemToDataTip
     *  @see #formatter
     *
     *  @default null
     *  
     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 2.5
     *  @productversion Flex 4.5
     */
    public function get dataTipFormatter():IFormatter
    {
        if (dataTipFormatterStyleParentInvalid && grid)
        {
            const asc:IAdvancedStyleClient = _dataTipFormatter as IAdvancedStyleClient;
            if (asc && (asc.styleParent != grid))
                grid.addStyleClient(asc);            
            dataTipFormatterStyleParentInvalid = false;
        }
        
        return _dataTipFormatter;
    }
    
    /**
     *  @private
     */
    public function set dataTipFormatter(value:IFormatter):void
    {
        if (_dataTipFormatter == value)
            return;
        
        if (grid && _dataTipFormatter)
        {
            const oldASC:IAdvancedStyleClient = _dataTipFormatter as IAdvancedStyleClient;
            if (oldASC && (oldASC.styleParent == grid))
                grid.removeStyleClient(oldASC);
        }        
        
        _dataTipFormatter = value;
        dataTipFormatterStyleParentInvalid = true;
        
        if (grid)
            grid.invalidateDisplayList();
        
        dispatchChangeEvent("dataTipFormatterChanged");
    }
    
    
    //----------------------------------
    //  dataTipFunction
    //----------------------------------
    
