use of cbit.vcell.geometry.gui.SurfaceCanvas in project vcell by virtualcell.
the class PDEDataViewer method updateDataValueSurfaceViewer0.
// private AsynchClientTask[] getDataVlaueSurfaceViewerTasks(){
// AsynchClientTask createDataValueSurfaceViewerTask = new AsynchClientTask("Create surface viewer...",AsynchClientTask.TASKTYPE_NONSWING_BLOCKING) {
// @Override
// public void run(Hashtable<String, Object> hashTable) throws Exception {
// if(getDataValueSurfaceViewer().getSurfaceCollectionDataInfoProvider() == null){
// createDataValueSurfaceViewer(getClientTaskStatusSupport());
// }
// }
// };
//
// AsynchClientTask updateDataValueSurfaceViewerTask = new AsynchClientTask("Update surface viewer...",AsynchClientTask.TASKTYPE_SWING_BLOCKING) {
// @Override
// public void run(Hashtable<String, Object> hashTable) throws Exception {
// updateDataValueSurfaceViewer0();
// }
// };
//
// AsynchClientTask resetDataValueSurfaceViewerTask = new AsynchClientTask("Reset tab...",AsynchClientTask.TASKTYPE_SWING_NONBLOCKING,false,false) {
// @Override
// public void run(Hashtable<String, Object> hashTable) throws Exception {
// if(getDataValueSurfaceViewer().getSurfaceCollectionDataInfoProvider() == null){
// viewDataTabbedPane.setSelectedIndex(0);
// }
// }
// };
// return new AsynchClientTask[] {createDataValueSurfaceViewerTask,updateDataValueSurfaceViewerTask,resetDataValueSurfaceViewerTask};
// }
// private Timer dataValueSurfaceTimer;
// //private boolean bPdeIsParamScan=false;
// private void updateDataValueSurfaceViewer(){
// // if((dataValueSurfaceTimer = ClientTaskDispatcher.getBlockingTimer(this,getPdeDataContext(),null,dataValueSurfaceTimer,new ActionListener() {@Override public void actionPerformed(ActionEvent e2) {updateDataValueSurfaceViewer();}}))!=null){
// // return;
// // }
// if(bSkipSurfaceCalc){
// return;
// }
// if(getDataValueSurfaceViewer().getSurfaceCollectionDataInfoProvider() == null){
// if((dataValueSurfaceTimer = ClientTaskDispatcher.getBlockingTimer(this,getPdeDataContext(),null,dataValueSurfaceTimer,new ActionListener() {@Override public void actionPerformed(ActionEvent e2) {updateDataValueSurfaceViewer();}}))!=null){
// return;
// }
// ClientTaskDispatcher.dispatch(this, new Hashtable<String, Object>(), getDataVlaueSurfaceViewerTasks(),true,true,null);
// }else{
// try{
// updateDataValueSurfaceViewer0();
// }catch(Exception e){
// e.printStackTrace();
// DialogUtils.showErrorDialog(this, e.getMessage());
// }
// }
// }
/**
* Insert the method's description here.
* Creation date: (9/25/2005 2:00:05 PM)
*/
private void updateDataValueSurfaceViewer0() {
// viewDataTabbedPane.addTab(CurrentView.SURFACE_VIEW.title, getDataValueSurfaceViewer());
if (viewDataTabbedPane.getSelectedIndex() != CurrentView.SURFACE_VIEW.ordinal()) {
return;
}
// SurfaceColors and DataValues
if (getDataValueSurfaceViewer().getSurfaceCollectionDataInfo() == null) {
// happens with PostProcessingImageData version of PDEDataViewer
return;
}
SurfaceCollection surfaceCollection = getDataValueSurfaceViewer().getSurfaceCollectionDataInfo().getSurfaceCollection();
DisplayAdapterService das = getPDEDataContextPanel1().getdisplayAdapterService1();
final int[][] surfaceColors = new int[surfaceCollection.getSurfaceCount()][];
final double[][] surfaceDataValues = new double[surfaceCollection.getSurfaceCount()][];
boolean bMembraneVariable = getPdeDataContext().getDataIdentifier().getVariableType().equals(VariableType.MEMBRANE);
RecodeDataForDomainInfo recodeDataForDomainInfo = getPDEDataContextPanel1().getRecodeDataForDomainInfo();
double[] membraneValues = (recodeDataForDomainInfo.isRecoded() ? recodeDataForDomainInfo.getRecodedDataForDomain() : getPdeDataContext().getDataValues());
for (int i = 0; i < surfaceCollection.getSurfaceCount(); i += 1) {
Surface surface = surfaceCollection.getSurfaces(i);
surfaceColors[i] = new int[surface.getPolygonCount()];
surfaceDataValues[i] = new double[surface.getPolygonCount()];
for (int j = 0; j < surface.getPolygonCount(); j += 1) {
int membraneIndexForPolygon = meshRegionSurfaces.getMembraneIndexForPolygon(i, j);
if (bMembraneVariable) {
surfaceDataValues[i][j] = membraneValues[membraneIndexForPolygon];
} else {
// get membrane region index from membrane index
surfaceDataValues[i][j] = membraneValues[getPdeDataContext().getCartesianMesh().getMembraneRegionIndex(membraneIndexForPolygon)];
}
surfaceColors[i][j] = das.getColorFromValue(surfaceDataValues[i][j]);
}
}
DataValueSurfaceViewer.SurfaceCollectionDataInfoProvider svdp = new DataValueSurfaceViewer.SurfaceCollectionDataInfoProvider() {
private DisplayAdapterService updatedDAS = new DisplayAdapterService(getPDEDataContextPanel1().getdisplayAdapterService1());
private String updatedVariableName = getPdeDataContext().getVariableName();
private double updatedTimePoint = getPdeDataContext().getTimePoint();
private double[] updatedVariableValues = getPdeDataContext().getDataValues();
private VCDataIdentifier updatedVCDataIdentifier = getPdeDataContext().getVCDataIdentifier();
public void makeMovie(SurfaceCanvas surfaceCanvas) {
makeSurfaceMovie(surfaceCanvas, updatedVariableValues.length, updatedVariableName, updatedDAS, updatedVCDataIdentifier);
}
public double getValue(int surfaceIndex, int polygonIndex) {
return updatedVariableValues[meshRegionSurfaces.getMembraneIndexForPolygon(surfaceIndex, polygonIndex)];
}
public String getValueDescription(int surfaceIndex, int polygonIndex) {
return updatedVariableName;
}
public int[][] getSurfacePolygonColors() {
return surfaceColors;
}
public Coordinate getCentroid(int surfaceIndex, int polygonIndex) {
return getPdeDataContext().getCartesianMesh().getMembraneElements()[meshRegionSurfaces.getMembraneIndexForPolygon(surfaceIndex, polygonIndex)].getCentroid();
}
public float getArea(int surfaceIndex, int polygonIndex) {
return getPdeDataContext().getCartesianMesh().getMembraneElements()[meshRegionSurfaces.getMembraneIndexForPolygon(surfaceIndex, polygonIndex)].getArea();
}
public Vect3d getNormal(int surfaceIndex, int polygonIndex) {
return getPdeDataContext().getCartesianMesh().getMembraneElements()[meshRegionSurfaces.getMembraneIndexForPolygon(surfaceIndex, polygonIndex)].getNormal();
}
public int getMembraneIndex(int surfaceIndex, int polygonIndex) {
return meshRegionSurfaces.getMembraneIndexForPolygon(surfaceIndex, polygonIndex);
}
public Color getROIHighlightColor() {
return new Color(getPDEDataContextPanel1().getdisplayAdapterService1().getSpecialColors()[cbit.image.DisplayAdapterService.FOREGROUND_HIGHLIGHT_COLOR_OFFSET]);
}
@Override
public boolean isMembrIndexInVarDomain(int membrIndex) {
return (getPDEDataContextPanel1().getRecodeDataForDomainInfo() != null ? getPDEDataContextPanel1().getRecodeDataForDomainInfo().isIndexInDomain(membrIndex) : true);
}
// public void showComponentInFrame(Component comp,String title){
// PDEDataViewer.this.showComponentInFrame(comp,title);
// }
public void plotTimeSeriesData(int[][] indices, boolean bAllTimes, boolean bTimeStats, boolean bSpaceStats) throws DataAccessException {
double[] timePoints = getPdeDataContext().getTimePoints();
double beginTime = (bAllTimes ? timePoints[0] : updatedTimePoint);
double endTime = (bAllTimes ? timePoints[timePoints.length - 1] : beginTime);
String[] varNames = new String[indices.length];
for (int i = 0; i < varNames.length; i += 1) {
varNames[i] = updatedVariableName;
}
TimeSeriesJobSpec timeSeriesJobSpec = new TimeSeriesJobSpec(varNames, indices, beginTime, 1, endTime, bSpaceStats, bTimeStats, VCDataJobID.createVCDataJobID(getDataViewerManager().getUser(), true));
Hashtable<String, Object> hash = new Hashtable<String, Object>();
hash.put(StringKey_timeSeriesJobSpec, timeSeriesJobSpec);
AsynchClientTask task1 = new TimeSeriesDataRetrievalTask("Retrieve data", PDEDataViewer.this, getPdeDataContext());
AsynchClientTask task2 = new AsynchClientTask("Showing surface", AsynchClientTask.TASKTYPE_SWING_BLOCKING) {
@Override
public void run(Hashtable<String, Object> hashTable) throws Exception {
TSJobResultsSpaceStats tsJobResultsSpaceStats = (TSJobResultsSpaceStats) hashTable.get(StringKey_timeSeriesJobResults);
plotSpaceStats(tsJobResultsSpaceStats);
}
};
ClientTaskDispatcher.dispatch(PDEDataViewer.this, hash, new AsynchClientTask[] { task1, task2 }, true, true, null);
}
};
getDataValueSurfaceViewer().setSurfaceCollectionDataInfoProvider(svdp);
}
Aggregations