www.gusucode.com > datamanager 工具箱matlab源码程序 > datamanager/@datamanager/newvardisambiguateVariables.m
function newvardisambiguateVariables(fig,varNames,varValues,mfile,fcnname,okAction,callerWho) % Copyright 2007-2011 The MathWorks, Inc. % Disambiguate variables in linked plots when creating new variables from % brushing annotations. % Copyright 2008-2011 The MathWorks, Inc. % Find linked variable names % Build table entries tableData = javaArray('java.lang.Object',length(varNames),3); brushMgr = datamanager.brushmanager; for k=1:length(varNames) tableData(k,1) = java.lang.String(varNames{k}); I = brushMgr.getBrushingProp(varNames{k},mfile,fcnname,'I'); % tableData(k,2) = java.lang.String(sprintf(getString(message('MATLAB:datamanager:newvardisambiguateVariables:NumberInteger',sum(I(:)))),numel(I))); tableData(k,2) = java.lang.String(getString(message('MATLAB:datamanager:newvardisambiguateVariables:NumberInteger',sum(I(:)),numel(I)))); varDescriptions = workspacefunc('getabstractvaluesummariesj',varValues(k)); if length(varDescriptions)>=1 tableData(k,3) = varDescriptions(1); end end % Build and show Disambiguation dialog dlg = javaObjectEDT('com.mathworks.page.datamgr.brushing.NewVarVariableDisambiguationDialog',... datamanager.getJavaFrame(fig),tableData,... {getString(message('MATLAB:datamanager:newvardisambiguateVariables:Name')),getString(message('MATLAB:datamanager:newvardisambiguateVariables:NumberOfBrushedPoints')),getString(message('MATLAB:datamanager:newvardisambiguateVariables:Size'))},callerWho); % Specify callbacks set(handle(dlg.getOKButton,'callbackproperties'),... 'ActionPerformedCallback',{@localOK dlg okAction varNames varValues mfile fcnname}); set(handle(dlg.getVariableComboBox.getEditor,'callbackproperties'),... 'ActionPerformedCallback',{@localOK dlg okAction varNames varValues mfile fcnname}); awtinvoke(dlg,'show()'); % Make sure the dialog is fully ready before interacting with it. We don't % want callbacks executing before all java classes are fully initialized. drawnow function localOK(es,ed,dlg,okAction,varNames,varValues,mfile,fcnname) %#ok<INUSL> varName = char(dlg.getVarName); if isempty(varName) || ~isvarname(varName) javaMethodEDT('showMessageDialog','com.mathworks.mwswing.MJOptionPane',... dlg,getString(message('MATLAB:datamanager:newvardisambiguateVariables:InvalidOrEmptyVariableName')), 'MATLAB',... javax.swing.JOptionPane.ERROR_MESSAGE); awtinvoke(dlg,'show()'); return end pos = dlg.getSelectionIndex+1; if pos>=1 writeData = feval(okAction,varNames{pos},varValues{pos},mfile,fcnname); if ~isempty(writeData) assignin('caller',varName,writeData) end end awtinvoke(dlg,'dispose()');