www.gusucode.com > mbcdesign 工具箱 matlab 源码程序 > mbcdesign/+xregdesgui/TreeView.m

    classdef TreeView < mbcgui.widget.BasicContainer
    %TreeView design treeview
    
    %  Copyright 2015 The MathWorks, Inc. and Ford Global Technologies, Inc.
    
    properties 
        %DesignTree mbctreeadapter.DesignEditorTree
        DesignTree
        %Actions
        Actions
    end
    
    properties (Dependent,SetAccess=private)
        %UITree uitree component (mbctreeadapter.UIDesignTree)
        UITree
    end
    
    methods
        function obj = TreeView(varargin)
        %TreeView constructor
        obj@mbcgui.widget.BasicContainer(varargin{:});
        
        pnl = mbcgui.container.titlebarpanel(...
            'Parent', obj.Parent, ...
            'BarTitle', 'Design Tree', ...
            'Tag', 'TreePanel');
        
        D = obj.DesignTree;
        D.createUITree('Parent',pnl,...
            'SelectionChangedCallback',@obj.onSelectTree,...
            'TreeEditedCallback',@obj.onRenameTree,...
            'DeletePressedCallback',@obj.onDeleteTree,...
            'InsertPressedCallback',@obj.onInsertTree);
        
        pnl.ContentHandle = D.UITree;
        % Tree Context Menu
        designActions = obj.Actions;
        uic=uicontextmenu('Parent',ancestor(pnl,'figure'),'Callback',@(h,evt) designActions.enable());
        designActions.createTreeContextMenuItems(uic);
        set(obj.UITree,'UIContextMenu',uic); % move outside
        
        obj.ContentHandle = pnl;
        end
        
        function T = get.UITree(obj)
        T = obj.DesignTree.UITree;
        end
        
    end
    
    methods (Access=private)
        function onSelectTree(obj,~,evt)
        %onSelectTree select tree node callback
        if ~isequal(evt.Data.NewNode,evt.Data.OldNode)
            busy(obj.DesignTree)
            select(obj.DesignTree,evt.Data.NewNode);
            idle(obj.DesignTree)
        end
        end
        
        function onRenameTree(obj,~,evt)
        %onRenameTree rename tree node callback 
        d = evt.Data.Node;
        rename(obj.DesignTree,d,evt.Data.NewName)
        end
        
        function onDeleteTree(obj,~,~)
        %onDeleteTree tree delete key callback
        
        if obj.Actions.DeleteDesign.Enabled
            % Remove message
            obj.Actions.DeleteDesign.execute()
        end
        end
        
        function onInsertTree(obj,~,evt)
        %onInsertTree tree isert key callback
        
        if obj.Actions.NewDesign.Enabled
            d= evt.Data.Node;
            des = setlock(d.info,false);
            add(obj.DesignTree,des,d);
        end
        
        end
        
    end
    
end