www.gusucode.com > datamanager 工具箱matlab源码程序 > datamanager/@datamanager/drag.m

    function drag(es,ed,this) %#ok<INUSL>

fig = ancestor(es,'figure');
if ~strcmp(get(fig,'SelectionType'),'normal')
    return
end

if datamanager.isFigureLinked(fig)
    import com.mathworks.page.datamgr.brushing.*;
    
    % Identify a single brushed variable
    linkMgr = datamanager.linkplotmanager;
    [mfile,fcnname] = datamanager.getWorkspace(1);
    linkedVarList = linkMgr.getLinkedVarsFromGraphic(this.HGHandle,mfile,fcnname); 
    if isempty(linkedVarList) % Dragging an unlinked graphic
        this.drag;
        return
    elseif length(linkedVarList)>=2
         errordlg(sprintf('%s\n%s','Cannot drag data from a graphic linked to more than one variable.',...
               'Please use copy and paste instead.'),...
               'MATLAB','modal');
         return
    end
    
    brushMgr = datamanager.brushmanager;
    varName = linkedVarList{1};
    I = brushMgr.getBrushingProp(varName,mfile,fcnname,'I');
    brushColor = brushMgr.getBrushingProp(varName,mfile,fcnname,'Color');
    if ~isempty(I)       
        varValue = evalin('caller',[varName ';']);
    else
        return
    end
    
    % Create a transferable string to drop based on the current graphical
    % object rather than all items selected in the figure
    if isvector(varValue)
        Isel = datamanager.var2string(varValue(I));
    else
        Isel = datamanager.var2string(varValue(any(I,2),:));
    end

    % Start the drag 
    jf = datamanager.getJavaFrame(fig);
    AxesDragRecogniser.dragGestureRecognized(jf.getAxisComponent,...
        AxesDragRecogniser.createVariableDragImage(java.lang.String(varName),java.awt.Color(brushColor(1),brushColor(2),brushColor(3))),...
        Isel);

else 
    % Drag this object
    this.drag;
end