Changeset 1849


Ignore:
Timestamp:
11/24/06 14:08:00 (13 years ago)
Author:
chris
Message:

browser:
1) cleared out all sorts of left-over gunk like custom virtualization
2) killed old apparatus for switching axes
3) GUI for new swapping of axes in place, but not yet functional

Location:
trunk/loci/plugins/browser
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/plugins/browser/CustomWindow.java

    r1840 r1849  
    6565  private int fps = 10; 
    6666  private int z = 1, t = 1, c = 1; 
    67   private boolean customVirtualization = false; 
    68   private int z1 = 1, z2 = 1, t1 = 1, t2 = 1; 
    69   protected int zMap,tMap,cMap,prevZ,prevT; 
    70   private boolean setup; 
    7167 
    7268  // -- Fields - widgets -- 
     
    9591     
    9692    String id = db.id;     
    97     if(db.virtual) { 
    98       FilePattern fp = null; 
    99       try { fp = db.fStitch.getFilePattern(id); } 
    100       catch (Exception exc) {exc.printStackTrace();} 
    101        
    102       String[] prefixes = fp.getPrefixes(); 
    103       String[] blocks = fp.getBlocks(); 
    104       String suffix = fp.getSuffix(); 
    105        
    106       StringBuffer sb = new StringBuffer(); 
    107       for (int i=0; i<prefixes.length; i++) { 
    108         sb.append(prefixes[i]); 
    109         sb.append(blocks[i]); 
    110       } 
    111       sb.append(suffix); 
    112  
    113       patternTitle = sb.toString(); 
    114       setTitle(patternTitle); 
    115     } 
    116     else setTitle(id); 
    117  
    118     //setup which variables the sliders are set to 
    119     zMap = 0; 
    120     tMap = 1; 
    121     cMap = 2; 
    122     prevZ = 0; 
    123     prevT = 1; 
    124  
    125     setup = false; 
     93    FilePattern fp = null; 
     94    try { fp = db.fStitch.getFilePattern(id); } 
     95    catch (Exception exc) {exc.printStackTrace();} 
     96    patternTitle = fp.getPattern(); 
     97    setTitle(patternTitle); 
    12698 
    12799    // create panel for image canvas 
     
    215187    channelPanel.add("many", subPane); 
    216188 
    217     setC(2); 
    218  
    219189    // repack to take extra panel into account 
    220190    c = db.numC; 
     
    257227    lowPane.add(animate, cc.xy(10,6, "right,center")); 
    258228 
    259     setC(2); 
    260  
    261229    setBackground(Color.white); 
    262230    FormLayout layout2 = new FormLayout( 
     
    280248  // -- CustomWindow methods -- 
    281249 
    282   public void setC(int cMap) { 
    283     this.cMap = cMap; 
     250  public void setC() { 
    284251    boolean hasThis = false; 
    285252    int numThis = -1; 
    286253    int value = -1; 
    287     switch (cMap) { 
    288       case 0: 
    289         hasThis = db.hasZ; 
    290         numThis = db.numZ; 
    291         value = z; 
    292         break; 
    293       case 1: 
    294         hasThis = db.hasT; 
    295         numThis = db.numT; 
    296         value = t; 
    297         break; 
    298       case 2: 
    299         hasThis = db.hasC; 
    300         numThis = db.numC; 
    301         value = c; 
    302         break; 
    303     } 
     254    hasThis = db.hasC; 
     255    numThis = db.numC; 
     256    value = c; 
    304257    if (numThis > 2) { 
    305258      // C spinner 
     
    332285    index++; 
    333286 
    334     String title = null; 
    335     if(db.virtual) title = patternTitle; 
    336     else title = db.id; 
    337  
    338287    if (db.manager != null) { 
    339       imp.setProcessor(title, db.manager.getSlice(index - 1)); 
     288      imp.setProcessor(patternTitle, db.manager.getSlice(index - 1)); 
    340289      index = 1; 
    341290    } 
     
    366315 
    367316  public void showTempSlice(int index) { 
    368     String title = null; 
    369     if(db.virtual) title = patternTitle; 
    370     else title = db.id; 
    371     imp.setProcessor(title, db.manager.getTempSlice(index)); 
     317    imp.setProcessor(patternTitle, db.manager.getTempSlice(index)); 
    372318    imp.updateAndDraw(); 
    373319 
     
    404350      sb.append(zVal); 
    405351      sb.append("/"); 
    406       switch(zMap) { 
    407         case 0: 
    408           sb.append(db.numZ); 
    409           break; 
    410         case 1: 
    411           sb.append(db.numT); 
    412           break; 
    413         case 2: 
    414           sb.append(db.numC); 
    415           break; 
    416       } 
     352      sb.append(db.numZ); 
    417353      sb.append("; "); 
    418354    } 
     
    422358      sb.append(tVal); 
    423359      sb.append("/"); 
    424       switch(tMap) { 
    425         case 0: 
    426           sb.append(db.numZ); 
    427           break; 
    428         case 1: 
    429           sb.append(db.numT); 
    430           break; 
    431         case 2: 
    432           sb.append(db.numC); 
    433           break; 
    434       } 
     360      sb.append(db.numT); 
    435361      sb.append("; "); 
    436362    } 
     
    495421  } 
    496422 
    497   /** Sets the Z/T values for a custom virtualization. */ 
    498   public void setVirtualization(int[] values) { 
    499     z1 = values[0]; 
    500     z2 = values[1]; 
    501     t1 = values[2]; 
    502     t2 = values[3]; 
    503     customVirtualization = true; 
    504   } 
    505  
    506   /** Returns true if we are using a custom virtualization. */ 
    507   public boolean isCustom() { return customVirtualization; } 
    508  
    509423  /** Sets the frames per second, and adjust the timer accordingly. */ 
    510424  public void setFps(int value) { 
     
    545459    } 
    546460    else if (src instanceof Timer) { 
    547       switch (tMap) { 
    548         case 0: 
    549           z = tSliceSel.getValue() + 1; 
    550           if ((z > db.numZ)) z = 1; 
    551           tSliceSel.setValue(z); 
    552           break; 
    553         case 1: 
    554461          t = tSliceSel.getValue() + 1; 
    555462          if ((t > db.numT)) t = 1; 
    556463          tSliceSel.setValue(t); 
    557           break; 
    558         case 2: 
    559           c = tSliceSel.getValue() + 1; 
    560           if ((c > db.numC)) c = 1; 
    561           tSliceSel.setValue(c); 
    562           break; 
    563       } 
    564464    } 
    565465    else if (src instanceof JButton) { 
     
    575475      } 
    576476    } 
    577     else if (src instanceof JComboBox && 
    578       e.getActionCommand().startsWith("mapping")) 
    579     { 
    580       setup = true; 
    581       JComboBox jcb = (JComboBox) src; 
    582       if(e.getActionCommand().endsWith("Z")) { 
    583         zMap = jcb.getSelectedIndex(); 
    584         switch (zMap) { 
    585           case 0: 
    586             zSliceSel.setMaximum(db.hasZ ? db.numZ + 1 : 2); 
    587             zSliceSel.setValue(z); 
    588             if (db.hasZ) zSliceSel.setEnabled(true); 
    589             else zSliceSel.setEnabled(false); 
    590             if(tMap == 1) setC(2); 
    591             else setC(1); 
    592             break; 
    593           case 1: 
    594             zSliceSel.setMaximum(db.hasT ? db.numT + 1 : 2); 
    595             zSliceSel.setValue(t); 
    596             if (db.hasT) zSliceSel.setEnabled(true); 
    597             else zSliceSel.setEnabled(false); 
    598             if(tMap == 0) setC(2); 
    599             else setC(0); 
    600             break; 
    601           case 2: 
    602             zSliceSel.setMaximum(db.hasC ? db.numC + 1 : 2); 
    603             zSliceSel.setValue(c); 
    604             if (db.hasC) zSliceSel.setEnabled(true); 
    605             else zSliceSel.setEnabled(false); 
    606             if(tMap == 0) setC(1); 
    607             else setC(0); 
    608             break; 
    609         } 
    610         if(zMap == tMap) ow.tBox.setSelectedIndex(prevZ); 
    611         prevZ = zMap; 
    612       } 
    613       else if(e.getActionCommand().endsWith("T")) { 
    614         tMap = jcb.getSelectedIndex(); 
    615         switch (tMap) { 
    616           case 0: 
    617             tSliceSel.setMaximum(db.hasZ ? db.numZ + 1 : 2); 
    618             tSliceSel.setValue(z); 
    619             if (db.hasZ) tSliceSel.setEnabled(true); 
    620             else tSliceSel.setEnabled(false); 
    621             if(zMap == 1) setC(2); 
    622             else setC(1); 
    623             break; 
    624           case 1: 
    625             tSliceSel.setMaximum(db.hasT ? db.numT + 1 : 2); 
    626             tSliceSel.setValue(t); 
    627             if (db.hasT) tSliceSel.setEnabled(true); 
    628             else tSliceSel.setEnabled(false); 
    629             if(zMap == 0) setC(2); 
    630             else setC(0); 
    631             break; 
    632           case 2: 
    633             tSliceSel.setMaximum(db.hasC ? db.numC + 1 : 2); 
    634             tSliceSel.setValue(c); 
    635             if (db.hasC) tSliceSel.setEnabled(true); 
    636             else tSliceSel.setEnabled(false); 
    637             if(zMap == 0) setC(1); 
    638             else setC(0); 
    639             break; 
    640         } 
    641         if(zMap == tMap) ow.zBox.setSelectedIndex(prevT); 
    642         prevT = tMap; 
    643       } 
    644       setup = false; 
    645     } 
    646477  } 
    647478 
     
    650481  public void adjustmentValueChanged(AdjustmentEvent adjustmentEvent) { 
    651482    JScrollBar src = (JScrollBar) adjustmentEvent.getSource(); 
    652     if(!setup) { 
    653       if (src == zSliceSel) { 
    654         if(zMap == 0) z = zSliceSel.getValue(); 
    655         else if(zMap == 1) t = zSliceSel.getValue(); 
    656         else if(zMap == 2) c = zSliceSel.getValue(); 
    657       } 
    658       else if (src == tSliceSel) { 
    659         if(tMap == 0) z = tSliceSel.getValue(); 
    660         else if(tMap == 1) t = tSliceSel.getValue(); 
    661         else if(tMap == 2) c = tSliceSel.getValue(); 
    662       } 
    663     } 
     483 
     484    if (src == zSliceSel) { 
     485      z = zSliceSel.getValue(); 
     486    } 
     487    else if (src == tSliceSel) { 
     488      t = tSliceSel.getValue(); 
     489    } 
     490 
    664491    if (!src.getValueIsAdjusting() || db.manager == null) showSlice(z, t, c); 
    665492    else showTempSlice(z,t,c); 
     
    670497  public synchronized void itemStateChanged(ItemEvent e) { 
    671498    JCheckBox channels = (JCheckBox) e.getSource(); 
    672     switch(cMap) { 
    673       case 0: 
    674         z = channels.isSelected() ? 1 : 2; 
    675         break; 
    676       case 1: 
    677         t = channels.isSelected() ? 1 : 2; 
    678         break; 
    679       case 2: 
    680         c = channels.isSelected() ? 1 : 2; 
    681         break; 
    682     } 
     499     
     500    c = channels.isSelected() ? 1 : 2; 
    683501 
    684502    showSlice(z, t, c); 
     
    689507  public void stateChanged(ChangeEvent e) { 
    690508    if( (JSpinner) e.getSource() == channelSpin) { 
    691       int value = ((Integer) channelSpin.getValue()).intValue(); 
    692          
    693       switch(cMap) { 
    694         case 0: 
    695           z = value; 
    696           break; 
    697         case 1: 
    698           t = value; 
    699           break; 
    700         case 2: 
    701           c = value; 
    702           break; 
    703       } 
    704        
     509      c = ((Integer) channelSpin.getValue()).intValue(); 
    705510      showSlice(z, t, c); 
    706511    } 
  • trunk/loci/plugins/browser/LociDataBrowser.java

    r1837 r1849  
    112112 
    113113    cw = new CustomWindow(this, imp, new ImageCanvas(imp)); 
     114  } 
     115   
     116  /** Set the length of each dimensional axis and the dimension order. */ 
     117  public void setDimensions(int sizeZ, int sizeC, int sizeT, int z, 
     118    int c, int t) 
     119  { 
     120    numZ = sizeZ; 
     121    numC = sizeC; 
     122    numT = sizeT; 
     123 
     124    hasZ = numZ > 1; 
     125    hasC = numC > 1; 
     126    hasT = numT > 1; 
     127 
     128    lengths = new int[3]; 
     129    lengths[z] = numZ; 
     130    lengths[c] = numC; 
     131    lengths[t] = numT; 
     132 
     133    zIndex = z; 
     134    cIndex = c; 
     135    tIndex = t; 
    114136  } 
    115137   
  • trunk/loci/plugins/browser/OptionsWindow.java

    r1791 r1849  
    3030import javax.swing.event.*; 
    3131import javax.swing.border.*; 
     32import loci.formats.*; 
     33import java.util.Vector; 
    3234 
    3335import com.jgoodies.forms.layout.CellConstraints; 
     
    4345  private static final String TAB = "7dlu"; 
    4446 
    45   /**ComboBoxes for Custom Axes*/ 
    46   protected JComboBox zBox, tBox; 
    47  
    4847  /** FPS spinner */ 
    4948  private JSpinner fps; 
     
    5453  /** The CacheManager for this instance of data browser.*/ 
    5554  private CacheManager manager; 
     55   
     56  /** The FileStitcher used to stich files together.*/ 
     57  private FileStitcher fStitch; 
    5658 
    5759  /** CheckBoxes to indicate which axes to store.*/ 
     
    8486 
    8587    manager = cw.db.manager; 
     88     
     89    FileStitcher fs = cw.db.fStitch; 
    8690 
    8791    update = false; 
    8892 
    8993    Border etchB = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED); 
     94     
     95    // get FilePattern Data 
     96      String id = null,order = null,suffix = null; 
     97      String[] prefixes = null,blocks = null; 
     98      int sizeZ = -1,sizeT = -1,sizeC = -1; 
     99      int[] axes = null; 
     100      FilePattern fp = null; 
     101    try { 
     102      id = cw.db.id; 
     103      order = fs.getDimensionOrder(id); 
     104      sizeZ = fs.getSizeZ(id); 
     105      sizeT = fs.getSizeT(id); 
     106      sizeC = fs.getSizeC(id); 
     107      axes = fs.getAxisTypes(id); 
     108      fp = fs.getFilePattern(id); 
     109      prefixes = fp.getPrefixes(); 
     110      blocks = fp.getBlocks(); 
     111      suffix = fp.getSuffix(); 
     112    } 
     113    catch(Exception exc) {exc.printStackTrace();} 
    90114 
    91115    // add Display Pane 
     
    93117    JPanel disPane = new JPanel(); 
    94118    TitledBorder disB = BorderFactory.createTitledBorder(etchB, 
    95       "Display Options"); 
     119      "Custom Axes"); 
    96120 
    97121    disPane.setBorder(disB); 
    98122 
    99     JLabel custLab = new JLabel("\u00B7" + "Custom Axes" + "\u00B7"); 
     123    JLabel sliceLab = new JLabel("\u00B7" + "Slice-Groups in File" + "\u00B7"); 
     124    JLabel zLab = new JLabel(sizeZ + " slice(s):"); 
     125    JLabel tLab = new JLabel(sizeT + " slice(s):"); 
     126    JLabel cLab = new JLabel(sizeC + " slice(s):"); 
     127    JLabel blockLab = new JLabel("\u00B7" + "Blocks in Filenames" + "\u00B7"); 
    100128    JLabel fileLab = new JLabel("Filename:"); 
    101     JLabel zLab = new JLabel("Z axis:"); 
    102     zLab.setForeground(Color.red); 
    103     JLabel tLab = new JLabel("Time:"); 
    104     tLab.setForeground(Color.blue); 
    105  
    106     JPanel custPanel = new JPanel(); 
    107     custPanel.add(custLab); 
    108     custPanel.setBackground(Color.darkGray); 
    109     custLab.setForeground(Color.lightGray); 
    110  
    111     JPanel filePane = new JPanel(); 
    112  
    113     zBox = new JComboBox(); 
    114     zBox.setForeground(Color.red); 
    115     tBox = new JComboBox(); 
    116     tBox.setForeground(Color.blue); 
    117  
    118     zBox.addItem(c.db.hasZ ? 
    119       "\"z:\" <1-" + (c.db.numZ + 1) + ">" : "\"z:\" (no range)"); 
    120     zBox.addItem(c.db.hasT ? 
    121       "\"t:\" <1-" + (c.db.numT + 1) + ">" : "\"t:\" (no range)"); 
    122     zBox.addItem(c.db.hasC ? 
    123       "\"c:\" <1-" + (c.db.numC + 1) + ">" : "\"c:\" (no range)"); 
    124     zBox.setSelectedIndex(c.zMap); 
    125     zBox.addActionListener(c); 
    126     zBox.setActionCommand("mappingZ"); 
    127  
    128     tBox.addItem(c.db.hasZ ? 
    129       "\"z:\" <1-" + (c.db.numZ + 1) + ">" : "\"z:\" (no range)"); 
    130     tBox.addItem(c.db.hasT ? 
    131       "\"t:\" <1-" + (c.db.numT + 1) + ">" : "\"t:\" (no range)"); 
    132     tBox.addItem(c.db.hasC ? 
    133       "\"c:\" <1-" + (c.db.numC + 1) + ">" : "\"c:\" (no range)"); 
    134     tBox.setSelectedIndex(c.tMap); 
    135     tBox.addActionListener(c); 
    136     tBox.setActionCommand("mappingT"); 
    137  
     129    Vector blockLabelsV = new Vector(); 
     130    for(int i = 0;i<blocks.length;i++) { 
     131      JLabel temp = new JLabel("Block " + blocks[i] + ":"); 
     132      blockLabelsV.add(temp); 
     133    } 
     134    Object[] blockLabelsO = blockLabelsV.toArray(); 
     135    JLabel[] blockLabels = new JLabel[blockLabelsO.length]; 
     136    for(int i = 0;i<blockLabelsO.length;i++) { 
     137      blockLabels[i] = (JLabel) blockLabelsO[i]; 
     138    } 
     139     
     140    Object[] choices = {"Z-Depth", "Time", "Channel"}; 
     141    JComboBox zGroup = new JComboBox(choices); 
     142    JComboBox tGroup = new JComboBox(choices); 
     143    tGroup.setSelectedIndex(1); 
     144    JComboBox cGroup = new JComboBox(choices); 
     145    cGroup.setSelectedIndex(2); 
     146    zGroup.addActionListener(this); 
     147    tGroup.addActionListener(this); 
     148    cGroup.addActionListener(this); 
     149    Vector blockBoxesV = new Vector(); 
     150    for(int i = 0;i<blocks.length;i++) { 
     151      JComboBox temp = new JComboBox(choices); 
     152      if (axes[i] == AxisGuesser.Z_AXIS) temp.setSelectedIndex(0); 
     153      else if (axes[i] == AxisGuesser.T_AXIS) temp.setSelectedIndex(1); 
     154      else temp.setSelectedIndex(2); 
     155      temp.setActionCommand("Block1"); 
     156      temp.addActionListener(this); 
     157      blockBoxesV.add(temp); 
     158    } 
     159    Object[] blockBoxesO = blockBoxesV.toArray(); 
     160    JComboBox[] blockBoxes = new JComboBox[blockBoxesO.length]; 
     161    for(int i = 0;i<blockBoxesO.length;i++) { 
     162      JComboBox temp = (JComboBox) blockBoxesO[i]; 
     163      temp.setForeground(getColor(i)); 
     164      blockBoxes[i] = temp; 
     165    } 
     166     
     167    JPanel slicePanel = new JPanel(); 
     168    slicePanel.add(sliceLab); 
     169    slicePanel.setBackground(Color.darkGray); 
     170    sliceLab.setForeground(Color.lightGray); 
     171    JPanel blockPanel = new JPanel(); 
     172    blockPanel.add(blockLab); 
     173    blockPanel.setBackground(Color.darkGray); 
     174    blockLab.setForeground(Color.lightGray); 
     175 
     176    JPanel filePane = new JPanel(new FlowLayout()); 
     177    for(int i = 0;i<prefixes.length;i++) { 
     178      JLabel prefLab = new JLabel(prefixes[i]); 
     179      JLabel blokLab = new JLabel(blocks[i]); 
     180      blokLab.setForeground(getColor(i)); 
     181      filePane.add(prefLab); 
     182      filePane.add(blokLab); 
     183    } 
     184    JLabel sufLab = new JLabel(suffix); 
     185    filePane.add(sufLab); 
     186     
     187    String rowString = "pref," + TAB + ",pref,pref,pref," + TAB + 
     188      ",pref,pref"; 
     189    for(int i = 0; i<blockLabels.length;i++) { 
     190      rowString += ",pref"; 
     191    } 
     192     
    138193    FormLayout layout = new FormLayout( 
    139194        TAB + ",pref," + TAB + ",pref:grow," + TAB, 
    140         "pref,pref,pref,pref"); 
     195        rowString); 
    141196    disPane.setLayout(layout); 
    142197    CellConstraints cc = new CellConstraints(); 
    143198 
    144     disPane.add(custPanel,cc.xyw(1,1,5)); 
    145     disPane.add(fileLab,cc.xy(2,2)); 
    146     disPane.add(filePane,cc.xy(4,2)); 
     199    disPane.add(slicePanel,cc.xyw(1,1,5)); 
    147200    disPane.add(zLab,cc.xy(2,3)); 
    148     disPane.add(zBox,cc.xy(4,3)); 
     201    disPane.add(zGroup,cc.xy(4,3)); 
    149202    disPane.add(tLab,cc.xy(2,4)); 
    150     disPane.add(tBox,cc.xy(4,4)); 
     203    disPane.add(tGroup,cc.xy(4,4)); 
     204    disPane.add(cLab,cc.xy(2,5)); 
     205    disPane.add(cGroup,cc.xy(4,5)); 
     206    disPane.add(blockPanel,cc.xyw(1,7,5)); 
     207    disPane.add(fileLab,cc.xy(2,8)); 
     208    disPane.add(filePane,cc.xy(4,8)); 
     209    for(int i = 0;i<blockLabels.length;i++) { 
     210      disPane.add(blockLabels[i], cc.xy(2,9+i)); 
     211      disPane.add(blockBoxes[i], cc.xy(4,9+i));  
     212    } 
    151213 
    152214    //set up animation options pane 
     
    221283    String[] strats = {"Forward","Surround"}; 
    222284    stratBox = new JComboBox(strats); 
    223     String[] axes = {"Z","T","C"}; 
    224     topBox = new JComboBox(axes); 
    225     midBox = new JComboBox(axes); 
    226     lowBox = new JComboBox(axes); 
     285    String[] boxAxes = {"Z","T","C"}; 
     286    topBox = new JComboBox(boxAxes); 
     287    midBox = new JComboBox(boxAxes); 
     288    lowBox = new JComboBox(boxAxes); 
    227289    topBox.setSelectedIndex(1); 
    228290    midBox.setSelectedIndex(0); 
     
    319381  } 
    320382 
     383  private Color getColor(int i) { 
     384    switch(i) { 
     385      case 0: 
     386        return Color.blue; 
     387      case 1: 
     388        return Color.cyan; 
     389      case 2: 
     390        return Color.green; 
     391      case 3: 
     392        return Color.yellow; 
     393      case 4: 
     394        return Color.red; 
     395      case 5: 
     396        return Color.orange; 
     397      case 6: 
     398        return Color.magenta; 
     399      case 7: 
     400        return Color.pink; 
     401      default: 
     402        Exception exc = new Exception(); 
     403        exc.printStackTrace(); 
     404        System.out.println("Too many dimensional blocks in filename" 
     405          + "for handling FileStitcher in the OptionsWindow in this" 
     406          + "4d Browser."); 
     407        return getColor(i%8);  
     408    } 
     409  } 
     410 
    321411  /** 
    322412  * Converts a combo box index into a CacheManager constant 
Note: See TracChangeset for help on using the changeset viewer.