www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/+mbcmodelview/+project/FrameWork.m
classdef FrameWork < mbcmodelview.FrameWork %mbcmodelview.project.FrameWork framework for project % Copyright 2015-2016 The MathWorks, Inc. and Ford Global Technologies, Inc. properties (SetAccess=private) DataList NotesList VersionText NextAction ButtonPanel end methods function show(obj,MP) %show initialize the project view ms = obj.MessageService; %ForceReset=true prevents an update of listview in response to a %NodeChanged event obj.ForceReset = true; setNewProject(ms, address(MP)); end function view(obj,MP) %#ok<INUSD> %view update project view %ForceReset=false causes an update of the listview in response to %future NodeChanged events. obj.ForceReset = false; update(obj.MessageService) end function ok = hide(obj) %hide leave the project view ms = obj.MessageService; if ~isnull(ms.Pointer) % ask message service to perform any tidy up actions ok = leaveNode(ms); else ok=1; end end function openDesignEditor(obj) %#ok<MANU> %openDesignEditor null operation when attempting to open design %editor from the project node end function change(obj,p) %change change project view state % change(obj,p) ms = obj.MessageService; if nargin<2 p = ms.Pointer; end setNewProject(ms, p); update(ms) end end methods (Access=private) function obj = FrameWork(Browser,MessageService) %FrameWork private constructor if nargin<2 MessageService = mbcmodelview.project.MessageService; end obj@mbcmodelview.FrameWork(Browser,MessageService) addListeners(obj,event.listener(obj.MessageService,'NodeChanged',@obj.onNodeChanged)); end end methods (Access=protected) function create(obj,parentInfo) %create create graphical components % create(obj,parentInfo) if isstruct(parentInfo) % MBrowser provides a structure containing the parent panel and % the toolbar panel obj.ViewParent = parentInfo.ViewParent; obj.ToolbarParent = parentInfo.ToolbarParent; else obj.ViewParent = parentInfo; end dataAndNotesViews = uitabgroup('Parent',obj.ViewParent,... 'Tag','DataNotesTab',... 'Units','pixels'); % list of data sets dataTab = mbcgui.container.uitab('Parent',dataAndNotesViews,... 'Title','Data sets'); obj.DataList = mbcmodelview.project.DataList('Parent',dataTab,... 'MessageService',obj.MessageService); dataTab.LayoutComponent = obj.DataList ; % list of notes notesTab = mbcgui.container.uitab('Parent',dataAndNotesViews,... 'Title','Notes'); obj.NotesList = mbcmodelview.project.NotesList('Parent',notesTab,... 'MessageService',obj.MessageService); notesTab.LayoutComponent = obj.NotesList; obj.ButtonPanel = mbcmodelview.project.ButtonPanel('Parent',obj.ViewParent,... 'Browser',obj.Browser,... 'ShowBrowserButton',false,... 'MessageService',obj.MessageService); % put main view and info pane side-by-side obj.MainLayout = xregsnapsplitlayout(obj.ViewParent,... 'barstyle', 0,... 'orientation', 'ud',... 'top', obj.ButtonPanel,... 'bottom', dataAndNotesViews ,... 'minwidth',[250 120],... 'split', [0.98 0.02],... 'border',[-1 -1 -1 -1],... 'style','tobottom'); % create menus, toolbars, workflow controls Labels = {'&Data';'&View'}; createControls(obj,Labels); end function onNodeChanged(obj,~,~) %onNodeChanged update the view when nodeChanged if ~obj.ForceReset && isInBrowser(obj) % update list view listview(obj.Browser); end end end methods (Static) function obj = createFigure(pNode) %createFigure make view in a separate figure for testing obj = mbcmodelview.project.FrameWork([]); figure(obj); set(obj.Figure,'Name','Project'); drawnow update setNewProject(obj.MessageService,pNode); update(obj.MessageService); end function [lyt, tblyt, obj]=creategui(mdev,infoParent) %create view for inside the model browser obj = mbcmodelview.project.FrameWork(MBrowser); setNewProject(obj.MessageService, address(mdev)); create(obj,infoParent); lyt = xreglayerlayout(obj.ViewParent,'elements',{obj.MainLayout}); tblyt = obj.Toolbar; end end end