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