www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@mbcwidgets/@scrollTable/doSetupBaseClass.m

    function doSetupBaseClass( obj )
%DOSETUPBASECLASS Setup listeners
%
%  obj.doSetupBaseClass

%  Copyright 2000-2006 The MathWorks, Inc. and Ford Global Technologies, Inc.



obj.scrollTable_GeneralListeners = [ ...
        handle.listener(obj, obj.findprop('ShowRowHeaders'), 'PropertyPostSet', @i_setShowRows) ;...
        handle.listener(obj, obj.findprop('ShowColumnHeaders'), 'PropertyPostSet', @i_setShowCols) ;...
        handle.listener(obj, obj.findprop('MaximumObjectCacheSize'), 'PropertyPostSet', @i_setCacheSize) ;...
    ];

obj.scrollTable_DataListeners = [ ...
        handle.listener(obj, obj.findprop('RowHeaderData'), 'PropertyPostSet', @i_setRHData) ;...
        handle.listener(obj, obj.findprop('ColumnHeaderData'), 'PropertyPostSet', @i_setCHData) ;...
        handle.listener(obj, obj.findprop('MainData'), 'PropertyPostSet', @i_setMainData) ;...
    ];

obj.scrollTable_ScrollListeners = [ ...
        handle.listener(obj, obj.findprop('CurrentRow'), 'PropertyPostSet', @i_setRow) ;...
        handle.listener(obj, obj.findprop('CurrentColumn'), 'PropertyPostSet', @i_setColumn) ;...
    ];

obj.connect(xregfigurehook(obj.Parent),'up');


function i_setRow(srcobj,evt)
obj = evt.AffectedObject;
% Limit the property
obj.CurrentRow = max(min(evt.NewValue, obj.ScrollRowLimits(2)), obj.ScrollRowLimits(1));
if obj.canPaint
    obj.paintRowHeader;
    obj.paintMain;
end


function i_setColumn(srcobj,evt)
obj = evt.AffectedObject;
% Limit the property
obj.CurrentColumn = max(min(evt.NewValue, obj.ScrollColumnLimits(2)), obj.ScrollColumnLimits(1));
if obj.canPaint
    obj.paintColumnHeader;
    obj.paintMain;
end


function i_setRHData(srcobj,evt)
obj = evt.AffectedObject;
obj.updateDataFlag;
obj.updateRealSize;
if obj.canPaint
    if obj.isAlive
        obj.paintRowHeader;
    else
        obj.updateToLiveState;
    end
else
    obj.updateToDeadState;
end


function i_setCHData(srcobj,evt)
obj = evt.AffectedObject;
obj.updateDataFlag;
obj.updateRealSize;
if obj.canPaint
    if obj.isAlive
        obj.paintColumnHeader;
    else
        obj.updateToLiveState;
    end
else
    obj.updateToDeadState;
end


function i_setMainData(srcobj,evt)
obj = evt.AffectedObject;
obj.updateDataFlag;
obj.updateRealSize;
if obj.canPaint
    if obj.isAlive
        if obj.isCreatedCorrect
            obj.paintMain;
        else
            % Need to add/delete display objects
            obj.disableScrolling;
            scroll_change = obj.checkScrollLocation;
            obj.enableScrolling;
            obj.updateObjectArrays;
            obj.paintMain;
        end
    else
        obj.updateToLiveState;
    end
else
    obj.updateToDeadState;
end


function i_setShowRows(srcobj, evt)
obj = evt.AffectedObject;
obj.updateDataFlag;
obj.updateRealSize;
if obj.canPaint
    if obj.isAlive   
        obj.updateRowHeader;
    else
        obj.updateToLiveState;
    end
else
    obj.updateToDeadState;
end


function i_setShowCols(srcobj, evt)
obj = evt.AffectedObject;
obj.updateDataFlag;
obj.updateRealSize;
if obj.canPaint
    if obj.isAlive   
        obj.updateColumnHeader;
    else
        obj.updateToLiveState;
    end
else
    obj.updateToDeadState;
end


function i_setCacheSize(srcobj, evt)
if evt.NewValue<0
    obj.MaximumObjectCacheSize = 0;
end
evt.AffectedObject.doUpdateCacheSizes;