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

    function copyLinked(fig,varNames,varValues,mfile,fcnname)

import com.mathworks.page.datamgr.brushing.*;
this = datamanager.brushmanager;

if nargin<=3
    [mfile,fcnname] = datamanager.getWorkspace(1);
end

% Get brushing arrays for variables which have been brushed
brushArray = cell(1,length(varNames));
for k=1:length(varNames)
     I = this.getBrushingProp(varNames{k},mfile,fcnname,'I');
     if ~isempty(I) && any(I(:))
        brushArray{k} = I;
     end
end
ind = ~cellfun('isempty',brushArray);
varNames = varNames(ind);
brushArray = brushArray(ind);

if isempty(varNames)
    return % Nothing brushed
elseif length(varNames)==1 % Copy single brushed variable
    varValue = varValues{ind};
    if isvector(varValue)
        ClipBoardManager.copySelectionToClip(datamanager.var2string(varValue(brushArray{k}))); 
    else
        ClipBoardManager.copySelectionToClip(datamanager.var2string(varValue(any(brushArray{k},2),:)));
    end
elseif ~isempty(fig) % Resolve ambiguity between multiple variables
    datamanager.vardisambiguate(handle(fig),varNames,varValues,mfile,fcnname,...
        {@localDisambiguateCallback varValues brushArray});
end

function localDisambiguateCallback(index,varValues,brushArray) 

import com.mathworks.page.datamgr.brushing.*;

varValue = varValues{index};
if ~isvector(brushArray{index})
    ClipBoardManager.copySelectionToClip(datamanager.var2string(varValue(...
        any(brushArray{index},2),:)));    
else
    ClipBoardManager.copySelectionToClip(datamanager.var2string(varValue(...
        brushArray{index})));
end