         
         if (event.keyCode == dataGrid.editKey)
         {
-            // ignore F2 if we are already editing a cell.
+            // ignore F2 if we are already editing a cell or the column is not
+            // editable
             if (itemEditorInstance)
                 return;
             

                                                        false);
                return;
            }
            else
            {
                dataGrid.startItemEditorSession(grid.caretRowIndex, grid.caretColumnIndex);                
            }

 
    /**
     *  @private
     *  The IUIComponent related to a given object. If the object is not a IUIComponent
     *  then work up the display list until we find a IUIComponent. 
     *  @param  displayObject The object to get a IUIComponet from.
     *  @return returns the displayObject if it is a display object or its 
     *  closest parent that is a display object. 
     */ 
    private function getIUIComponent(displayObject:DisplayObject):IUIComponent
    {
        if (displayObject is IUIComponent)
            return IUIComponent(displayObject);
        
        var current:DisplayObject = displayObject.parent;
        while (current)
        {
            if (current is IUIComponent)
                return IUIComponent(current);
            
            current = current.parent;
        }
        
        return null;
    }
    
    /**
     *  @private
     * 
     *  Restore the focusable children flags.
     */ 
