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

    classdef UIDesignTree < mbctreeadapter.JavaUITree
    %mbctreeadapter.UIDesignTree UI tree for design editor
    %
    % See also mbctreeadapter.DesignEditorTree, mbctreeadapter.DesignTree
    
%  Copyright 2011 The MathWorks, Inc. 
    
    %#ok<*MANU>
    
    properties
        Chosen
    end
    
    methods 
        function T=UIDesignTree(varargin)
            T@mbctreeadapter.JavaUITree(varargin{:});
        end
    end

    
    methods 
        
        function set.Chosen(T,pdes)
            if ~isequal(pdes,T.Chosen)
                T.Chosen = pdes;
                if ~isempty(T.Root)
                    update(T,pdes)
                end
            end
        end
        
        
        function refresh(T,varargin)

            refresh@mbctreeadapter.JavaUITree(T,varargin{:});
            
            % expand all the tree
            T.expand;
            % root is not editable
            T.ContentHandle.Root.Editable = false;
            
        end
        
        
        function add(T,varargin)
           
            add@mbctreeadapter.JavaUITree(T,varargin{:});
            T.expand;
            
        end
        
        function ch = getChildren(T,p)
            p = p.down;
            ch = [];
            while ~isempty(p)
                ch = [ch p];
                p = p.right; 
            end
        end
        function parent = getParent(T,p)
            if ~isempty(p)
                parent = p.up;
            else
                parent = [];
            end
        end
        
    end
    
    methods (Access=protected)

        
        function createChildren(T,parent,MaxLvl,ch)
            if nargin<3
                MaxLvl=2;
            end
            if nargin<4
                ch = getChildren(T,parent);
            end
            parentNode = findNode(T,parent);
            if ~isempty(ch)
                for i=1:length(ch)
                    node = createNode(T,ch(i));
                    add(parentNode,node);
                    if MaxLvl>1
                        createChildren(T,ch(i),MaxLvl-1)
                    end
                end
            end
        end
        
        function [Name,Icon]= getDetails(T,p)
            if p==T.Root
                Name = 'Designs';
                Icon = 'des_stack.bmp';
            elseif isequal(p,T.Chosen)
                D = p.info;
                Name = name(D);
                Icon = iconfile(D,1);
            else
                D = p.info;
                Name = name(D);
                Icon = iconfile(D);
            end
        end
        
        function OK =isValidPointer(T,p)
            OK = isa(p,'xregGui.RunTimePointer') && ishandle(p);
        end
        

    end
    
end