www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/+mbcgui/+widget/@ClassicTable/doSetupClassicGrid.m

    function doSetupClassicGrid(obj)
%DOSETUPCLASSICGRID Set the table elements into the grid layout
%
%  DOSETUPCLASSICGRID(OBJ) sets up the grid layout to correctly contain the table
%  display objects and the scrollbars.

% Copyright 2015 The MathWorks, Inc. and Ford Global Technologies, Inc.

if obj.isCreatedCorrect && obj.canPaint
    % Flags to indicate that various components should be visible or not
    SHOW_HSCROLL = (diff(obj.ScrollColumnLimits)>0);
    SHOW_VSCROLL = (diff(obj.ScrollRowLimits)>0);
    SHOW_TL = false; SHOW_TR = false; SHOW_BL = false;
    SHOW_BR = SHOW_HSCROLL && SHOW_VSCROLL;
    
    [nR, nC] = size(obj.MainObjects);
    if SHOW_HSCROLL
        nR = nR+1;
    end
    if obj.ShowColumnHeaders
        nR = nR+1;
    end
    if SHOW_VSCROLL
        nC = nC+1;
    end
    if obj.ShowRowHeaders
        nC = nC+1;
    end
    
    rowsizes = repmat(-1, 1, nR);
    colsizes = repmat(-1, 1, nC);
    els = cell(nR, nC);
    
    if obj.ShowRowHeaders && obj.ShowColumnHeaders
        els{1} = obj.TopLeftCorner;
        els = obj.convertToCell(els, obj.ColumnHeaderObjects, 1, 2);
        els = obj.convertToCell(els, obj.RowHeaderObjects, 2, 1);
        els = obj.convertToCell(els, obj.MainObjects, 2, 2);
        SHOW_TL = true;
        rowsizes(1) = obj.ColumnHeaderWidth;
        colsizes(1) = obj.RowHeaderWidth;
    elseif obj.ShowRowHeaders
        els = obj.convertToCell(els, obj.RowHeaderObjects, 1, 1);
        els = obj.convertToCell(els, obj.MainObjects, 1, 2);
        colsizes(1) = obj.RowHeaderWidth;
    elseif obj.ShowColumnHeaders
        els = obj.convertToCell(els, obj.ColumnHeaderObjects, 1, 1);
        els = obj.convertToCell(els, obj.MainObjects, 2, 1);
        rowsizes(1) = obj.ColumnHeaderWidth;
    else
        els = obj.convertToCell(els, obj.MainObjects, 1, 1);
    end
    
    % variable for holding marge settings for the scrollbars
    mergeargs = {};
    if SHOW_HSCROLL
        if obj.ScrollBarStyle==1 && obj.ShowRowHeaders
            els{end, 2} = obj.hSliderbar;
            SHOW_BL = true;
            els{end, 1} = obj.BottomLeftCorner;
            if SHOW_BR
                mergeargs = [mergeargs, {'mergeblock', {[nR nR],[2 nC-1]}}];
            else
                mergeargs = [mergeargs, {'mergeblock', {[nR nR],[2 nC]}}];
            end
        else
            els{end, 1} = obj.hSliderbar;
            if SHOW_BR
                mergeargs = [mergeargs, {'mergeblock', {[nR nR],[1 nC-1]}}];
            else
                mergeargs = [mergeargs, {'mergeblock', {[nR nR],[1 nC]}}];
            end
        end
        rowsizes(end) = obj.ScrollbarWidth;
    end
    if SHOW_VSCROLL
        if obj.ScrollBarStyle==1 && obj.ShowColumnHeaders
            els{2, end} = obj.vSliderbar;
            SHOW_TR = true;
            els{1, end} = obj.TopRightCorner;
            if SHOW_BR
                mergeargs = [mergeargs, {'mergeblock', {[2 nR-1],[nC nC]}}];
            else
                mergeargs = [mergeargs, {'mergeblock', {[2 nR],[nC nC]}}];
            end
        else
            els{1, end} = obj.vSliderbar;
            if SHOW_BR
                mergeargs = [mergeargs, {'mergeblock', {[1 nR-1],[nC nC]}}];
            else
                mergeargs = [mergeargs, {'mergeblock', {[1 nR],[nC nC]}}];
            end
        end
        colsizes(end) = obj.ScrollbarWidth;
    end
    if SHOW_BR
        els{end, end} = obj.BottomRightCorner;
    end
    
    
    set(obj.gridObject, ...
        'clearmerge', [], ...
        'dimension', [nR, nC], ...
        'rowsizes', rowsizes, ...
        'colsizes', colsizes, ...
        'elements', els, ...
        mergeargs{:});
    
    set(obj.EmptyTableComponent, 'Visible', 'off');
    obj.setComponentVisible(obj.hSliderbar, obj.Visible, SHOW_HSCROLL);
    obj.setComponentVisible(obj.vSliderbar, obj.Visible, SHOW_VSCROLL);
    obj.setComponentVisible(obj.TopLeftCorner, obj.Visible, SHOW_TL);
    obj.setComponentVisible(obj.TopRightCorner, obj.Visible, SHOW_TR);
    obj.setComponentVisible(obj.BottomLeftCorner, obj.Visible, SHOW_BL);
    obj.setComponentVisible(obj.BottomRightCorner, obj.Visible, SHOW_BR);
    
else
    sz_D = obj.pGetDataSize;
    if all(sz_D==0)
        set(obj.gridObject, 'clearmerge', [], ...
            'dimension', [1 1], ...
            'rowsizes', [], ...
            'colsizes', [], ...
            'elements', {obj.EmptyTableComponent});
        set(obj.EmptyTableComponent, 'Visible', obj.Visible);
    else
        set(obj.gridObject, 'dimension', [0 0], 'elements', {});
        set(obj.EmptyTableComponent, 'Visible', 'off');
    end
    set([obj.hSliderbar; obj.vSliderbar], 'Visible', 'off');
    set(obj.TopLeftCorner, 'Visible', 'off');
    set(obj.TopRightCorner, 'Visible', 'off');
    set(obj.BottomLeftCorner, 'Visible', 'off');
    set(obj.BottomRightCorner, 'Visible', 'off');
end
end