www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/+cgmergesetup/CageModelPage.m
classdef CageModelPage <cgmergesetup.MergeItemsPage %CGMERGESETUP.MODELPAGE wizard page for setting up composite models from CAGE % Copyright 2009-2010 The MathWorks, Inc. and Ford Global Technologies, Inc. properties %HSELECTRESPONSES button to select common responses hSelectResponses end properties(Dependent) %ICONFILES icon files for main merge item tables IconFiles end methods function updatePage(M,iFace) %UPDATEDATA update mergesetup data % updateData(M) updatePage@cgmergesetup.MergeItemsPage(M,iFace) updateResponseTool(M); M.hInfoPane.Title = 'Cage model selection'; M.hInfoPane.InfoString = 'Select cage models to create composite models from.'; end end methods(Access=protected) function M = CageModelPage(fh,iFace,C) %CAGEMODELPAGE protected constructor % % See also createPage M@cgmergesetup.MergeItemsPage(fh,iFace,C); end function h = createResponseTool(M,fh,iFace) %CREATERESPONSELAYOUT extra controls for selecting responses for merging % [Lyt,RespSize] = createResponseLayout(M,fh,iFace) M.hSelectResponses = uicontrol('Parent',fh,... 'Style','PushButton',... 'String','Select similar responses',... 'Tag','SimilarResponses',... 'Callback',{@cbkSimilarResponses,M,iFace}); h = M.hSelectResponses; end function configureMergeTable(M) %CONFIGUREMERGETABLE configure table for selection of items to be merged % configureMergeTable(M,fh) M.ModelList.Peer.setIconBaseLocation(cgrespath); M.ModelList.Peer.setColumnData( {'Model','Response','Inputs'} ); M.ModelList.Peer.setColumnWidths([120 100 180]); M.ModelList.Peer.setDisplayChecks(true); end function updateMergeTable(M) %UPDATEMERGETABLE update merge table % updateMergeTable(M) C = M.Data; pModels = C.MergeList; % internal response model name Responses = pveceval(pModels,str2func('@(m) getname(get(m,''model''))')); Table = [C.Labels(:),Responses(:),C.InputLabels(:)]; M.ModelList.Peer.setData(Table); end function updateResponseTool(M) %UPDATERESPONSELIST enable 'Select Similar Responses' button % updateResponseList(M) set(M.hSelectResponses,'Enable',mbconoff(M.Data.hasMoreSimilarResponses)) end function enableNext(M,iFace) %ENABLENEXT enable next page on wizard % enableNext(M,iFace) % There must be more than one item selected for merging % This page is not the last page in the wizard so Finish can % never be enabled C = M.Data; OK = length(C.pSelected)>1; feval(iFace.setNextButton, OK); feval(iFace.setFinishButton, false); end end methods(Static) function layout = createPage( C,fh, iFace ) %CREATEPAGE static factory function for the cage model %selection page % layout = cgmergesetup.CageModel.createPage( C,fh, iFace ) if isa(fh, 'xregcontainer') M = get(fh,'UserData'); updatePage(M,iFace) else iFace.setWizardSize( [450, 350] ); iFace.setUserData(C); M = cgmergesetup.CageModelPage(fh,iFace,C); end layout = M.Layout; end end end function cbkSimilarResponses(~,~,M,iFace) %CBSIMILARRESPONSES callback to select similar responses % cbSimilarResponses(~,~,M,iFace) C = M.Data; C.selectSimilarResponses; M.updatePage(iFace); enableNext(M,iFace); end