www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/+mbcmodelview/MessageService.m
classdef MessageService < mbcgui.multiview.AbstractMessageService %MessageService abstract model view Message Service % Copyright 2015-2015 The MathWorks, Inc. and Ford Global Technologies, Inc. properties (SetAccess=protected) %Pointer xregpointer to modeldev node Pointer = xregpointer; %Actions Actions end events(NotifyAccess=protected) %NodeUpdated main update event NodeUpdated %NodeReset node needs reseting NodeReset %NodeChanged node has changed NodeChanged %NodeLeft NodeLeft %Busy message service is busy Busy %Idle message service is idle Idle %RedrawRequired notify that a complete redraw of the node is required RedrawRequired %TreeChanged tree structure has changed TreeChanged end properties(Abstract,Dependent,SetAccess=private) %Title Title end properties (Dependent,SetAccess=private) %Node update-to-date node information Node end properties (Access=private) SubFigures end methods function OK = leaveNode(obj) %leaveNode get ready to leave node OK = closeSubFigures(obj); if OK notify(obj,'NodeLeft'); obj.Pointer = xregpointer; end end function OK = hasData(obj) %hasData node initialised with a modeldev % MultiView framework method OK = ~isnull(obj.Pointer); end function nm = getDataName(obj) %getDataName name of multiview if hasData(obj) nm = obj.Title; else nm = '<unknown>'; end end function mdev = get.Node(obj) if isvalid(obj.Pointer) mdev = info(obj.Pointer); else mdev = []; end end function busy(ms,msg) %busy send event that MessageService is busy if nargin>1 evt = xregEventData(msg); else evt = xregEventData(''); end notify(ms,'Busy',evt); end function idle(ms) %idle send event that MessageService is idle notify(ms,'Idle'); end function registerSubFigure(ms,hFig) %registerSubFigure send event that subfigure is added to framework if isgraphics(hFig,'figure') && ~ismember(hFig,ms.SubFigures) ms.SubFigures = [ms.SubFigures hFig]; end end function OK = closeSubFigures(ms) ms.SubFigures = ms.SubFigures(isgraphics(ms.SubFigures)); if ~isempty(ms.SubFigures) % close all visible subfigures fh= findobj(ms.SubFigures,'flat','Visible','on'); fh= unique(fh); if ~isempty(fh) close(fh); fh= findobj(fh(isgraphics(fh)),'flat','Visible','on'); end OK = isempty(fh); else OK = true; end end function redrawNode(ms) %redrawNode send message that a full redraw of node is required % redraw also requires tasks to be performed by MBrowser notify(ms,'RedrawRequired'); end function changeTree(ms,pAddNodes,pRemoveNodes) evtData.pAddNodes = pAddNodes; evtData.pRemoveNodes = pRemoveNodes; notify(ms,'TreeChanged',xregEventData(evtData)); end end methods (Access=protected) function fireNodeReset(obj) notify(obj,'NodeReset') end function fireNodeChanged(obj) notify(obj,'NodeChanged') end function fireNodeUpdated(obj) notify(obj,'NodeUpdated') end end end