www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/+mbcmodelview/+project/DataList.m
classdef DataList < mbcgui.multiview.View %DataList list of data sets for project view % Copyright 2015-2016 The MathWorks, Inc. and Ford Global Technologies, Inc. properties (SetAccess=private) %List main list List end methods function obj = DataList(varargin) %DataList constructor obj@mbcgui.multiview.View(varargin{:}); createLayout(obj) addMessageServiceListener(obj, 'NodeUpdated',@obj.onNodeUpdated) end function update(obj) %update update data list ms = obj.MessageService; dp = ms.Datasets; Data = cell(length(dp),4); Icon = cell(length(dp),1); for i = 1:length(dp) data = dp(i).info; sz = size(data); Data(i,:) = {get(data, 'label'), sz(1),sz(2),sz(3)}; lockNode = isTestplanData(ms.Project, dp(i)); if lockNode Icon{i}='testplandata.bmp'; else Icon{i}='dataicon.bmp'; end end obj.List.setData(Data,Icon); ind = find(ms.CurrentData == dp); if ~isempty(ind) selectRows(obj.List,ind); end end end methods (Access=private) function createLayout(obj) %createLayout create data list ui % Get imageList info for the List Control cols = {'Name' 'Records' 'Variables' 'Tests'}; dataList = mbcwidgets.List('Parent',obj.Parent,... 'UserData','dataList',... 'ValueChangedCallback',@obj.onEditName,... 'SelectionChangedCallback',@obj.onSelectData,... 'ActionPerformedCallback',@obj.onEditData,... 'KeyTypedCallback',@obj.onKeyTyped,... 'Editable',true,... 'EditableColumns',1,... 'Grid',true,... 'ColumnHeaders',cols,... 'ColumnWidths',[300 75 75 75],... 'IconLocation',xregrespath,... 'IconTransparentColor',[0 255 0],... 'UIContextMenu',[],... 'SelectionMode','SingleCell'); obj.List = dataList; obj.ContentHandle = dataList; end function onNodeUpdated(obj,~,~) %onNodeUpdated MessageService.NodeUpdated event handling update(obj) end function onEditName(obj,~,evt) %onEditName edit data set name newName = evt.data.NewValue; ms = obj.MessageService; pSSF =ms.CurrentData; if ~strcmp(get(pSSF.info,'label'),newName) % Change the label pSSF.info = pSSF.set('label', getValidDataName(ms.Project, newName)); % Update the listbox update(ms) end end function onKeyTyped(obj,~,evt) %onKeyTyped key events for lists ms = obj.MessageService; if evt.data.Modifiers==0 switch evt.data.KeyCode case mbcgui.util.KeyCode.INSERT ms.Actions.NewData.execute() case mbcgui.util.KeyCode.DELETE if isscalar(evt.data.Rows) ms.Actions.DeleteData.execute() end end end end function onEditData(obj,~,~) %onEditData edit in Data Editor ms = obj.MessageService; ms.Actions.EditData.execute() end function onSelectData(obj,~,evt) %onSelectData select data set in list ms = obj.MessageService; newDataIndex = evt.data.SelectedRows; if ~isempty(newDataIndex) ms.CurrentData = ms.Datasets(newDataIndex); else ms.CurrentData = xregpointer; end end end end