www.gusucode.com > datamanager 工具箱matlab源码程序 > datamanager/@datamanager/disambiguate.m
function disambiguate(objs,okAction) % Utility method for brushing/linked plots. May change in a future release. % Copyright 2007-2011 The MathWorks, Inc. import com.mathworks.page.datamgr.brushing.*; import com.mathworks.page.datamgr.linkedplots.*; import com.mathworks.page.datamgr.utils.*; import com.mathworks.page.plottool.plotbrowser.*; % Build proxy objects for icon display allProps = getplotbrowserproptable; gProxy = ChartObjectProxyFactory.createSeriesProxyArray(length(objs)); for k=1:length(objs) gProxy(k) = ChartObjectProxyFactory.createSeriesProxy(java(handle(objs(k))),... class(handle(objs(k)))); I1 = find(cellfun(@(x) strcmp(class(objs(k)),x{1}),allProps)); if ~isempty(I1) propNames = allProps{I1}{2}; for j=1:length(propNames) ChartObjectProxyFactory.updateProperty(gProxy(k),propNames{j}); end end end % Build table entries tableData = javaArray('java.lang.Object',length(objs),4); for k=1:length(objs) tableData(k,1) = gProxy(k); bData = (get(objs(k),'BrushData')>0); % tableData(k,2) = java.lang.String(sprintf(getString(message('MATLAB:datamanager:disambiguate:NumberInteger',... % sum(bData(:)))),length(get(objs(k),'xdata')))); tableData(k,2) = java.lang.String(getString(message('MATLAB:datamanager:disambiguate:NumberInteger',... sum(bData(:)),length(get(objs(k),'xdata'))))); tableData(k,3) = java.lang.String(get(objs(k),'Type')); tableData(k,4) = java.lang.String(get(objs(k),'Tag')); end % Build and show Disambiguation dialog dlg = javaObjectEDT('com.mathworks.page.datamgr.brushing.DisambiguationDialog',... datamanager.getJavaFrame(ancestor(objs(1),'figure')),tableData,gProxy,... {' ',getString(message('MATLAB:datamanager:disambiguate:NumberOfBrushedPoints')),'Type','Tag'}); set(ancestor(objs(1),'figure'),'userdata',dlg) % Specify callbacks set(handle(dlg.getSelectionModel,'callbackproperties'),... 'ValueChangedCallback',{@localSelectObj objs}); set(handle(dlg.getCancelButton,'callbackproperties'),... 'ActionPerformedCallback',{@localCancel dlg objs}); set(handle(dlg.getOKButton,'callbackproperties'),... 'ActionPerformedCallback',{@localOK dlg objs}); setappdata(dlg,'okAction',okAction); javaMethodEDT('show',dlg); % 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 localSelectObj(es,ed,objs) %#ok<INUSL> % Row selection callback pos = es.getMinSelectionIndex+1; % Restore cached widths localRestoreCachedWidths(objs) if pos>=1 lw = get(objs(pos),'LineWidth'); setappdata(objs(pos),'CacheWidth',lw); set(objs(pos),'LineWidth',lw*3); end function localRestoreCachedWidths(ls) % Restore emphasis line widths to original values on close. for k=1:length(ls) cacheWidth = getappdata(ls(k),'CacheWidth'); if ~isempty(cacheWidth ) set(ls(k),'LineWidth',cacheWidth); end end function localCancel(es,ed,dlg,objs) %#ok<INUSL> localRestoreCachedWidths(objs); javaMethodEDT('dispose',dlg); function localOK(es,ed,dlg,objs) %#ok<INUSL> localRestoreCachedWidths(objs); javaMethodEDT('dispose',dlg); pos = dlg.getSelectionIndex+1; if pos>=1 okFcn = getappdata(dlg,'okAction'); feval(okFcn{1},okFcn{2:end},objs(pos)); end