www.gusucode.com > appdesigner工具箱matlab源码程序 > appdesigner/+appdesigner/+internal/+application/getAppDesignEnvironment.m

    function appDesignEnvironment = getAppDesignEnvironment()
%GETAPPDESIGNENVIRONMENT Internal function to guarantee only one 
% App Designer will be launched
%
% GETAPPDESIGNENVIRONMENT uses local persistent variable to make sure
% only one instance of AppDesignEnvironment through the MATLAB sessionn

% Copyright 2015 The MathWorks, Inc.

% Make the AppDesignEnvironment have only one instance via 
% a persistent variable
persistent localAppDesignEnvironment;
if isempty(localAppDesignEnvironment) || ~isvalid(localAppDesignEnvironment)
    % First time starting App Designer, localAppDesignEnvironment would be 
    % empty. 
    % After closing App Designer, localAppDesignEnvironment would be
    % invalid when launching App Designer again
    
    % get PeerModelManager
    peerModelManager = appdesigner.internal.application.AppDesignEnvironment.getPeerModelManager( ...
        appdesigner.internal.application.AppDesignEnvironment.NameSpace);                
    
    % create the AppDesignerModel
    componentAdapterMap = appdesigner.internal.application.appmetadata.createComponentAdapterMap();
    model = appdesigner.internal.model.AppDesignerModel(componentAdapterMap, peerModelManager);
    
    % the AppDesignEnvironment
    localAppDesignEnvironment = appdesigner.internal.application.AppDesignEnvironment(peerModelManager, model);
    
    addlistener(localAppDesignEnvironment,'ObjectBeingDestroyed', ...
                @(source, event)delete(model));    
end

appDesignEnvironment = localAppDesignEnvironment;

% put a lock on the instance so this instance cannot be cleared by a
% "clear all".  If not "clear all" would close the App Designer
mlock;

end