Changeset 4005


Ignore:
Timestamp:
05/06/08 13:24:59 (12 years ago)
Author:
melissa
Message:

Moved ImageJ-specific stuff from OMEUtils to OMEPlugin. Also updated VisBio to use it's own table for selecting OME images, rather than the ImageJ-specific one that was in OMEUtils.

Location:
trunk/loci
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/ome/OMEUtils.java

    r3817 r4005  
    2525package loci.formats.ome; 
    2626 
    27 import ij.IJ; 
    28 import ij.gui.GenericDialog; 
    2927import java.awt.Dimension; 
    3028import java.awt.GridBagConstraints; 
     
    469467      r.exec("omeImage = l.get(i)"); 
    470468      r.exec("omePix = omeImage.getDefaultPixels()"); 
    471       r.exec("v = pf.getThumbnail(omePix)"); 
    472       rtn[i] = (BufferedImage) r.getVar("v"); 
     469      try { 
     470        r.exec("v = pf.getThumbnail(omePix)"); 
     471        rtn[i] = (BufferedImage) r.getVar("v"); 
     472      } 
     473      catch (ReflectException e) { 
     474        rtn[i] = null; 
     475      } 
    473476    } 
    474477    return rtn; 
     
    489492    } 
    490493    return rtn; 
    491   } 
    492  
    493   public long[] showTable(OMECredentials cred) throws ReflectException { 
    494     long[] ids = getAllIDs(cred.isOMERO); 
    495     int[] x = getAllWidths(cred.isOMERO); 
    496     int[] y = getAllHeights(cred.isOMERO); 
    497     int[] z = getAllZs(cred.isOMERO); 
    498     int[] c = getAllChannels(cred.isOMERO); 
    499     int[] t = getAllTs(cred.isOMERO); 
    500     String[] types = getAllTypes(cred.isOMERO); 
    501     String[] names = getAllNames(cred.isOMERO); 
    502     String[] descr = getAllDescriptions(cred.isOMERO); 
    503     String[] created = getAllDates(cred.isOMERO); 
    504     BufferedImage[] thumbs = getAllThumbnails(cred.isOMERO); 
    505  
    506     if (ids.length == 0) { 
    507       IJ.error("No images found!"); 
    508       return ids; 
    509     } 
    510  
    511     // TODO : consolidate this with ImporterOptions.promptSeries logic. 
    512  
    513     GenericDialog gd = new GenericDialog("OME/OMERO Plugin"); 
    514     GridBagLayout gdl = (GridBagLayout) gd.getLayout(); 
    515     GridBagConstraints gbc = new GridBagConstraints(); 
    516  
    517     gbc.gridx = 2; 
    518     gbc.gridwidth = GridBagConstraints.REMAINDER; 
    519  
    520     Panel[] p = new Panel[ids.length]; 
    521     String[] tips = new String[ids.length]; 
    522     for (int i=0; i<ids.length; i++) { 
    523       if (names[i] == null) names[i] = ""; 
    524  
    525       StringBuffer tip = new StringBuffer(); 
    526       tip.append("<HTML>Name: "); 
    527       tip.append(names[i]); 
    528       tip.append("<BR>ID: "); 
    529       tip.append(ids[i]); 
    530       tip.append("<BR>Date Created: "); 
    531       tip.append(created[i]); 
    532       tip.append("<BR>Pixel type: "); 
    533       tip.append(types[i]); 
    534       tip.append("<BR>SizeX: "); 
    535       tip.append(x[i]); 
    536       tip.append("<BR>SizeY: "); 
    537       tip.append(y[i]); 
    538       tip.append("<BR>SizeZ: "); 
    539       tip.append(z[i]); 
    540       tip.append("<BR>SizeC: "); 
    541       tip.append(c[i]); 
    542       tip.append("<BR>SizeT: "); 
    543       tip.append(t[i]); 
    544       tip.append("<BR>Description: "); 
    545       tip.append(descr[i]); 
    546       tip.append("</HTML>"); 
    547  
    548       tips[i] = tip.toString(); 
    549  
    550       if (names[i].indexOf(File.separator) != -1) { 
    551         names[i] = names[i].substring(names[i].lastIndexOf(File.separator) + 1); 
    552       } 
    553  
    554       gd.addCheckbox(names[i] + " (" + ids[i] + ")", false); 
    555       p[i] = new Panel(); 
    556       if (cred.isOMERO) { 
    557         p[i].add(Box.createRigidArea(new Dimension(128, 128))); 
    558         gbc.gridy = i; 
    559       } 
    560       else { 
    561         gbc.gridy = i; 
    562         JLabel label = new JLabel(new ImageIcon(thumbs[i])); 
    563         label.setToolTipText(tips[i]); 
    564         p[i].add(label); 
    565       } 
    566       gdl.setConstraints(p[i], gbc); 
    567       gd.add(p[i]); 
    568     } 
    569     Util.addScrollBars(gd); 
    570     if (cred.isOMERO) { 
    571       OMEROLoader l = new OMEROLoader(ids, cred, p, gd, tips); 
    572       gd.showDialog(); 
    573       l.stop(); 
    574     } 
    575     else gd.showDialog(); 
    576     if (gd.wasCanceled()) return null; 
    577  
    578     boolean[] checked = new boolean[ids.length]; 
    579     int numChecked = 0; 
    580     for (int i=0; i<ids.length; i++) { 
    581       checked[i] = gd.getNextBoolean(); 
    582       if (checked[i]) numChecked++; 
    583     } 
    584  
    585     long[] results = new long[numChecked]; 
    586     int n = 0; 
    587     for (int i=0; i<ids.length; i++) { 
    588       if (checked[i]) results[n++] = ids[i]; 
    589     } 
    590     return results; 
    591494  } 
    592495 
     
    616519      r.exec("omeImage = l.get(i)"); 
    617520      r.exec("omePix = omeImage.getDefaultPixels()"); 
    618       r.exec("v = omePix." + func + "()"); 
    619       rtn[i] = ((Integer) r.getVar("v")).intValue(); 
     521      try { 
     522        r.exec("v = omePix." + func + "()"); 
     523        rtn[i] = ((Integer) r.getVar("v")).intValue(); 
     524      } 
     525      catch (ReflectException e) { 
     526        rtn[i] = -1; 
     527      } 
    620528    } 
    621529    return rtn; 
     
    632540      r.exec("omeImage = l.get(i)"); 
    633541      r.exec("omePix = omeImage.getDefaultPixels()"); 
    634       r.exec("v = omePix." + func + "()"); 
    635       rtn[i] = (String) r.getVar("v"); 
     542      try { 
     543        r.exec("v = omePix." + func + "()"); 
     544        rtn[i] = (String) r.getVar("v"); 
     545      } 
     546      catch (ReflectException e) { 
     547        rtn[i] = ""; 
     548      } 
    636549    } 
    637550    return rtn; 
     
    757670  } 
    758671 
    759   // -- Helper class -- 
    760  
    761   class OMEROLoader implements Runnable { 
    762     private long[] ids; 
    763     private Panel[] p; 
    764     private GenericDialog gd; 
    765     private boolean stop; 
    766     private Thread loader; 
    767     private OMECredentials cred; 
    768     private String[] tips; 
    769  
    770     // TODO : consolidate with ThumbLoader 
    771  
    772     public OMEROLoader(long[] ids, OMECredentials cred, Panel[] p, 
    773       GenericDialog gd, String[] tips) 
    774     { 
    775       this.ids = ids; 
    776       this.p = p; 
    777       this.gd = gd; 
    778       this.cred = cred; 
    779       this.tips = tips; 
    780  
    781       loader = new Thread(this, "OMERO-ThumbLoader"); 
    782       loader.start(); 
    783     } 
    784  
    785     public void stop() { 
    786       if (loader == null) return; 
    787       stop = true; 
    788       try { 
    789         loader.join(); 
    790         loader = null; 
    791       } 
    792       catch (InterruptedException exc) { 
    793         exc.printStackTrace(); 
    794       } 
    795     } 
    796  
    797     public void run() { 
    798       try { 
    799         OMEROReader r = new OMEROReader(); 
    800         for (int i=0; i<ids.length; i++) { 
    801           r.setId("server=" + cred.server + "\nusername=" + cred.username + 
    802             "\npassword=" + cred.password + "\nport=" + cred.port + "\nid=" + 
    803             ids[i]); 
    804           BufferedImage thumb = r.openThumbImage(0); 
    805           ImageIcon icon = new ImageIcon(thumb); 
    806           p[i].removeAll(); 
    807           JLabel label = new JLabel(icon); 
    808           label.setToolTipText(tips[i]); 
    809           p[i].add(label); 
    810           if (gd != null) gd.validate(); 
    811         } 
    812       } 
    813       catch (FormatException exc) { 
    814         exc.printStackTrace(); 
    815       } 
    816       catch (IOException exc) { 
    817         exc.printStackTrace(); 
    818       } 
    819     } 
    820  
    821   } 
    822  
    823672} 
  • trunk/loci/plugins/OMEPlugin.java

    r3815 r4005  
    2929import ij.gui.GenericDialog; 
    3030import ij.plugin.PlugIn; 
    31 import java.awt.TextField; 
     31import java.awt.*; 
     32import java.awt.image.BufferedImage; 
     33import java.io.*; 
    3234import java.util.*; 
    33 import loci.formats.ReflectException; 
     35import javax.swing.*; 
     36import loci.formats.*; 
    3437import loci.formats.ome.OMECredentials; 
     38import loci.formats.ome.OMEROReader; 
    3539import loci.formats.ome.OMEUtils; 
    3640 
     
    233237      if (arg == null || arg.trim().equals("")) { 
    234238        if (IJ.debugMode) IJ.log("Found images..."); 
    235         images = new OMEUtils().showTable(cred); 
     239        images = showTable(cred); 
    236240      } 
    237241 
     
    285289  } 
    286290 
     291  private long[] showTable(OMECredentials cred) throws ReflectException { 
     292    long[] ids = OMEUtils.getAllIDs(cred.isOMERO); 
     293    int[] x = OMEUtils.getAllWidths(cred.isOMERO); 
     294    int[] y = OMEUtils.getAllHeights(cred.isOMERO); 
     295    int[] z = OMEUtils.getAllZs(cred.isOMERO); 
     296    int[] c = OMEUtils.getAllChannels(cred.isOMERO); 
     297    int[] t = OMEUtils.getAllTs(cred.isOMERO); 
     298    String[] types = OMEUtils.getAllTypes(cred.isOMERO); 
     299    String[] names = OMEUtils.getAllNames(cred.isOMERO); 
     300    String[] descr = OMEUtils.getAllDescriptions(cred.isOMERO); 
     301    String[] created = OMEUtils.getAllDates(cred.isOMERO); 
     302    BufferedImage[] thumbs = OMEUtils.getAllThumbnails(cred.isOMERO); 
     303 
     304    if (ids.length == 0) { 
     305      IJ.error("No images found!"); 
     306      return ids; 
     307    } 
     308 
     309    GenericDialog gd = new GenericDialog("OME/OMERO Plugin"); 
     310    GridBagLayout gdl = (GridBagLayout) gd.getLayout(); 
     311    GridBagConstraints gbc = new GridBagConstraints(); 
     312 
     313    gbc.gridx = 2; 
     314    gbc.gridwidth = GridBagConstraints.REMAINDER; 
     315 
     316    Panel[] p = new Panel[ids.length]; 
     317    String[] tips = new String[ids.length]; 
     318    for (int i=0; i<ids.length; i++) { 
     319      if (names[i] == null) names[i] = ""; 
     320 
     321      StringBuffer tip = new StringBuffer(); 
     322      tip.append("<HTML>Name: "); 
     323      tip.append(names[i]); 
     324      tip.append("<BR>ID: "); 
     325      tip.append(ids[i]); 
     326      tip.append("<BR>Date Created: "); 
     327      tip.append(created[i]); 
     328      tip.append("<BR>Pixel type: "); 
     329      tip.append(types[i]); 
     330      tip.append("<BR>SizeX: "); 
     331      tip.append(x[i]); 
     332      tip.append("<BR>SizeY: "); 
     333      tip.append(y[i]); 
     334      tip.append("<BR>SizeZ: "); 
     335      tip.append(z[i]); 
     336      tip.append("<BR>SizeC: "); 
     337      tip.append(c[i]); 
     338      tip.append("<BR>SizeT: "); 
     339      tip.append(t[i]); 
     340      tip.append("<BR>Description: "); 
     341      tip.append(descr[i]); 
     342      tip.append("</HTML>"); 
     343 
     344      tips[i] = tip.toString(); 
     345 
     346      if (names[i].indexOf(File.separator) != -1) { 
     347        names[i] = names[i].substring(names[i].lastIndexOf(File.separator) + 1); 
     348      } 
     349 
     350      gd.addCheckbox(names[i] + " (" + ids[i] + ")", false); 
     351      p[i] = new Panel(); 
     352      if (cred.isOMERO) { 
     353        p[i].add(Box.createRigidArea(new Dimension(128, 128))); 
     354        gbc.gridy = i; 
     355      } 
     356      else { 
     357        gbc.gridy = i; 
     358        JLabel label = new JLabel(new ImageIcon(thumbs[i])); 
     359        label.setToolTipText(tips[i]); 
     360        p[i].add(label); 
     361      } 
     362      gdl.setConstraints(p[i], gbc); 
     363      gd.add(p[i]); 
     364    } 
     365    Util.addScrollBars(gd); 
     366    if (cred.isOMERO) { 
     367      OMEROLoader l = new OMEROLoader(ids, cred, p, gd, tips); 
     368      gd.showDialog(); 
     369      l.stop(); 
     370    } 
     371    else gd.showDialog(); 
     372    if (gd.wasCanceled()) return null; 
     373 
     374    boolean[] checked = new boolean[ids.length]; 
     375    int numChecked = 0; 
     376    for (int i=0; i<ids.length; i++) { 
     377      checked[i] = gd.getNextBoolean(); 
     378      if (checked[i]) numChecked++; 
     379    } 
     380 
     381    long[] results = new long[numChecked]; 
     382    int n = 0; 
     383    for (int i=0; i<ids.length; i++) { 
     384      if (checked[i]) results[n++] = ids[i]; 
     385    } 
     386    return results; 
     387  } 
     388 
     389  // -- Helper class -- 
     390 
     391  class OMEROLoader implements Runnable { 
     392    private long[] ids; 
     393    private Panel[] p; 
     394    private GenericDialog gd; 
     395    private boolean stop; 
     396    private Thread loader; 
     397    private OMECredentials cred; 
     398    private String[] tips; 
     399 
     400    public OMEROLoader(long[] ids, OMECredentials cred, Panel[] p, 
     401      GenericDialog gd, String[] tips) 
     402    { 
     403      this.ids = ids; 
     404      this.p = p; 
     405      this.gd = gd; 
     406      this.cred = cred; 
     407      this.tips = tips; 
     408 
     409      loader = new Thread(this, "OMERO-ThumbLoader"); 
     410      loader.start(); 
     411    } 
     412 
     413    public void stop() { 
     414      if (loader == null) return; 
     415      stop = true; 
     416      try { 
     417        loader.join(); 
     418        loader = null; 
     419      } 
     420      catch (InterruptedException exc) { 
     421        exc.printStackTrace(); 
     422      } 
     423    } 
     424 
     425    public void run() { 
     426      try { 
     427        OMEROReader r = new OMEROReader(); 
     428        for (int i=0; i<ids.length; i++) { 
     429          r.setId("server=" + cred.server + "\nusername=" + cred.username + 
     430            "\npassword=" + cred.password + "\nport=" + cred.port + "\nid=" + 
     431            ids[i]); 
     432          BufferedImage thumb = r.openThumbImage(0); 
     433          ImageIcon icon = new ImageIcon(thumb); 
     434          p[i].removeAll(); 
     435          JLabel label = new JLabel(icon); 
     436          label.setToolTipText(tips[i]); 
     437          p[i].add(label); 
     438          if (gd != null) gd.validate(); 
     439        } 
     440      } 
     441      catch (FormatException exc) { 
     442        exc.printStackTrace(); 
     443      } 
     444      catch (IOException exc) { 
     445        exc.printStackTrace(); 
     446      } 
     447    } 
     448 
     449  } 
     450 
    287451} 
  • trunk/loci/visbio/ome/OMEImage.java

    r3431 r4005  
    2525 
    2626import java.awt.Component; 
     27import java.awt.Dialog; 
     28import java.awt.image.BufferedImage; 
    2729import java.io.IOException; 
    2830import java.rmi.RemoteException; 
     31import java.util.Vector; 
     32import javax.swing.JCheckBox; 
     33import javax.swing.JDialog; 
    2934import javax.swing.JOptionPane; 
     35import javax.swing.JScrollPane; 
     36import javax.swing.JTable; 
     37import javax.swing.table.DefaultTableModel; 
    3038import loci.formats.*; 
    3139import loci.formats.ome.OMECredentials; 
     
    3543import loci.visbio.data.*; 
    3644import loci.visbio.state.Dynamic; 
     45import loci.visbio.util.DialogPane; 
    3746import loci.visbio.util.ObjectUtil; 
    3847import visad.*; 
     
    222231 
    223232          // TODO : find a better way of handling multiple IDs 
    224           long[] results = new OMEUtils().showTable(cred); 
     233          long[] results = showTable(cred); 
    225234          if (results == null) results = new long[0]; 
    226235          if (results.length > 0) { 
     
    442451  } 
    443452 
     453  // -- Helper methods -- 
     454 
     455  private static long[] showTable(OMECredentials cred) throws ReflectException { 
     456    long[] ids = OMEUtils.getAllIDs(cred.isOMERO); 
     457    int[] x = OMEUtils.getAllWidths(cred.isOMERO); 
     458    int[] y = OMEUtils.getAllHeights(cred.isOMERO); 
     459    int[] z = OMEUtils.getAllZs(cred.isOMERO); 
     460    int[] c = OMEUtils.getAllChannels(cred.isOMERO); 
     461    int[] t = OMEUtils.getAllTs(cred.isOMERO); 
     462    String[] types = OMEUtils.getAllTypes(cred.isOMERO); 
     463    String[] names = OMEUtils.getAllNames(cred.isOMERO); 
     464    String[] descr = OMEUtils.getAllDescriptions(cred.isOMERO); 
     465    String[] created = OMEUtils.getAllDates(cred.isOMERO); 
     466    BufferedImage[] thumbs = OMEUtils.getAllThumbnails(cred.isOMERO); 
     467 
     468    Object[][] tableData = new Object[ids.length][11]; 
     469    for (int row=0; row<ids.length; row++) { 
     470      tableData[row][0] = new Boolean(false); 
     471      tableData[row][1] = new Long(ids[row]); 
     472      tableData[row][2] = names[row]; 
     473      tableData[row][3] = descr[row]; 
     474      tableData[row][4] = new Integer(x[row]); 
     475      tableData[row][5] = new Integer(y[row]); 
     476      tableData[row][6] = new Integer(z[row]); 
     477      tableData[row][7] = new Integer(c[row]); 
     478      tableData[row][8] = new Integer(t[row]); 
     479      tableData[row][9] = types[row]; 
     480      tableData[row][10] = created[row]; 
     481    } 
     482    String[] columnNames = new String[] {"", "ID", "Name", "Description", "X", 
     483      "Y", "Z", "C", "T", "Pixel type", "Creation date"}; 
     484 
     485    DefaultTableModel model = new DefaultTableModel(tableData, columnNames) { 
     486      public boolean isCellEditable(int row, int col) { 
     487        return col == 0; 
     488      } 
     489 
     490      public Class getColumnClass(int c) { 
     491        return getValueAt(0, c).getClass(); 
     492      } 
     493    }; 
     494    JTable table = new JTable(model); 
     495    table.setVisible(true); 
     496    JScrollPane scroll = new JScrollPane(table); 
     497    scroll.setVisible(true); 
     498    DialogPane window = new DialogPane("OME Images"); 
     499    window.add(scroll); 
     500    window.showDialog((Dialog) null); 
     501 
     502    Vector idList = new Vector(); 
     503    for (int i=0; i<ids.length; i++) { 
     504      boolean download = ((Boolean) table.getValueAt(i, 0)).booleanValue(); 
     505      if (download) idList.add(new Long(ids[i])); 
     506    } 
     507 
     508    long[] rtn = new long[idList.size()]; 
     509    for (int i=0; i<rtn.length; i++) { 
     510      rtn[i] = ((Long) idList.get(i)).longValue(); 
     511    } 
     512    return rtn; 
     513  } 
     514 
    444515} 
Note: See TracChangeset for help on using the changeset viewer.