www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/+mbcmodelview/+twostage/MessageService.m

    classdef MessageService < mbcmodelview.ModelMessageService
    %MessageService two-stage view MessageService
    
    %  Copyright 2015-2015 The MathWorks, Inc. and Ford Global Technologies, Inc.
    
    properties 
        %CurrentPage currently selected sweep plots page
        CurrentPage=1;
        %CILevel confidence interval level
        CILevel = 95;
        %PlotOptions options for sweep plots
        PlotOptions = getpref(mbcprefs('mbc'),'LocalPlotOpts');
    end
    
    properties (SetAccess=private)
        %NumPages number of pages of sweep plots
        %  There are currently 4 plots per page
        NumPages
        %GlobalXData global input data
        GlobalXData
    end
    
    properties(Dependent,SetAccess=private)
       Title 
    end        
    
    methods
        function obj = MessageService
        %MessageService - constructor
        obj.Actions = mbcmodelview.twostage.Actions(obj);
        
        end
        
        function s = get.Title(obj)
        s = name(obj.ModelDev);
        end        
        
        function updateNode(obj,pNode)
        %updateNode initial update when selecting node
        
        if nargin>1
            obj.Pointer = pNode;
        end
        [X,Y] = getdata(obj.ModelDev,'fit');
        
        obj.DataOK = true(size(Y,1),size(Y,2));
        obj.DataOK( outliers(obj.ModelDev)) = false;
        % update data and model for test
        obj.XData = X{1};
        obj.GlobalXData = X{2};
        obj.YData = Y;
        obj.NumPages = ceil(size(Y,3)/4);
        if obj.CurrentPage>obj.NumPages
            obj.CurrentPage = 1;
        end
        
        % store local validation data
        [obj.ValidationXData,obj.ValidationYData]= getValidationData(obj.ModelDev);
        
        if hasBest(obj.ModelDev)
            obj.Model = model(obj.ModelDev);
        else
            obj.Model = [];
        end

        end
        
        function update(obj)
        %update update MessageService
        
        enable(obj.Actions)
        fireNodeUpdated(obj)
        end

    end
    
    methods 
        % no action but need implementations as these are abstract methods
        % of ModelMessageService
        
        function showTestNumbers(obj,ax) %#ok<*INUSD>
        end
        
        function [data,factors,olIndex]= diagnosticStats(obj) %#ok<*MANU>
        data=[];
        factors={};
        olIndex=[];
        end
        
        function [data,factors] = validationDiagnostics(ms)
        data=[];
        factors={};
        end
        
        function addOutliers(obj,olindex)
        end
        
        function OK = restoreOutliers(obj,olindex)
        OK=false;
        end
        
        function [lineh,legLabels] = legendLabels(obj,AxHand) 
        lineh=[];
        legLabels={};
        end
        
        function msg = selectModelFigure(obj)
        %selectModelFigure
        
        p= obj.Pointer;
        
        pbest= children(info(p),@bestmdev);
        pbest=[pbest{:}];
        if any(pbest==0)
            unvalmdev=children(info(p),find(pbest==0),@name);
            msg = char('You must select a best model for all sub-models ',...
                'before selecting a best model. ',...
                'The following sub-models do not have a best model:',...
                unvalmdev{:});
        else
            % dependence on Model Browser
            hFig= get(MBrowser,'Figure');
            hSelectionFig= Validate_TwoStage('create',p,hFig);
            if isgraphics(hSelectionFig)
                % register figure with message service
                % need to update when done
                list = event.listener(hSelectionFig,'ObjectBeingDestroyed',@(h,evt) obj.update);
                setappdata(hSelectionFig,'MBCSelectionClosed',list)
                
                obj.registerSubFigure(hSelectionFig);
            end

            msg = '';
        end

        end        
    end
    
    methods (Access=protected)
        function s = getStatus(obj)
        s = isvalid(obj.Pointer) && ~isempty(obj.Model);
        end
        
    end    
    
end