www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/+tpsetup/TemplateSelector.m

    classdef TemplateSelector < handle
    %TemplateSelector selector for test plan templates
    
    %  Copyright 2014-2015 The MathWorks, Inc. and Ford Global Technologies, Inc.
    
    properties (SetAccess=private)
        %Layout main layout
        Layout
        %JList JList for templates
        JList
    end
    
    properties (Access=private)
        %Icon for templates
        Icon
        %Parent parent of component
        Parent
        %Listeners store for listeners
        Listeners
        %Model data model object
        Model
        %TemplateType 
        TemplateType
    end
    
    methods
        
        function obj=TemplateSelector(parent,Model)
        %TemplateSelector constructor
        %   TemplateSelector
        
        obj.Parent = parent;
        obj.Model = Model;
        templateFrame = mbcgui.container.layoutpanel(...
            'Parent', parent, ...
            'BorderType', 'etchedin', ...
            'Title', 'Template', ...
            'LayoutBorder', [10 10 10 3]);
        obj.Icon = 'testplan.bmp';
        
        obj.JList = mbcwidgets.JList('Parent',templateFrame,...
            'BorderType', 'beveledin', ...
            'Tag','TemplateList',...
            'ValueChangedCallback',{@obj.select});
        
        
        
        browsebtn=uicontrol('Style','pushbutton',...
            'Parent',templateFrame,...
            'String','Browse...',...
            'Position',[0 0 65 25],...
            'Callback',@obj.browseDirectory);
        obj.TemplateType = uicontrol('Style','text',...
            'Parent',templateFrame,...
            'HorizontalAlignment','left',...
            'Position',[0 0 65 25]); 
        
        h = uicontrol('Style','text',...
            'Parent',templateFrame,...
            'HorizontalAlignment','left',...
            'String','Template:',...
            'Position',[0 0 65 25]); 
        
        mainlyt=xreggridbaglayout(templateFrame,...
            'dimension',[5, 2],...
            'elements',{obj.JList,[],[],[],[],...
            browsebtn,[],h,obj.TemplateType,[]},...
            'mergeblock',{[1,5],[1 1]},...% for templates window
            'rowsizes',[25,5 15,15,-1],...
            'colsizes',[-1 80],...
            'gapy',0,...
            'gapx',5);
        set(templateFrame, 'LayoutComponent', {mainlyt});
        obj.Layout = templateFrame;
        
        end
        
        function update(obj)
        %update update test plan list
        names = [obj.Model.BuiltInNames(:);obj.Model.UserTemplateNames(:);obj.Model.CurrentNames(:)];
        icons(1:length(names),1) = {obj.Model.Icon};
        obj.JList.setListData(names,icons);
        obj.JList.SelectedIndex = 1;
        end
        
    end
    
    methods (Access=private)
        function browseDirectory(obj,~, ~)
        %browseDirectory browse for new template directory
        
        pathname = uigetdir(obj.Model.Dir, 'Select template directory:');
        if ischar(pathname)
            pathname = [pathname filesep];
            
            addUserTemplates( obj.Model,pathname );
            update(obj)
        end
        end
        
        function select(obj,~, evt)
        %select Respond to an item in the list being selected
        
        
        % item click
        ind= evt.data.SelectedIndex;
        if isempty(ind)
            return
        end
        
        if ind ==0
            % Initiate a new callback to select the default item
            if ~isempty(obj.Model.SelectedIndex) && ...
                    obj.Model.SelectedIndex <= obj.JList.NumberOfElements
                obj.JList.SelectedIndex = obj.Model.SelectedIndex;
            else
                obj.JList.SelectedIndex=1;
            end
            return
        end
        selectTestplan(obj.Model,ind)
        if ind<=length(obj.Model.BuiltIn)
            des = 'Default';
        elseif ind<=length(obj.Model.BuiltIn)+length(obj.Model.UserTemplateNames)
            des = 'File';
        else
            des = 'Current project';
        end
        set(obj.TemplateType,'String',sprintf('  %s',des));
        
        end
        

        
    end
    
end