Changeset 4793


Ignore:
Timestamp:
02/09/09 11:51:49 (11 years ago)
Author:
melissa
Message:

Fixed how the Data Browser handles single dimension, non-Z data. Closes #355.

File:
1 edited

Legend:

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

    r4569 r4793  
    2828import com.jgoodies.forms.layout.CellConstraints; 
    2929import com.jgoodies.forms.layout.FormLayout; 
    30 import ij.ImagePlus; 
    31 import ij.ImageStack; 
     30import ij.*; 
    3231import ij.gui.ImageCanvas; 
    3332import ij.gui.StackWindow; 
     
    6059  // -- Fields -- 
    6160 
     61  protected volatile boolean done; 
     62 
    6263  protected JSpinner fpsSpin; 
    6364  protected Button animate, options, metadata; 
     
    7374  protected int[] cLengths; 
    7475  protected int[] cIndex; 
     76 
     77  private int slice; 
    7578 
    7679  // -- Constructors -- 
     
    122125    controls.setBackground(Color.white); 
    123126 
    124     boolean hasZ = sliceSelector != null; 
    125     boolean hasT = frameSelector != null; 
    126     boolean hasC = channelSelector != null; 
     127    int c = imp.getNChannels(); 
     128    int z = imp.getNSlices(); 
     129    int t = imp.getNFrames(); 
     130 
     131    boolean hasZ = z > 1; 
     132    boolean hasC = c > 1; 
     133    boolean hasT = t > 1; 
     134 
     135    if (sliceSelector != null) remove(sliceSelector); 
     136    if (frameSelector != null) remove(frameSelector); 
     137    if (channelSelector != null) remove(channelSelector); 
     138 
     139    ImageJ ij = IJ.getInstance(); 
     140 
     141    if (hasC) { 
     142      channelSelector = new Scrollbar(Scrollbar.HORIZONTAL, 1, 1, 1, c + 1); 
     143      add(channelSelector); 
     144      if (ij != null) channelSelector.addKeyListener(ij); 
     145      channelSelector.addAdjustmentListener(this); 
     146      // prevents scroll bar from blinking on Windows 
     147      channelSelector.setFocusable(false); 
     148      channelSelector.setUnitIncrement(1); 
     149      channelSelector.setBlockIncrement(1); 
     150    } 
     151    if (hasZ) { 
     152      sliceSelector = new Scrollbar(Scrollbar.HORIZONTAL, 1, 1, 1, z + 1); 
     153      add(sliceSelector); 
     154      if (ij != null) sliceSelector.addKeyListener(ij); 
     155      sliceSelector.addAdjustmentListener(this); 
     156      sliceSelector.setFocusable(false); 
     157      int blockIncrement = (int) Math.max(z / 10, 1); 
     158      sliceSelector.setUnitIncrement(1); 
     159      sliceSelector.setBlockIncrement(blockIncrement); 
     160    } 
     161    if (hasT) { 
     162      frameSelector = new Scrollbar(Scrollbar.HORIZONTAL, 1, 1, 1, t + 1); 
     163      add(frameSelector); 
     164      if (ij != null) frameSelector.addKeyListener(ij); 
     165      frameSelector.addAdjustmentListener(this); 
     166      frameSelector.setFocusable(false); 
     167      int blockIncrement = (int) Math.max(t / 10, 1); 
     168      frameSelector.setUnitIncrement(1); 
     169      frameSelector.setBlockIncrement(blockIncrement); 
     170    } 
    127171 
    128172    Label zLabel = new Label("Z-depth"); 
     
    381425            AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED, AdjustmentEvent.TRACK, 
    382426            channel)); 
     427          updateSlice(); 
    383428        } 
    384429        return; 
     
    386431    } 
    387432    super.adjustmentValueChanged(e); 
    388   } 
    389  
     433    updateSlice(); 
     434  } 
     435 
     436  public void run() { 
     437    while (!done) { 
     438      synchronized (this) { 
     439        try { 
     440          wait(); 
     441        } 
     442        catch (InterruptedException e) { } 
     443      } 
     444      if (done) return; 
     445      if (slice > 0 && slice != imp.getCurrentSlice()) { 
     446        imp.setSlice(slice); 
     447        slice = 0; 
     448      } 
     449    } 
     450  } 
    390451 
    391452  // -- Helper methods -- 
     453 
     454  private void updateSlice() { 
     455    int[] dims = 
     456      new int[] {imp.getNChannels(), imp.getNSlices(), imp.getNFrames()}; 
     457    int[] pos = 
     458      new int[] {imp.getChannel() - 1, imp.getSlice() - 1, imp.getFrame() - 1}; 
     459    slice = FormatTools.positionToRaster(dims, pos) + 1; 
     460  } 
    392461 
    393462  protected static Scrollbar makeDummySlider() { 
Note: See TracChangeset for help on using the changeset viewer.