Changeset 6338


Ignore:
Timestamp:
05/18/10 15:08:55 (9 years ago)
Author:
curtis
Message:

Fix DataBrowser bugs with newer versions of ImageJ.

Location:
trunk/components/loci-plugins/src/loci/plugins
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/loci-plugins/src/loci/plugins/in/ColorDialog.java

    r6326 r6338  
    2727 
    2828import ij.gui.GenericDialog; 
    29 import ij.util.Tools; 
    3029 
    3130import java.awt.Color; 
     
    7473  private static final Dimension SWATCH_SIZE = new Dimension(100, 50); 
    7574 
    76   // -- Fields -- 
    77  
    78   private List<TextField> colors; 
    79  
    8075  // -- Constructor -- 
    8176 
     
    115110 
    116111    // change swatch colors when sliders move 
    117     List<TextField> colorFields = gd.getNumericFields(); 
     112    List<TextField> colorFields = getNumericFields(gd); 
    118113    attachListeners(colorFields, swatches); 
    119114 
     
    188183  } 
    189184 
     185  @SuppressWarnings("unchecked") 
     186  private List<TextField> getNumericFields(GenericDialog gd) { 
     187    return gd.getNumericFields(); 
     188  } 
     189 
    190190} 
  • trunk/components/loci-plugins/src/loci/plugins/in/DisplayHandler.java

    r6325 r6338  
    4747import loci.formats.services.OMEXMLService; 
    4848import loci.plugins.BF; 
     49import loci.plugins.util.DataBrowser; 
    4950import loci.plugins.util.ROIHandler; 
    5051import loci.plugins.util.SearchableWindow; 
     
    145146    // recent versions of ImageJ v1.43+ broke DataBrowser 
    146147    // by removing the sliceSelector field. 
    147     displayNormal(imp); 
     148    //displayNormal(imp); 
    148149 
    149150    // CTR FIXME 
    150      
    151     //IFormatReader r = options.getReader(); 
    152     //String[] dimTypes = r.getChannelDimTypes(); 
    153     //int[] dimLengths = r.getChannelDimLengths(); 
    154     //new DataBrowser(imp, null, dimTypes, dimLengths, xmlWindow); 
     151    IFormatReader r = process.getReader(); 
     152    String[] dimTypes = r.getChannelDimTypes(); 
     153    int[] dimLengths = r.getChannelDimLengths(); 
     154    new DataBrowser(imp, null, dimTypes, dimLengths, xmlWindow); 
    155155  } 
    156156 
  • trunk/components/loci-plugins/src/loci/plugins/util/DataBrowser.java

    r6279 r6338  
    4545import java.awt.event.ActionEvent; 
    4646import java.awt.event.AdjustmentEvent; 
     47import java.awt.event.MouseWheelEvent; 
    4748import java.io.IOException; 
    4849 
     
    7778  // -- Fields -- 
    7879 
    79   protected volatile boolean done; 
     80//  protected volatile boolean done; 
    8081 
    8182  protected JSpinner fpsSpin; 
     
    8889  protected String xml; 
    8990 
     91  protected Scrollbar zScroll, cScroll, tScroll; 
    9092  protected Scrollbar[] cSliders; 
    9193 
     
    9395  protected int[] cIndex; 
    9496 
    95   private int slice; 
     97  //private int slice; 
    9698 
    9799  // -- Constructors -- 
     
    160162    boolean hasT = t > 1; 
    161163 
    162     if (sliceSelector != null) remove(sliceSelector); 
    163     if (frameSelector != null) remove(frameSelector); 
    164     if (channelSelector != null) remove(channelSelector); 
     164    // remove everything except the image canvas 
     165    Component[] comps = getComponents(); 
     166    for (Component comp : comps) { 
     167      if (!(comp instanceof ImageCanvas)) remove(comp); 
     168    } 
    165169 
    166170    ImageJ ij = IJ.getInstance(); 
    167171 
    168172    if (hasC) { 
    169       channelSelector = new Scrollbar(Scrollbar.HORIZONTAL, 1, 1, 1, c + 1); 
    170       add(channelSelector); 
    171       if (ij != null) channelSelector.addKeyListener(ij); 
    172       channelSelector.addAdjustmentListener(this); 
     173      cScroll = new Scrollbar(Scrollbar.HORIZONTAL, 1, 1, 1, c + 1); 
     174      add(cScroll); 
     175      if (ij != null) cScroll.addKeyListener(ij); 
     176      cScroll.addAdjustmentListener(this); 
    173177      // prevents scroll bar from blinking on Windows 
    174       channelSelector.setFocusable(false); 
    175       channelSelector.setUnitIncrement(1); 
    176       channelSelector.setBlockIncrement(1); 
     178      cScroll.setFocusable(false); 
     179      cScroll.setUnitIncrement(1); 
     180      cScroll.setBlockIncrement(1); 
    177181    } 
    178182    if (hasZ) { 
    179       sliceSelector = new Scrollbar(Scrollbar.HORIZONTAL, 1, 1, 1, z + 1); 
    180       add(sliceSelector); 
    181       if (ij != null) sliceSelector.addKeyListener(ij); 
    182       sliceSelector.addAdjustmentListener(this); 
    183       sliceSelector.setFocusable(false); 
     183      zScroll = new Scrollbar(Scrollbar.HORIZONTAL, 1, 1, 1, z + 1); 
     184      add(zScroll); 
     185      if (ij != null) zScroll.addKeyListener(ij); 
     186      zScroll.addAdjustmentListener(this); 
     187      zScroll.setFocusable(false); 
    184188      int blockIncrement = Math.max(z / 10, 1); 
    185       sliceSelector.setUnitIncrement(1); 
    186       sliceSelector.setBlockIncrement(blockIncrement); 
     189      zScroll.setUnitIncrement(1); 
     190      zScroll.setBlockIncrement(blockIncrement); 
    187191    } 
    188192    if (hasT) { 
    189       frameSelector = new Scrollbar(Scrollbar.HORIZONTAL, 1, 1, 1, t + 1); 
    190       add(frameSelector); 
    191       if (ij != null) frameSelector.addKeyListener(ij); 
    192       frameSelector.addAdjustmentListener(this); 
    193       frameSelector.setFocusable(false); 
     193      tScroll = new Scrollbar(Scrollbar.HORIZONTAL, 1, 1, 1, t + 1); 
     194      add(tScroll); 
     195      if (ij != null) tScroll.addKeyListener(ij); 
     196      tScroll.addAdjustmentListener(this); 
     197      tScroll.setFocusable(false); 
    194198      int blockIncrement = Math.max(t / 10, 1); 
    195       frameSelector.setUnitIncrement(1); 
    196       frameSelector.setBlockIncrement(blockIncrement); 
     199      tScroll.setUnitIncrement(1); 
     200      tScroll.setBlockIncrement(blockIncrement); 
    197201    } 
    198202 
     
    208212    } 
    209213 
    210     final Scrollbar zSlider = hasZ ? sliceSelector : makeDummySlider(); 
    211     final Scrollbar tSlider = hasT ? frameSelector : makeDummySlider(); 
     214    final Scrollbar zSlider = hasZ ? zScroll : makeDummySlider(); 
     215    final Scrollbar tSlider = hasT ? tScroll : makeDummySlider(); 
    212216 
    213217    cSliders = new Scrollbar[channels.length]; 
     
    215219    for (int i=0; i<channels.length; i++) { 
    216220      if (channels.length == 1) { 
    217         cSliders[i] = hasC ? channelSelector : makeDummySlider(); 
     221        cSliders[i] = hasC ? cScroll : makeDummySlider(); 
    218222      } 
    219223      else if (cLengths[i] == 1) { 
     
    340344              setPosition(c, z, t); 
    341345              imp.setPosition(c, z, t); 
    342               updateSlice(); 
     346              syncSliders(); 
     347//              updateSlice(); 
    343348              int fps = ((Number) fpsSpin.getValue()).intValue(); 
    344349              ms = 1000 / fps; 
     
    354359  } 
    355360 
    356   // -- DataBrowser API methods -- 
     361  // -- DataBrowser methods -- 
    357362 
    358363  /** 
     
    406411  } 
    407412 
    408   // -- Window API methods -- 
    409  
    410   public void dispose() { 
    411     super.dispose(); 
    412   } 
     413  // -- Window methods -- 
    413414 
    414415  /** Overridden pack method to allow us to delay initial window sizing. */ 
     416  @Override 
    415417  public void pack() { 
    416418    if (allowShow) super.pack(); 
    417419  } 
    418420 
    419   // -- Component API methods -- 
     421  // -- Component methods -- 
    420422 
    421423  /** Overridden show method to allow us to delay initial window display. */ 
     424  @Override 
    422425  public void setVisible(boolean b) { 
    423426    if (allowShow) super.setVisible(b); 
    424427  } 
    425428 
    426   // -- ActionListener API methods -- 
    427  
     429  // -- ActionListener methods -- 
     430 
     431  @Override 
    428432  public void actionPerformed(ActionEvent e) { 
    429433    Object src = e.getSource(); 
    430     if (src == animate) { 
    431       toggleAnimation(); 
    432     } 
    433     else if (src == options) { 
    434       showOptionsWindow(); 
    435     } 
    436     else if (src == metadata) { 
    437       showMetadataWindow(); 
    438     } 
     434    if (src == animate) toggleAnimation(); 
     435    else if (src == options) showOptionsWindow(); 
     436    else if (src == metadata) showMetadataWindow(); 
    439437    // NB: Do not eat superclass events. Om nom nom nom. :-) 
    440438    else super.actionPerformed(e); 
    441439  } 
    442440 
    443   // -- AdjustmentListener API methods -- 
    444  
     441  // -- AdjustmentListener methods -- 
     442 
     443  @Override 
    445444  public synchronized void adjustmentValueChanged(AdjustmentEvent e) { 
    446     Object src = e.getSource(); 
    447     for (int i=0; i<cSliders.length; i++) { 
    448       if (src == cSliders[i]) { 
    449         cIndex[i] = cSliders[i].getValue() - 1; 
    450         int channel = FormatTools.positionToRaster(cLengths, cIndex) + 1; 
    451         if (channelSelector != null) { 
    452           channelSelector.setValue(channel); 
    453           super.adjustmentValueChanged(new AdjustmentEvent(channelSelector, 
    454             AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED, AdjustmentEvent.TRACK, 
    455             channel)); 
    456           updateSlice(); 
    457         } 
    458         return; 
    459       } 
    460     } 
    461445    super.adjustmentValueChanged(e); 
    462     updateSlice(); 
    463   } 
    464  
     446    syncPlane(); 
     447  } 
     448   
     449  // -- MouseWheelListener methods -- 
     450    
     451  public void mouseWheelMoved(MouseWheelEvent event) { 
     452    super.mouseWheelMoved(event); 
     453    syncSliders(); 
     454  } 
     455 
     456  /* 
     457  // -- Runnable methods -- 
     458 
     459  @Override 
    465460  public void run() { 
    466461    while (!done) { 
     
    478473    } 
    479474  } 
     475  */ 
    480476 
    481477  // -- Helper methods -- 
    482478 
     479  /* 
    483480  private void updateSlice() { 
    484     int[] dims = 
    485       new int[] {imp.getNChannels(), imp.getNSlices(), imp.getNFrames()}; 
    486     int[] pos = 
    487       new int[] {imp.getChannel() - 1, imp.getSlice() - 1, imp.getFrame() - 1}; 
     481    int sizeZ = imp.getNSlices(); 
     482    int sizeC = imp.getNChannels(); 
     483    int sizeT = imp.getNFrames(); 
     484    int[] dims = new int[] {sizeZ, sizeC, sizeT}; 
     485    int z = imp.getSlice() - 1; 
     486    int c = imp.getChannel() - 1; 
     487    int t = imp.getFrame() - 1; 
     488    int[] pos = new int[] {z, c, t}; 
    488489    slice = FormatTools.positionToRaster(dims, pos) + 1; 
     490  } 
     491  */ 
     492   
     493  /** Updates the ImagePlus's displayed plane to match the slider values. */ 
     494  private void syncPlane() { 
     495    for (int i=0; i<cSliders.length; i++) { 
     496      cIndex[i] = cSliders[i].getValue() - 1; 
     497    } 
     498    int c = FormatTools.positionToRaster(cLengths, cIndex) + 1; 
     499    int z = zScroll == null ? 1 : zScroll.getValue(); 
     500    int t = tScroll == null ? 1 : tScroll.getValue(); 
     501    setPosition(c, z, t); 
     502//    updateSlice(); 
     503  } 
     504 
     505  /** Updates the slider values to match the ImagePlus's displayed plane. */ 
     506  private void syncSliders() { 
     507    cIndex = FormatTools.rasterToPosition(cLengths, imp.getChannel() - 1); 
     508    for (int i=0; i<cSliders.length; i++) { 
     509      cSliders[i].setValue(cIndex[i] + 1); 
     510    } 
     511    if (zScroll != null) zScroll.setValue(imp.getSlice()); 
     512    if (tScroll != null) tScroll.setValue(imp.getFrame()); 
    489513  } 
    490514 
Note: See TracChangeset for help on using the changeset viewer.