www.gusucode.com > mbcview 工具箱matlab源码程序 > mbcview/@cgtools/@cgbrowser/cgbrowser.m

    function h = cgbrowser
%CGBROWSER Create a new handle for a cgbrowser
%
%  CGB = CGBROWSER constructs a new browser handle.  Note that his does not
%  construct the actual GUI.
%
%  See also CGBROWSER/SHOW

%  Copyright 2000-2016 The MathWorks, Inc. and Ford Global Technologies, Inc.


h = cgtools.cgbrowser;

p = h.findprop('GUILocked');
List = struct( ...
    'lockL', handle.listener(h, p, 'PropertyPostSet', {@i_setlocktime}), ...
    'GetLockL', handle.listener(h, p, 'PropertyPreGet', {@i_checklock}), ...
    'typeL', handle.listener(h, h.findprop('CurrentType'), 'PropertyPostSet', {@i_typeset}), ...
    'rootL', handle.listener(h, h.findprop('RootNode'), 'PropertyPostSet', {@i_rootset}), ...
    'TreeL', handle.listener(h, h.findprop('TreeOn'), 'PropertyPostSet', {@i_treeset}), ...
    'ListL', handle.listener(h, h.findprop('ListOn'), 'PropertyPostSet', {@i_listset}) ...
    );

h.Listeners = List;


function i_setlocktime(~, evt)
obj = evt.AffectedObject;
val = evt.NewValue;
if val
    % update time
    obj.GUILockTime = now;
end

function i_checklock(~, evt)
% Prevent permanent locks by making them expire after about a minute.
obj = evt.AffectedObject;
if obj.GUILocked
    if (now-obj.GUILockTime)>7e-4    % about 1 minute
        obj.GUILocked = false;
    end
end


function i_typeset(~,evt)
evt.AffectedObject.doSelectType;



function i_rootset(~,evt)
obj = evt.AffectedObject;
obj.doGetDD;

cgp = obj.RootNode;

if ~isnull(cgp)
    % select last node
    LastNode = obj.RootNode.getLastNode;
    if ~isempty(LastNode) && ~isnull(LastNode(1)) && cgp~=LastNode(1)
        p = LastNode(1);
        p_sub = LastNode(2);
        
        obj.gotonode(p,p_sub,true);
    else
        obj.doDrawTree;
        obj.doDrawList;
        obj.doFindFirstType;
        obj.doFindFirstNode;
    end
else 
    obj.doFindFirstType;
    obj.doFindFirstNode;
end

function i_listset(~,evt)
evt.AffectedObject.doSwitchList;

function i_treeset(~,evt)
evt.AffectedObject.doSwitchTree;