www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/+tpsetup/DoEDrivenIO.m
classdef DoEDrivenIO < handle %DoEDrivenIO IO selector for DoE-driven modelling % Copyright 2014-2014 The MathWorks, Inc. and Ford Global Technologies, Inc. properties (SetAccess=private) %Layout main layout Layout end properties (Access=private) %InputLayouts layouts for individual layout type InputLayouts %Parent parent of component Parent %Listeners store for listeners Listeners %Model data model objec Model end methods function obj = DoEDrivenIO(parent,Model) %DoEDrivenIO constructor obj.Model = Model; obj.Parent = parent; tp = load('tpbuiltintemps.mat'); rsizes = {-1 ,[125 -1],[-1 135]}; obj.Layout = xregcardlayout(parent,'NumCards',3); obj.InputLayouts = cell(1,length(tp.templates)); createIOTables(obj,1) obj.Listeners = event.proplistener(Model,Model.findprop('Selected'),'PostSet',@obj.onUpdate); end function onUpdate(obj,~,~) %onUpdate respond to change in selected test plan update(obj); end function update(obj) %update update input setup T=obj.Model.Selected; TpInputs= getInputs(T); TpType = obj.Model.TypeIndex; if isempty( obj.InputLayouts{TpType} ) % create IO tables if necessary createIOTables(obj,TpType) end set(obj.Layout, 'CurrentCard',TpType); Lyt = obj.InputLayouts{TpType}; for i=1:length(TpInputs) gui_InputSetup(TpInputs{i},'update',Lyt{i},true); end end function [T,OK] = finalize(obj) %finalize finalize test plan inputs T=obj.Model.Selected; TpType = obj.Model.TypeIndex; TpInputs= getInputs(T); OK = true; Lyt = obj.InputLayouts{ TpType }; for i=1:length(TpInputs) [TpInputs{i},OKi]= gui_InputSetup(TpInputs{i},'finalize',Lyt{i}); OK = OK && OKi; end if OK T = setInputs(T,TpInputs); end end end methods (Access=private) function createIOTables(obj,j) tp = load('tpbuiltintemps.mat'); rsizes = {-1 ,[125 -1],[-1 135]}; BaseInputs = getInputs(tp.templates{j}); [typeLabel,InputLabels]= type(tp.templates{j}); tpInpLyt = mbcgui.container.layoutpanel('Parent',obj.Parent,... 'LayoutBorder',[7 7 7 7],... 'BorderType','etchedin',... 'Title',sprintf('%s Test Plan',typeLabel)); lytTitle = cell(1,length(BaseInputs)); inpLyt = lytTitle; for i=1:length(BaseInputs) % input layout for each stage lytTitle{i} = mbcgui.container.titlebarpanel('Parent',tpInpLyt,... 'BarTitle',InputLabels{i}); inpLyt{i} = gui_InputSetup(BaseInputs{i},'layout',lytTitle{i},false); set(inpLyt{i},'Border', [7 2 7 2]); set(lytTitle{i},'ContentHandle',inpLyt(i)) end typelyt = xreggridlayout(tpInpLyt, ... 'dimension',[length(BaseInputs), 1],... 'correctalg','on',... 'rowsizes',rsizes{j},... 'gapy',10, ... 'elements',lytTitle); set(tpInpLyt,'LayoutComponent',{typelyt}); attach(obj.Layout,tpInpLyt,j); obj.InputLayouts{j} = inpLyt; end end end