www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/+cgmergesetup/MergeItemsPage.m
classdef MergeItemsPage < cgcalsetup.WizardPage %CGMERGESETUP.MERGEITEMS wizard page for setting up composite models % Base class for CageModelPage and TestplanPage % Copyright 2009-2015 The MathWorks, Inc. and Ford Global Technologies, Inc. properties %MODELLIST table for displaying items to be merged ModelList %INPUTLIST control to display list of inputs for composite model % This list does not include the model variable InputList end properties(Access=private) %HTOTALSELECTED control to display total number of items to be merged. hTotalSelected end methods function updateData(M) %UPDATEDATA update mergesetup data % updateData(M) C = M.Data; if length(C.pSelected)>1 % set up defaults C.setDefaults(); end end function updatePage(M,iFace) %UPDATEPAGE update % updatePage(M,iFace) updateMergeList(M); updateInputList(M); updateResponseTool(M); enableNext(M,iFace); end end methods(Access=protected) function M = MergeItemsPage(fh,iFace,C) %MERGEITEMSPAGE protected constructor % M = MergeItemsPage(fh,iFace,C); if nargin M.Data = C; M.Layout = createLayout(M,fh,iFace); updatePage(M,iFace) end end function MainLyt = createLayout(M,fh,iFace) %createLayout create main layout for model page % % MainLyt = createLayout(M,fh,iFace) M.ModelList = mbcwidgets.Table1D( 'list',... 'parent', fh,... 'Editable',true,... 'Tag','ModelList',... 'ValueChangedCallback',{@cbSelectItem,M,iFace},... 'SelectionMode', 'SingleRow'); configureMergeTable(M); M.hTotalSelected = uicontrol('Parent',fh,... 'HorizontalAlignment','left',... 'Style','text'); M.InputList = mbcgui.widget.Label('Parent', fh, ... 'HorizontalAlignment', 'left'); hInputLabel = xregGui.labelcontrol('parent',fh, ... 'LabelSizeMode', 'absolute', ... 'LabelSize', 40, ... 'ControlSizeMode', 'relative', ... 'ControlSize', 1, ... 'String', 'Inputs:', ... 'Control', M.InputList); hResponse = createResponseTool(M,fh,iFace); Lyt=xreggridbaglayout(fh,'dimension',[3 2],... 'rowsizes',[-1 25 20],... 'colsizes',[-1 150],... 'gapx', 20, ... 'gapy',5,... 'border',[10 10 10 10],... 'mergeblock',{[1 1],[1 2]},... 'mergeblock',{[3 3],[1 2]},... 'elements',{M.ModelList,M.hTotalSelected,hInputLabel,... [],hResponse,[]}); MainLyt = addInfoPane(M,fh,'Model',Lyt); end function updateMergeList(M) %UPDATEMERGELIST update merge list % updateMergeList(M) %update table data updateMergeTable(M) C = M.Data; % update selected items [OK,loc] = ismember(C.Labels,pveceval(C.pSelected,@getname)); C.pSelected = C.pSelected(loc(OK)); % check boxes M.ModelList.Peer.setChecks(OK); M.ModelList.Peer.setIconData(C.IconFiles,0); % total number selected set(M.hTotalSelected,'String',sprintf('Total selected: %d',sum(OK))); end function updateInputList(M) %UPDATEINPUTLIST update model input list % updateInputList(M) C = M.Data; % List is displayed as a comma separated string if isempty(C.InputList) List = '<none>'; else List = mbcListString(C.InputList); end set(M.InputList,'String',List); end function changeMergeItems(M) %CHANGEMERGEITEMS % changeMergeItems(M) C = M.Data; OK = ismember(C.Labels,pveceval(C.pSelected,@getname)); set(M.hTotalSelected,'String',sprintf('Total selected: %d',sum(OK))); updateInputList(M); updateResponseTool(M); end function f= getNextPage(M) %#ok<MANU> %getNextPage next page is for mode setup f = @cgmergesetup.ModePage.createPage; end end methods(Abstract,Access=protected) enableNext(M,iFace,State) configureMergeTable(M) updateMergeTable(M) updateResponseTool(M) Lyt = createResponseTool(varargin) end end function cbSelectItem(h,evt,M,iFace) C = M.Data; chks = h.getChecks; chks(evt.data.Rows) = evt.data.NewValue.booleanValue; C.pSelected = C.MergeList(chks); changeMergeItems(M); enableNext(M,iFace); end