/**
 * @private
 * A Class which encapsulates individual action items within an ActionColumn and
 * acts as a proxy for various Component methods to allow ActionColumn items to be 
 * manipulated en masse by the {@link Ext.Action}s used to create them.
 */
Ext.define('Ext.grid.column.ActionProxy', {
    constructor: function(column, item, itemIndex) {
        this.column = column;
        this.item = item;
        this.itemIndex = itemIndex;
    },
 
    setHandler: function(handler) {
        this.item.handler = handler;
    },
 
    setDisabled: function(disabled) {
        if (disabled) {
            this.column.disableAction(this.itemIndex);
        } else {
            this.column.enableAction(this.itemIndex);
        }
    },
 
    setIconCls: function(iconCls) {
        this.item.iconCls = iconCls;
        this.column.getView().refreshView();
    },
 
    setIconGlyph: function(glyph) {
        this.item.glyph = glyph;
        this.column.getView().refreshView();
    },
    
    setHidden: function(hidden) {
        this.item.hidden = hidden;
        this.column.getView().refreshView();
    },
 
    setVisible: function(visible) {
        this.setHidden(!visible);
    },
 
    on: function() {
        // Allow the Action to attach its destroy listener. 
        return this.column.on.apply(this.column, arguments);
    }
});