Changeset 2788


Ignore:
Timestamp:
05/16/07 11:25:52 (13 years ago)
Author:
curtis
Message:

Simplify some exception handling, and eliminate catch-alls.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/plugins/Importer.java

    r2784 r2788  
    105105      } 
    106106    } 
    107     else { // isOME 
     107    else { // options.isOME 
    108108      r = new OMEReader(); 
    109109    } 
     
    118118    if (!statusOk(status)) return; 
    119119 
    120     String stackFormat = options.getStackFormat(); 
    121120    boolean mergeChannels = options.isMergeChannels(); 
    122121    boolean colorize = options.isColorize(); 
     
    558557      } 
    559558    } 
    560     catch (Exception exc) { 
     559    catch (FormatException exc) { 
    561560      reportException(exc, quiet, 
    562561        "Sorry, there was a problem reading the data"); 
     562    } 
     563    catch (IOException exc) { 
     564      reportException(exc, quiet, 
     565        "Sorry, there was an I/O problem reading the data"); 
    563566    } 
    564567  } 
     
    666669 
    667670  /** Displays the image stack using the appropriate plugin. */ 
    668   private void displayStack(ImagePlus imp, IFormatReader r, FileStitcher fs, 
    669     ImporterOptions options) 
     671  private void displayStack(ImagePlus imp, 
     672    IFormatReader r, FileStitcher fs, ImporterOptions options) 
    670673  { 
    671674    boolean mergeChannels = options.isMergeChannels(); 
     
    674677    Util.adjustColorRange(imp); 
    675678 
    676     try { 
    677       // convert to RGB if needed 
    678       int pixelType = r.getPixelType(); 
    679       if (mergeChannels && r.getSizeC() > 1 && r.getSizeC() < 4 && 
    680         (pixelType == FormatTools.UINT8 || pixelType == FormatTools.INT8)) 
    681       { 
    682         makeRGB(imp, r, r.getSizeC()); 
    683       } 
    684       else if (mergeChannels && r.getSizeC() > 1 && r.getSizeC() < 4 && 
    685         imp.getStackSize() == r.getSizeC()) 
    686       { 
    687         // create a composite image - this feature is available starting in 
    688         // ImageJ 1.38n 
    689  
    690         if (IJ.versionLessThan("1.38n")) { 
    691           IJ.showMessage("Please upgrade to ImageJ 1.38n to use this feature."); 
    692         } 
    693         else { 
    694           // use reflection to construct CompositeImage, 
    695           // in case ImageJ version is too old 
    696           ReflectedUniverse ru = new ReflectedUniverse(); 
    697           try { 
    698             ru.exec("import ij.CompositeImage"); 
    699             ru.setVar("imp", imp); 
    700             ru.setVar("sizeC", r.getSizeC()); 
    701             imp = (ImagePlus) ru.exec("new CompositeImage(imp, sizeC)"); 
    702           } 
    703           catch (ReflectException exc) { 
    704             reportException(exc, options.isQuiet(), 
    705               "Sorry, there was a problem constructing the composite image"); 
    706             return; 
    707           } 
    708         } 
    709       } 
    710       else if (mergeChannels && r.getSizeC() >= 4) { 
    711         // ask the user what they would like to do... 
    712         // CTR FIXME -- migrate into ImporterOptions? 
    713         // also test with macros, and merging multiple image stacks 
    714         // (i.e., what happens if this code executes more than once?) 
    715  
    716         int planes1 = r.getImageCount() / 2; 
    717         if (planes1 * 2 < r.getImageCount()) planes1++; 
    718         int planes2 = r.getImageCount() / 3; 
    719         if (planes2 * 3 < r.getImageCount()) planes2++; 
    720  
    721         GenericDialog gd = new GenericDialog("Merging Options..."); 
    722         gd.addMessage("How would you like to merge this data?"); 
    723         gd.addChoice("", new String[] { 
    724           planes1 + " planes, 2 channels per plane", 
    725           planes2 + " planes, 3 channels per plane", "Do not merge"}, ""); 
    726         gd.showDialog(); 
    727  
    728         if (gd.wasCanceled()) return; 
    729  
    730         int idx = gd.getNextChoiceIndex(); 
    731  
    732         switch (idx) { 
    733           case 0: 
    734             makeRGB(imp, r, 2); 
    735             break; 
    736           case 1: 
    737             makeRGB(imp, r, 3); 
    738             break; 
    739         } 
    740       } 
    741  
    742       imp.setDimensions( 
    743         imp.getStackSize() / (imp.getNSlices() * imp.getNFrames()), 
    744         imp.getNSlices(), imp.getNFrames()); 
    745       if (options.isViewBrowser()) { } 
    746       else if (options.isViewImage5D()) { 
    747         int sizeZ = r.getSizeZ(); 
    748         int sizeT = r.getSizeT(); 
    749         int sizeC = r.getSizeC(); 
    750         if (imp.getStackSize() == sizeZ * sizeT) sizeC = 1; 
    751  
    752         // reorder stack to Image5D's preferred order: XYCZT 
    753         ImageStack is; 
    754         ImageStack stack = imp.getStack(); 
    755         if (r.getDimensionOrder().equals("XYCZT")) is = stack; 
    756         else { 
    757           is = new ImageStack(r.getSizeX(), r.getSizeY()); 
    758           for (int t=0; t<sizeT; t++) { 
    759             for (int z=0; z<sizeZ; z++) { 
    760               for (int c=0; c<sizeC; c++) { 
    761                 int ndx = r.getIndex(z, c, t) + 1; 
    762                 is.addSlice(stack.getSliceLabel(ndx), stack.getProcessor(ndx)); 
    763               } 
    764             } 
    765           } 
    766         } 
    767  
    768         ReflectedUniverse ru = null; 
    769         ru = new ReflectedUniverse(); 
     679    // convert to RGB if needed 
     680    int pixelType = r.getPixelType(); 
     681    if (mergeChannels && r.getSizeC() > 1 && r.getSizeC() < 4 && 
     682      (pixelType == FormatTools.UINT8 || pixelType == FormatTools.INT8)) 
     683    { 
     684      makeRGB(imp, r, r.getSizeC()); 
     685    } 
     686    else if (mergeChannels && r.getSizeC() > 1 && r.getSizeC() < 4 && 
     687      imp.getStackSize() == r.getSizeC()) 
     688    { 
     689      // create a composite image - this feature is available starting in 
     690      // ImageJ 1.38n 
     691 
     692      if (IJ.versionLessThan("1.38n")) { 
     693        IJ.showMessage("Please upgrade to ImageJ 1.38n to use this feature."); 
     694      } 
     695      else { 
     696        // use reflection to construct CompositeImage, 
     697        // in case ImageJ version is too old 
     698        ReflectedUniverse ru = new ReflectedUniverse(); 
     699        try { 
     700          ru.exec("import ij.CompositeImage"); 
     701          ru.setVar("imp", imp); 
     702          ru.setVar("sizeC", r.getSizeC()); 
     703          imp = (ImagePlus) ru.exec("new CompositeImage(imp, sizeC)"); 
     704        } 
     705        catch (ReflectException exc) { 
     706          reportException(exc, options.isQuiet(), 
     707            "Sorry, there was a problem constructing the composite image"); 
     708          return; 
     709        } 
     710      } 
     711    } 
     712    else if (mergeChannels && r.getSizeC() >= 4) { 
     713      // ask the user what they would like to do... 
     714      // CTR FIXME -- migrate into ImporterOptions? 
     715      // also test with macros, and merging multiple image stacks 
     716      // (i.e., what happens if this code executes more than once?) 
     717 
     718      int planes1 = r.getImageCount() / 2; 
     719      if (planes1 * 2 < r.getImageCount()) planes1++; 
     720      int planes2 = r.getImageCount() / 3; 
     721      if (planes2 * 3 < r.getImageCount()) planes2++; 
     722 
     723      GenericDialog gd = new GenericDialog("Merging Options..."); 
     724      gd.addMessage("How would you like to merge this data?"); 
     725      gd.addChoice("", new String[] { 
     726        planes1 + " planes, 2 channels per plane", 
     727        planes2 + " planes, 3 channels per plane", "Do not merge"}, ""); 
     728      gd.showDialog(); 
     729 
     730      if (gd.wasCanceled()) return; 
     731 
     732      int idx = gd.getNextChoiceIndex(); 
     733 
     734      switch (idx) { 
     735        case 0: 
     736          makeRGB(imp, r, 2); 
     737          break; 
     738        case 1: 
     739          makeRGB(imp, r, 3); 
     740          break; 
     741      } 
     742    } 
     743 
     744    imp.setDimensions( 
     745      imp.getStackSize() / (imp.getNSlices() * imp.getNFrames()), 
     746      imp.getNSlices(), imp.getNFrames()); 
     747    if (options.isViewBrowser()) { } 
     748    else if (options.isViewImage5D()) { 
     749      int sizeZ = r.getSizeZ(); 
     750      int sizeT = r.getSizeT(); 
     751      int sizeC = r.getSizeC(); 
     752      if (imp.getStackSize() == sizeZ * sizeT) sizeC = 1; 
     753 
     754      // reorder stack to Image5D's preferred order: XYCZT 
     755      ImageStack is; 
     756      ImageStack stack = imp.getStack(); 
     757      if (r.getDimensionOrder().equals("XYCZT")) is = stack; 
     758      else { 
     759        is = new ImageStack(r.getSizeX(), r.getSizeY()); 
     760        for (int t=0; t<sizeT; t++) { 
     761          for (int z=0; z<sizeZ; z++) { 
     762            for (int c=0; c<sizeC; c++) { 
     763              int ndx = r.getIndex(z, c, t) + 1; 
     764              is.addSlice(stack.getSliceLabel(ndx), stack.getProcessor(ndx)); 
     765            } 
     766          } 
     767        } 
     768      } 
     769 
     770      ReflectedUniverse ru = new ReflectedUniverse(); 
     771      try { 
    770772        ru.exec("import i5d.Image5D"); 
    771773        ru.setVar("title", imp.getTitle()); 
     
    782784        ru.exec("i5d.show()"); 
    783785      } 
    784       else if (options.isViewView5D()) { 
    785         int sizeZ = r.getSizeZ(); 
    786         int sizeC = r.getSizeC(); 
    787         int sizeT = r.getSizeT(); 
    788         if (imp.getStackSize() == sizeZ * sizeT) sizeC = 1; 
    789         ChannelMerger ndxReader = new ChannelMerger(r); 
    790  
    791         // reorder stack to View5D's preferred order: XYZCT 
    792         if (!r.getDimensionOrder().equals("XYZCT")) { 
    793           ImageStack is = new ImageStack(r.getSizeX(), r.getSizeY()); 
    794           ImageStack stack = imp.getStack(); 
    795           for (int t=0; t<sizeT; t++) { 
    796             for (int c=0; c<sizeC; c++) { 
    797               for (int z=0; z<sizeZ; z++) { 
    798                 int ndx = mergeChannels ? ndxReader.getIndex(z, c, t) + 1 : 
    799                   r.getIndex(z, c, t) + 1; 
    800                 is.addSlice(stack.getSliceLabel(ndx), stack.getProcessor(ndx)); 
    801               } 
    802             } 
    803           } 
    804           imp.setStack(imp.getTitle(), is); 
    805         } 
    806         WindowManager.setTempCurrentImage(imp); 
    807         IJ.run("View5D ", ""); 
    808       } 
    809       else if (!options.isViewNone()) { 
    810         if (!concatenate) imp.show(); 
    811         else imps.add(imp); 
    812       } 
    813     } 
    814     catch (Exception exc) { 
    815       exc.printStackTrace(); 
     786      catch (ReflectException exc) { 
     787        reportException(exc, options.isQuiet(), 
     788          "Sorry, there was a problem interfacing with Image5D"); 
     789        return; 
     790      } 
     791    } 
     792    else if (options.isViewView5D()) { 
     793      int sizeZ = r.getSizeZ(); 
     794      int sizeC = r.getSizeC(); 
     795      int sizeT = r.getSizeT(); 
     796      if (imp.getStackSize() == sizeZ * sizeT) sizeC = 1; 
     797      ChannelMerger ndxReader = new ChannelMerger(r); 
     798 
     799      // reorder stack to View5D's preferred order: XYZCT 
     800      if (!r.getDimensionOrder().equals("XYZCT")) { 
     801        ImageStack is = new ImageStack(r.getSizeX(), r.getSizeY()); 
     802        ImageStack stack = imp.getStack(); 
     803        for (int t=0; t<sizeT; t++) { 
     804          for (int c=0; c<sizeC; c++) { 
     805            for (int z=0; z<sizeZ; z++) { 
     806              int ndx = mergeChannels ? ndxReader.getIndex(z, c, t) + 1 : 
     807                r.getIndex(z, c, t) + 1; 
     808              is.addSlice(stack.getSliceLabel(ndx), stack.getProcessor(ndx)); 
     809            } 
     810          } 
     811        } 
     812        imp.setStack(imp.getTitle(), is); 
     813      } 
     814      WindowManager.setTempCurrentImage(imp); 
     815      IJ.run("View5D ", ""); 
     816    } 
     817    else if (!options.isViewNone()) { 
    816818      if (!concatenate) imp.show(); 
    817819      else imps.add(imp); 
     
    843845  } 
    844846 
    845   private void makeRGB(ImagePlus imp, IFormatReader r, int c) 
    846     throws FormatException, IOException 
    847   { 
     847  private void makeRGB(ImagePlus imp, IFormatReader r, int c) { 
    848848    ImageStack s = imp.getStack(); 
    849849    ImageStack newStack = new ImageStack(s.getWidth(), s.getHeight()); 
Note: See TracChangeset for help on using the changeset viewer.