//
// BF.java
//

/*
LOCI Plugins for ImageJ: a collection of ImageJ plugins including the
Bio-Formats Importer, Bio-Formats Exporter, Bio-Formats Macro Extensions,
Data Browser, Stack Colorizer 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;

import ij.IJ;
import ij.ImagePlus;

import java.io.IOException;

import loci.formats.FormatException;
import loci.plugins.in.ImagePlusReader;
import loci.plugins.in.ImportProcess;
import loci.plugins.in.ImporterOptions;
import loci.plugins.in.ImporterPrompter;

/**
 * Miscellaneous LOCI plugins utility methods.
 *
 * <dl><dt><b>Source code:</b></dt>
 * <dd><a href="https://skyking.microscopy.wisc.edu/trac/java/browser/trunk/components/loci-plugins/src/loci/plugins/BF.java">Trac</a>,
 * <a href="https://skyking.microscopy.wisc.edu/svn/java/trunk/components/loci-plugins/src/loci/plugins/BF.java">SVN</a></dd></dl>
 */
public final class BF {

  // -- Constructor --

  private BF() { }

  // -- Utility methods --

  public static void debug(String msg) {
    if (IJ.debugMode) IJ.log("LOCI: " + msg);
  }
  
  public static void status(boolean quiet, String msg) {
    if (quiet) return;
    IJ.showStatus(msg);
  }
  
  public static void warn(boolean quiet, String msg) {
    if (quiet) return;
    IJ.log("Warning: " + msg);
  }
  
  public static void progress(boolean quiet, int value, int max) {
    if (quiet) return;
    IJ.showProgress(value, max);
  }

  public static ImagePlus[] openImagePlus(String path)
    throws FormatException, IOException
  {
    ImporterOptions options = new ImporterOptions();
    options.setId(path);
    return openImagePlus(options);
  }

  public static ImagePlus[] openImagePlus(ImporterOptions options)
    throws FormatException, IOException
  {
    options.setQuiet(true);//TEMP
    options.setWindowless(true);//TEMP
    ImportProcess process = new ImportProcess(options);
    new ImporterPrompter(process);//TEMP
    if (!process.execute()) return null;
    ImagePlusReader reader = new ImagePlusReader(process);
    return reader.openImagePlus();
  }

}

@@ -1796,34 +1796,32 @@
 : %22 + msg);%0A  %7D%0A
-  
 %0A  public static
@@ -1905,34 +1905,32 @@
 tatus(msg);%0A  %7D%0A
-  
 %0A  public static
@@ -2027,18 +2027,16 @@
 g);%0A  %7D%0A
-  
 %0A  publi
@@ -2480,24 +2480,644 @@
 ception%0A  %7B%0A
+    // TODO: Eliminate use of the ImporterPrompter. While no dialogs should%0A    // appear due to the quiet and windowless flags, it would be cleaner to%0A    // avoid piping everything through invisible GenericDialogs internally.%0A    //%0A    // However, we need to be sure all the Dialog classes are not performing%0A    // any %22side-effect%22 logic on the ImportProcess and/or ImporterOptions%0A    // before we can make this change.%0A    //%0A    // Another downside might be that we could miss out on any other magic that%0A    // ImageJ is performing (e.g., macro-related functionality), but further%0A    // testing is warranted.%0A%0A
     options.
@@ -3127,30 +3127,68 @@
 Quiet(true);
+ 
 //
-TEMP
+ NB: Only needed due to ImporterPrompter.
 %0A    options
@@ -3208,22 +3208,61 @@
 s(true);
+ 
 //
-TEMP
+ NB: Only needed due to ImporterPrompter.%0A
 %0A    Imp
@@ -3306,24 +3306,25 @@
 s(options);%0A
+%0A
     new Impo
@@ -3349,14 +3349,50 @@
 ss);
+ 
 //
-TEMP
+ NB: Could eliminate this (see above).%0A
 %0A   

Add a note about the use of ImporterPrompter in BF.openImagePlus.