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