// // IdDialog.java // /* LOCI Plugins for ImageJ: a collection of ImageJ plugins including the Bio-Formats Importer, Bio-Formats Exporter, Bio-Formats Macro Extensions, Data Browser and Stack Slicer. Copyright (C) 2005-@year@ Melissa Linkert, Curtis Rueden and Christopher Peterson. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package loci.plugins.in; import ij.IJ; import ij.gui.GenericDialog; import ij.io.OpenDialog; import java.awt.TextField; import java.util.Vector; import loci.common.Location; /** * Bio-Formats Importer id chooser dialog box. * * <dl><dt><b>Source code:</b></dt> * <dd><a href="http://trac.openmicroscopy.org.uk/ome/browser/bioformats.git/components/loci-plugins/src/loci/plugins/in/IdDialog.java">Trac</a>, * <a href="http://git.openmicroscopy.org/?p=bioformats.git;a=blob;f=components/loci-plugins/src/loci/plugins/in/IdDialog.java;hb=HEAD">Gitweb</a></dd></dl> */ public class IdDialog extends ImporterDialog { // -- Fields -- private OpenDialog od; private String name; // -- Constructor -- /** Creates an id chooser dialog for the Bio-Formats Importer. */ public IdDialog(ImportProcess process) { super(process); } // -- ImporterDialog methods -- @Override protected boolean needPrompt() { return options.getId() == null; } @Override protected GenericDialog constructDialog() { GenericDialog gd = null; if (options.isHTTP()) { gd = new GenericDialog("Bio-Formats URL"); gd.addStringField("URL: ", "http://", 30); } else if (options.isOMERO()) { gd = new GenericDialog("OMERO Server Credentials"); gd.addStringField("Server: ", "", 80); gd.addStringField("Port: ", "4064", 80); gd.addStringField("Username: ", "", 80); gd.addStringField("Password: ", "", 80); gd.addStringField("Group: ", "default", 80); gd.addStringField("Image ID: ", "", 80); Vector v = gd.getStringFields(); ((TextField) v.get(3)).setEchoChar('*'); } return gd; } /** * Asks user whether Bio-Formats should automatically check for upgrades, * and if so, checks for an upgrade and prompts user to install it. * * @return status of operation */ @Override protected boolean displayDialog(GenericDialog gd) { if (options.isLocal()) { if (options.isFirstTime() && IJ.isMacOSX() && !options.isQuiet()) { String osVersion = System.getProperty("os.version"); if (osVersion == null || osVersion.startsWith("10.4.") || osVersion.startsWith("10.3.") || osVersion.startsWith("10.2.")) { // present user with one-time dialog box IJ.showMessage("Bio-Formats", "One-time warning: There is a bug in Java on Mac OS X with the " + "native file chooser\nthat crashes ImageJ if you click on a file " + "in CXD, IPW, OIB or ZVI format while in\ncolumn view mode. You " + "can work around the problem in one of two ways:\n \n" + " 1. Switch to list view (press Command+2)\n" + " 2. Check \"Use JFileChooser to Open/Save\" under " + "Edit>Options>Input/Output..."); } } String idLabel = options.getLabel(ImporterOptions.KEY_ID); od = new OpenDialog(idLabel, options.getId()); name = od.getFileName(); if (name == null) return false; } else if (options.isHTTP() || options.isOMERO()) { gd.showDialog(); if (gd.wasCanceled()) return false; } return true; } @Override protected boolean harvestResults(GenericDialog gd) { String id = null; if (options.isLocal()) { String dir = od.getDirectory(); // NB: do not use od.getFileName() here. That method has been called // above, so the macro recorder will record the file path twice if we // call od.getFileName() again. See ticket #596. if (dir != null || name == null) { id = dir + name; } // verify validity Location idLoc = new Location(id); if (!idLoc.exists() && !id.toLowerCase().endsWith(".fake")) { if (!options.isQuiet()) { IJ.error("Bio-Formats", "The specified file (" + id + ") does not exist."); } return false; } } else if (options.isHTTP()) { id = gd.getNextString(); if (id == null) { if (!options.isQuiet()) { IJ.error("Bio-Formats", "No URL was specified."); } return false; } } else if (options.isOMERO()) { StringBuffer omero = new StringBuffer("omero:"); omero.append("server="); omero.append(gd.getNextString()); omero.append("\nport="); omero.append(gd.getNextString()); omero.append("\nuser="); omero.append(gd.getNextString()); omero.append("\npass="); omero.append(gd.getNextString()); String group = gd.getNextString(); Long groupID = null; try { groupID = new Long(group); } catch (NumberFormatException e) { } omero.append("\ngroupName="); omero.append(group); if (groupID != null) { omero.append("\ngroupID="); omero.append(groupID); } omero.append("\niid="); omero.append(gd.getNextString()); id = omero.toString(); } options.setId(id); return true; } }