001 package cnslab.gui; 002 003 import java.io.*; 004 import java.util.*; 005 006 import ucar.ma2.ArrayChar; 007 import ucar.nc2.Dimension; 008 import ucar.nc2.Variable; 009 import thinlet.Thinlet; 010 011 import cnslab.cnsnetwork.PlotResult; 012 013 /*********************************************************************** 014 * @version 015 * $Date$ 016 * $Rev$ 017 * $Author$ 018 * @author 019 * Yi Dong 020 * @author 021 * David Wallace Croft, M.Sc. 022 * @author 023 * Jeremy Cohen 024 ***********************************************************************/ 025 public final class ContentProcessResult2 026 implements Runnable 027 //////////////////////////////////////////////////////////////////////// 028 //////////////////////////////////////////////////////////////////////// 029 { 030 031 private final Thinlet thinlet; 032 033 private final String file; 034 035 //////////////////////////////////////////////////////////////////////// 036 //////////////////////////////////////////////////////////////////////// 037 038 public ContentProcessResult2 ( 039 final Thinlet thinlet, 040 final String file ) 041 //////////////////////////////////////////////////////////////////////// 042 { 043 this.thinlet = thinlet; 044 045 this.file = file; 046 } 047 048 //////////////////////////////////////////////////////////////////////// 049 //////////////////////////////////////////////////////////////////////// 050 051 @Override 052 public void run ( ) 053 //////////////////////////////////////////////////////////////////////// 054 { 055 final File dir = new File ( "results" ); 056 057 final FilenameFilter 058 filter = new FilenameFilter ( ) 059 { 060 @Override 061 public boolean accept ( 062 final File dirFile, 063 final String name ) 064 { 065 return name.endsWith ( ".nc" ) || name.endsWith ( ".NC" ); 066 } 067 }; 068 069 //System.out.println(thin.getCount(thin.find("xmlModles"))); 070 071 final String [ ] children = dir.list ( filter ); 072 073 // if( thin.getCount(thin.find("resultsCombo")) != children.length ) 074 { 075 Arrays.sort ( children ); 076 077 thinlet.removeAll ( thinlet.find ( "resultsCombo" ) ); 078 079 //System.out.println("files:" +children.length); 080 081 for ( int i = 0; i < children.length; i++ ) 082 { 083 // System.out.println("file:"+children[i]); 084 085 final Object o = Thinlet.create ( "choice" ); 086 087 thinlet.setString ( 088 o, 089 "text", 090 children [ i ] ); 091 092 if ( children [ i ].equals ( file ) ) 093 { 094 thinlet.setInteger ( 095 thinlet.find ( "resultsCombo" ), 096 "selected", 097 i ); 098 } 099 100 thinlet.add ( 101 thinlet.find ( "resultsCombo" ), 102 o ); 103 } 104 } 105 106 if ( thinlet.getSelectedItem ( thinlet.find ( "resultsCombo" ) ) 107 != null ) 108 { 109 try 110 { 111 thinlet.removeAll ( thinlet.find ( "eleList" ) ); 112 113 final String 114 fileName = thinlet.getString ( 115 thinlet.getSelectedItem ( thinlet.find ( "resultsCombo" ) ), 116 "text"); 117 118 //System.out.println(fileName); 119 120 // TODO: Why is this not used? 121 final PlotResult pr = new PlotResult ( "test" ); 122 123 PlotResult.init ( "results/" + fileName ); 124 125 //System.out.println(pr.numExp); 126 127 final Dimension 128 exp = PlotResult.ncfile.findDimension ( "suEleId" ); 129 130 for ( int i = 0; i < PlotResult.numExp; i++ ) 131 { 132 //Subexperiment node 133 134 final Object o = Thinlet.create ( "node" ); 135 136 thinlet.setString ( 137 o, 138 "text", 139 PlotResult.subexpNames.getString ( i ) ); 140 141 //Single Unit node 142 143 if ( exp != null ) 144 { 145 final Object su = Thinlet.create ( "node" ); 146 147 thinlet.setString ( 148 su, 149 "text", 150 "Single Unit" ); 151 152 thinlet.setBoolean ( 153 su, 154 "expanded", 155 false ); 156 157 final Variable 158 v = PlotResult.ncfile.findVariable ( "suNames" ); 159 160 final ArrayChar.D2 suNames = ( ArrayChar.D2 ) v.read ( ); 161 162 // System.out.println(names.getString(0)); 163 164 final int [ ] varShape = v.getShape ( ); 165 166 // TODO: Why is this not used? 167 final int suSeries = varShape [ 0 ]; 168 169 // System.out.println(varShape[0]+" "+varShape[1]); 170 171 for ( int eleId = 0; eleId < varShape [ 0 ]; eleId++ ) 172 { 173 final Object su_item = Thinlet.create ( "node" ); 174 175 thinlet.setString ( 176 su_item, 177 "text", 178 suNames.getString ( eleId ) ); 179 180 thinlet.setString ( 181 su_item, 182 "name", 183 i + ",0," + eleId ); 184 185 thinlet.add ( su, su_item ); 186 } 187 188 thinlet.add ( o, su ); 189 } 190 191 //Mu node 192 // 193 // 194 195 Variable v = PlotResult.ncfile.findVariable ( "muNames" ); 196 197 if ( v != null ) 198 { 199 final ArrayChar.D2 suNames = ( ArrayChar.D2 ) v.read ( ); 200 201 // System.out.println(names.getString(0)); 202 203 final int [ ] varShape = v.getShape ( ); 204 205 // TODO: Why is this not used? 206 final int suSeries = varShape [ 0 ]; 207 208 //suNames.getString(i); 209 210 final Object mu = Thinlet.create ( "node" ); 211 212 thinlet.setString ( 213 mu, 214 "text", 215 "Multiple Unit" ); 216 217 thinlet.setBoolean ( 218 mu, 219 "expanded", 220 false ); 221 222 for ( int eleId = 0; eleId < varShape [ 0]; eleId++ ) 223 { 224 final Object mu_item = Thinlet.create ( "node" ); 225 226 thinlet.setString ( 227 mu_item, 228 "text", 229 suNames.getString ( eleId ) ); 230 231 thinlet.setString ( 232 mu_item, 233 "name", 234 i + ",1," + eleId ); 235 236 thinlet.add ( 237 mu, 238 mu_item); 239 } 240 241 thinlet.add ( o, mu ); 242 } 243 244 //Field node 245 246 if ( PlotResult.numField > 0 ) 247 { 248 v = PlotResult.ncfile.findVariable("fieldNames"); 249 250 final ArrayChar.D2 fieldNames = ( ArrayChar.D2 ) v.read ( ); 251 252 final Object field = Thinlet.create ( "node" ); 253 254 thinlet.setString ( 255 field, 256 "text", 257 "Field" ); 258 259 thinlet.setBoolean ( 260 field, 261 "expanded", 262 false ); 263 264 for ( int ii = 0; ii < PlotResult.numField; ii++ ) 265 { 266 final Object fie_item = Thinlet.create ( "node" ); 267 268 thinlet.setString ( 269 fie_item, 270 "text", 271 fieldNames.getString ( ii ) ); 272 273 thinlet.setString ( 274 fie_item, 275 "name", 276 i + ",2," + ii ); 277 278 thinlet.add ( 279 field, 280 fie_item ); 281 } 282 283 thinlet.add ( 284 o, 285 field ); 286 } 287 288 //Vector node 289 290 if ( PlotResult.numVector > 0 ) 291 { 292 v = PlotResult.ncfile.findVariable ( "vectorNames" ); 293 294 final ArrayChar.D2 vectorNames = ( ArrayChar.D2 ) v.read ( ); 295 296 final Object vector = Thinlet.create ( "node" ); 297 298 thinlet.setString ( 299 vector, 300 "text", 301 "Vector" ); 302 303 thinlet.setBoolean ( 304 vector, 305 "expanded", 306 false ); 307 308 for ( int ii = 0; ii < PlotResult.numVector; ii++ ) 309 { 310 final Object fie_item = Thinlet.create ( "node" ); 311 312 thinlet.setString ( 313 fie_item, 314 "text", 315 vectorNames.getString ( ii ) ); 316 317 thinlet.setString ( 318 fie_item, 319 "name", 320 i + ",3," + ii ); 321 322 thinlet.add ( 323 vector, 324 fie_item ); 325 } 326 327 thinlet.add ( 328 o, 329 vector ); 330 } 331 332 // Intracellular node 333 334 if ( PlotResult.numIntra > 0 ) 335 { 336 v = PlotResult.ncfile.findVariable ( "intraNames" ); 337 338 final ArrayChar.D2 intraNames = ( ArrayChar.D2 ) v.read ( ); 339 340 final Object intra = Thinlet.create ( "node" ); 341 342 thinlet.setString ( 343 intra, 344 "text", 345 "Intracellular" ); 346 347 thinlet.setBoolean ( 348 intra, 349 "expanded", 350 false ); 351 352 for ( int ii = 0; ii < PlotResult.numIntra; ii++ ) 353 { 354 final Object intra_item = Thinlet.create ( "node" ); 355 356 thinlet.setString ( 357 intra_item, 358 "text", 359 intraNames.getString ( ii ) ); 360 361 thinlet.setString ( 362 intra_item, 363 "name", 364 i + ",4," + ii ); 365 366 thinlet.add ( 367 intra, 368 intra_item ); 369 } 370 371 thinlet.add ( 372 o, 373 intra ); 374 } 375 376 377 thinlet.add ( thinlet.find ( "eleList" ), o ); 378 } 379 380 /* 381 if ( out.equals ( "" ) ) 382 { 383 thin.setString ( 384 thin.find ( "simStatusDisplay" ), 385 "text", 386 thin.getString ( 387 thin.getSelectedItem ( 388 thin.find ( "xmlModles" ) ), 389 "text" ) 390 + " ...OK!\n" ); 391 392 thin.setBoolean ( 393 thin.find ( "startSim" ), 394 "enabled", 395 true ); 396 397 thin.setBoolean ( 398 thin.find ( "stopSim" ), 399 "enabled", 400 false ); 401 } 402 else 403 { 404 thin.setString ( 405 thin.find ( "simStatusDisplay" ), 406 "text", 407 thin.getString ( 408 thin.getSelectedItem ( 409 thin.find ( "xmlModles" ) ), 410 "text" ) + " ...Error!\n" + out ); 411 412 thin.setBoolean ( 413 thin.find ( "startSim" ), 414 "enabled", 415 false ); 416 417 thin.setBoolean ( 418 thin.find ( "stopSim" ), 419 "enabled", 420 false ); 421 } 422 */ 423 424 PlotResult.stop ( ); 425 } 426 catch ( final Exception e ) 427 { 428 e.printStackTrace ( ); 429 } 430 } 431 } 432 433 //////////////////////////////////////////////////////////////////////// 434 //////////////////////////////////////////////////////////////////////// 435 }