www.gusucode.com > mbc 工具箱 matlab 源码程序 > mbc/+mbctreeadapter/CageTree.m

    classdef CageTree < mbctreeadapter.BrowserTree
    %CAGETREE interface to Java tree for CAGE browser
    
%  Copyright 2011 The MathWorks, Inc. 
    properties
        %TYPEFILTER CAGE node type
        TypeFilter = cgtools.cgbasetype;
    end
    
    methods
        function C=CageTree(varargin)
            %CAGETREE constructor
            
            C@mbctreeadapter.BrowserTree('IconLocation',cgrespath,...
                'IconTransparentColor',[255 0 255],...
                varargin{:});
            
        end            
        
        
        function refresh(C,varargin)
            refresh@mbctreeadapter.BrowserTree(C,varargin{:})
            r = C.ContentHandle.Root;
            if ~isempty(r)
                r.Editable = false;
            end
            
        end

        
        function update(C,p)
            %UPDATE update name and icon for tree node
            %   update(C,p)
            %   update(C)
            %     p can be a vector of pointers to tree data
            %     If no p is specified, then the selected node is updated.
            
            if nargin<2
                p = C.Selected;
            end
            
            for i=1:length(p)
                node = findNode(C,p(i));

                if ~isempty(node)
                    OldItemName = node.Name;
                    [NewName,NewIcon]= getDetails(C,p(i));
                    
                    AllNodes = find(C.ContentHandle.Root,'Name',OldItemName);
                    set(AllNodes,'Name',NewName,'Icon',NewIcon)
                end
            end
        end
        
        function ch = getChildren(T,p)
            ch = p.children;
            if p==p.root
                ch = T.TypeFilter.filterlist(ch);
            end
        end         
        
    end
    
    methods (Access=protected)

        function selectFirst(C,p)
            %SELECTFIRST select the first item on tree
            if isempty(p) || isnull(p)
                node = C.ContentHandle.Root;
                if ~isempty(node.down)
                    node = node.down;
                end
            else
               node = findNode(C,p); 
               if isempty(node)
                   node = C.ContentHandle.Root;
               end
            end
            if ~isempty(node)
                C.ContentHandle.selectNode(node);
            end
        end
        
       

    end
    
end