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