www.gusucode.com > mbcview 工具箱matlab源码程序 > mbcview/+cgcalsetup/TablePage.m
classdef TablePage < cgcalsetup.WizardPage %TABLEPAGE wizard page to setup tables and tradeoff % % cgcalsetup.TablePage methods: % updatePage - update wizard page with data % updateData - update data from wizard page % createPage - create page for wizard (Static) % getNextPage - function handle for next page % Copyright 2009-2015 The MathWorks, Inc. and Ford Global Technologies, Inc. properties (Access=protected) %TABLELIST java table for tables TableList %HTRADEOFF checkbox for creating tradeoff hTradeOff %hListeners store for any listeners hListeners %hTableInputs table inputs string hTableInputs end methods function updateData(T) %UPDATEDATA update table data from TablePage wizard C = T.Data; C.CreateTables = T.TableList.getChecks; C.CreateTradeoff = get(T.hTradeOff,'Value'); TableData = T.TableList.getData; C.TableName = TableData(:,2); for i=1:size(C.TableName) C.TableRange{i} = TableData{i,3}(:)'; end end function updatePage(T,~) %UPDATEPAGE update TablePage wizard from table data % % updatePage(T,iFace) % table for tables and fill items C = T.Data; TableInputDescription = cell(1,length(C.pTableInputs)); for i = 1:length(C.pTableInputs) if ~isnull(C.pNorm(i)) TableInputDescription{i} = C.pNorm(i).getname; else pInp= C.pTableInputs(i); % use input_norm unique name TableInputDescription{i} = C.Project.uniquename( sprintf('%s_norm',pInp.getname) ); end end set(T.hTableInputs,'String',sprintf('Normalizers: %s',mbcListString(TableInputDescription))); Icons = pveceval(C.pItems,@iconfile)'; for i=1:length(C.pItems) Icons{i} = cgrespath(Icons{i}); end T.TableList.Peer.setColumnWidths([150 150 120]); T.TableList.Peer.setData( [pveceval(C.pItems(:),@getname) C.TableName(:) C.TableRange(:)]); T.TableList.Peer.setIconData(Icons , 0); TableIcons(1:length(C.pItems),1) = {cgrespath('cgfulltable.bmp')}; T.TableList.Peer.setIconData( TableIcons, 1); T.TableList.Peer.setDisplayChecks(true); T.TableList.Peer.setChecks(C.CreateTables(:)); InfoStr = 'Select the items to create tables for. Tables are initialized with values from their associated item.'; T.hInfoPane.InfoString = InfoStr; end end methods(Access=protected) function T = TablePage(fh,iFace,C) %TABLEPAGE protected constructor T.Data = C; T.Layout = createLayout(T,fh,iFace); updatePage(T,iFace) end function MainLyt =createLayout(T,fh,iFace) %createLayout create layout for TablePage C = T.Data; T.hTableInputs=uicontrol('Parent',fh,... 'Style','text',... 'HorizontalAlignment','left'); T.hTradeOff=uicontrol('Parent',fh,... 'Style','checkbox',... 'String','Create a tradeoff containing all the tables',... 'Value',1); tablelist = mbcwidgets.List(... 'parent', fh,... 'Editable', true, ... 'SelectionMode', 'None'); tablelist.Peer.setColumnData( {'Item','Table Name','Table Bounds'} ); T.TableList = tablelist; tablelist.Peer.setIdentifierColumns(1); tablelist.Peer.setBoundsColumns(2); tablelist.Peer.setEditableColumns(1:2); MainLyt=xreggridbaglayout(fh,'dimension',[3 1],... 'rowsizes',[15,-1 20 ],... 'gapx', 20, ... 'gapy',5,... 'border',[10 10 10 10],... 'elements',{T.hTableInputs,tablelist,T.hTradeOff}); T.hInfoPane = mbcgui.container.InfoPane('Parent', fh, ... 'InfoHeight', 35, ... 'Title','Tables and Tradeoff',... 'Center', MainLyt); MainLyt = xreglayerlayout(fh, 'Elements', {T.hInfoPane}); T.hListeners = handle.listener(T.TableList, 'ValueChanged',{@cbEditTables,T,iFace}); end function f= getNextPage(W) %getNextPage no next page for TablePage f = ''; end end methods (Static) function layout = createPage( fh, iFace, C ) %createPage create wizard page for TablePage if isa(fh, 'xregcontainer') T = get(fh,'UserData'); updatePage(T,iFace) else T = cgcalsetup.TablePage(fh,iFace,C); end feval(iFace.setNextButton, 0); %enable finish if there are any tables to create feval(iFace.setFinishButton, any(C.CreateTables)); layout = T.Layout; end end end function cbEditTables(~,~,T,iFace) %iEditTables callback for checkboxes in table idxFree = T.TableList.getChecks; feval(iFace.setFinishButton, any(idxFree)); end