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