www.gusucode.com > mbclayouts 工具箱 matlab 源码程序 > mbclayouts/@xregsplitlayout/xregsplitlayout.m
function obj = xregsplitlayout(varargin) % Synopsis % function obj = xregsplitlayout(parameter,value,parameter,....) % function obj = xregsplitlayout(fig,parameter,value,parameter,....) % % Description % Creates a xregsplitlayout container in the (optional) figure fig. % % See also % xregsplitlayout/set % Copyright 2000-2016 The MathWorks, Inc. and Ford Global Technologies, Inc. fig = []; if nargin if mbcgui.util.isComponentParent(varargin{1}) fig = varargin{1}; varargin(1) = []; end end if isempty(fig) fig = gcf; end c = xregcontainer(fig); obj.datastore = xregGui.RunTimePointer; connectdata(c, obj.datastore); obj.pointerID = xregGui.RunTimePointer(-1); connectdata(c, obj.pointerID); ud.split = [0.5 0.5]; ud.resizable = 1; ud.orientation = 0; % left-right orientation by default obj.rsbutton = uicontrol('Parent',fig,... 'Style','pushbutton',... 'Value',1,... 'Visible','off',... 'Enable','off'); connectdata(c, obj.rsbutton); obj.PointerRegion = mbcgui.motion.MotionManager; obj.PointerRegion.ExternalRef = obj.rsbutton; obj.PointerRegion.UseExternalRef = 'on'; ud.divstyle = 1; ud.divwidth = 3; ud.callbackstr = ''; ud.innerborderl = [0 0 0 0]; ud.innerborderr = [0 0 0 0]; ud.visible = 1; ud.minwidth = [0 0]; ud.minwidthunits = 'pixels'; obj.datastore.info = ud; obj = class(obj,'xregsplitlayout',c); % look for a visible set in remaining args if ~any(strcmpi('Visible',varargin(1:2:end)) | strcmpi('resizable',varargin(1:2:end))) % set ui objects to visible and attach MotionManager set(obj.rsbutton,'Visible','on'); MM = MotionManager(fig); MM.RegisterManager(obj.PointerRegion); end if ~isempty(varargin) obj = set(obj,varargin{:}); end obj.PointerRegion.MouseInFcn= @(h,evt) mousetracker(obj, 1); obj.PointerRegion.MouseOutFcn= @(h,evt) mousetracker(obj, -1); set(obj.rsbutton,'ButtonDownFcn',{@iResizeBar,obj}) adddeletecallback(obj, @i_removeMM); % Split bar callback function iResizeBar(~, ~, obj) resizebar(obj); % Destruction callback that removes the motion manager function i_removeMM(obj, evt) hP = get(obj.xregcontainer,'Parent'); if mbcgui.util.isComponentParent(hP) && ~mbcgui.util.isBeingDestroyed(hP) MM = MotionManager(hP); % Check that motio nmanager pointer region is still valid if isvalid(MM) && isvalid(obj.PointerRegion) % Remove pointer region motion manager and delete MM.UnregisterManager(obj.PointerRegion); delete(obj.PointerRegion); end end