www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@listitemselector/listitemselector.m
function sl=listitemselector(varargin) %LISTITEMSELECTOR Constructor function for the listitemselector object % LISTITEMSELECTOR is the creator function for the 'listitemselector' guitool % Usage: % SL=LISTITEMSELECTOR % SL=LISTITEMSELECTOR(FIG) % SL=LISTITEMSELECTOR('Property1',Value1,...) % SL=LISTITEMSELECTOR(FIG,'Property1',Value1,...) % Copyright 2000-2013 The MathWorks, Inc. and Ford Global Technologies, Inc. if nargin>0 && mbcgui.util.isComponentParent(varargin{1}) figh=varargin{1}; else figh=gcf; end pos=get(0,'DefaultUicontrolPosition'); pos(3)=200; pos(4)=170; % decide btn heights and separations if pos(4)<154 btnsep=floor(pos(4)./15.4); btnh=btnsep.*2.6; else btnh=26; btnsep=10; end % create objects sl.baselist=uicontrol('Parent',figh,... 'Style','listbox',... 'Visible','off',... 'Position',[pos(1) pos(2) (pos(3)-btnh-20).*0.5 pos(4)],... 'HorizontalAlignment','left',... 'BackgroundColor','w',... 'Tag', 'base',... 'Max',2,... 'Min',0); sl.sellist=uicontrol('Parent',figh,... 'Style','listbox',... 'Visible','off',... 'Position',[pos(1)+pos(3).*0.5+10+btnh.*0.5 pos(2) (pos(3)-btnh-20).*0.5 pos(4)],... 'HorizontalAlignment','left',... 'BackgroundColor','w',... 'Tag', 'sel',... 'Max',2,... 'Min',0); hCbk = sl.sellist; set(sl.baselist,'Callback',{@mbcgui.util.legacycallback,@listselcb,hCbk,'base'}); set(sl.sellist,'Callback',{@mbcgui.util.legacycallback,@listselcb,hCbk,'sel'}); sl.addall=uicontrol('Parent',figh,... 'Style','pushbutton',... 'Visible','off',... 'String','>>',... 'Position',[pos(1)+.5*pos(3)-.5*btnh pos(2)+.5*pos(4)+1.5*btnsep btnh btnh],... 'Callback',{@mbcgui.util.legacycallback,@moveitemcb,hCbk,'addall'},... 'FontWeight','bold',... 'TooltipString','Select all',... 'Enable','off'); sl.addone=uicontrol('Parent',figh,... 'Style','pushbutton',... 'Visible','off',... 'Position',[pos(1)+pos(3).*0.5-btnh.*0.5 pos(2)+.5*pos(4)+2.5*btnsep+btnh btnh btnh],... 'String','>',... 'Callback',{@mbcgui.util.legacycallback,@moveitemcb,hCbk,'addone'},... 'FontWeight','bold',... 'TooltipString','Select item',... 'Enable','off'); sl.remone=uicontrol('Parent',figh,... 'Style','pushbutton',... 'Visible','off',... 'Position',[pos(1)+pos(3).*0.5-btnh.*0.5 pos(2)+.5*pos(4)-1.5*btnsep-btnh btnh btnh],... 'String','<',... 'Callback',{@mbcgui.util.legacycallback,@moveitemcb,hCbk,'remone'},... 'FontWeight','bold',... 'TooltipString','Deselect item',... 'Enable','off'); sl.remall=uicontrol('Parent',figh,... 'Style','pushbutton',... 'Visible','off',... 'Position',[pos(1)+pos(3).*0.5-btnh.*0.5 pos(2)+.5*pos(4)-2.5*btnsep-2*btnh btnh btnh],... 'String','<<',... 'Callback',{@mbcgui.util.legacycallback,@moveitemcb,hCbk,'remall'},... 'FontWeight','bold',... 'TooltipString','Deselect all',... 'Enable','off'); bgcol=get(figh,'Color'); sl.unselttl=uicontrol('Parent',figh,... 'Style','text',... 'Visible','off',... 'Position',[pos(1) pos(2)+pos(4)-16 (pos(3)-btnh-20).*0.5 16],... 'String','',... 'BackgroundColor',bgcol,... 'HorizontalAlignment','left'); sl.selttl=uicontrol('Parent',figh,... 'Style','text',... 'Visible','off',... 'Position',[pos(1)+pos(3).*0.5+10+btnh.*0.5 pos(2)+pos(4)-16 (pos(3)-btnh-20).*0.5 16],... 'String','',... 'BackgroundColor',bgcol,... 'HorizontalAlignment','left'); ud.buttonsepdist=10; ud.position=pos; ud.charlist={}; ud.reallist={}; ud.unsel=[]; ud.sel=[]; ud.titles=0; ud.callback=''; ud.selectfcn=''; % set userdata in left listbox set(sl.baselist,'UserData',ud); sl=class(sl,'listitemselector'); % save copy of object builtin('set',sl.sellist,'userdata',sl); % set extra props if specified if nargin>1 && isscalar(varargin{1}) && isgraphics(varargin{1}); % Set properties that are passed in sl=set(sl,'Visible','on',varargin{2:end}); elseif nargin>0 sl=set(sl,'Visible','on',varargin{:}); else set([sl.baselist;sl.sellist;sl.addone;sl.addall;sl.remone;sl.remall],'Visible','on'); end