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

    classdef Description < mbcgui.multiview.View
    %Description description panel for model views
    
    %  Copyright 2015-2015 The MathWorks, Inc. and Ford Global Technologies, Inc.
    
    properties (SetAccess=private)
        MdlString
        TransString
        AllModelText
    end
    
    methods 
        function obj = Description(varargin)
        %Description constuctor
        obj@mbcgui.multiview.View(varargin{:});
        create(obj);
        addMessageServiceListener(obj, 'NodeUpdated',@obj.onNodeUpdated)
        
        end
        
        function update(obj)
        %update update description view
        
        ms = obj.MessageService;
        if ms.Status
            m = ms.Model;
            set(obj.MdlString,'string',['\fontsize{10}{\bfModel type:} ', str_func(m,1)],...
                'shortstring',['\fontsize{10}{\bfModel type:} ',name(m)],...
                'verticalalignment','bottom',...
                'fontname',get(0,'DefaultUicontrolFontName'),...
                'fontsize',get(0,'DefaultUicontrolFontSize'));
            [mainString,shortString]= transformStrings(ms);
            set(obj.TransString,'string',mainString,'shortstring',shortString);
        else
            if isDeferred(ms.ModelDev)
                % model fit is deferred for two-stage
                msg = '\fontsize{10}{\bfModel fit deferred: update fit required.}';
            elseif any(strcmp(guid(ms.ModelDev),{'local','ptbypt'})) && size( getdata(ms.ModelDev),1)==ms.NumTests
                % local or point-by-point model with 1 record in test. Most
                % likely, this is caused by not defining test grouping correctly.
                msg = '\fontsize{10}{\bfNot enough data to fit model: 1 point in test. Define test groupings.}';
            elseif numParams(ms.Model)>nnz(ms.DataOK)
                % data set after outliers removed: you could restore data
                msg = '\fontsize{10}{\bfNot enough data to fit model: more model parameters than data points.}';
            else
                % other reason for a model not fitted
                msg = '\fontsize{10}{\bfModel not fitted.}';
            end                  
            set(obj.MdlString,'String',msg,'ShortString','');
            set(obj.TransString,'String','');
            set(obj.AllModelText,'colsizes',[-1,1]);
        end
        
        end
    end
    
    methods (Access=private)
        function create(obj)
        %create create layouts
        
        viewModelFrame = mbcgui.container.layoutpanel(...
            'Parent', obj.Parent, ...
            'BorderType', 'etchedin',...
            'LayoutBorder',[5 10 5 5], ...
            'Visible', 'off');
        obj.MdlString= axestext(viewModelFrame,...
            'fontsize',10,...
            'clipping','on',...
            'verticalalignment','middle');
        obj.TransString= axestext(viewModelFrame,...
            'fontsize',10,...
            'clipping','on',...
            'Interpreter','None',...
            'verticalalignment','middle',...
            'horizontalalignment','right');
        
        % model string for inside the panel layout
        obj.AllModelText = xreggridlayout(viewModelFrame,...
            'dimension',[1,2],...
            'gapy',20,...
            'correctalg','on',...
            'colsizes',[-1, 50],...
            'elements',{obj.MdlString,obj.TransString});
        set(viewModelFrame, 'LayoutComponent', {obj.AllModelText});
        attachContentHandle(obj,viewModelFrame);
        
        end
        
        function onNodeUpdated(obj,~,~)
        update(obj)
        end
    end
    
end