/**
*
*/
package icy.gui.dialog;
import icy.file.FileUtil;
import icy.main.Icy;
import icy.system.thread.ThreadUtil;
import java.io.File;
import javax.swing.JFileChooser;
/**
* Simple dialog to let user select a file or a folder for open operation.
*
* @author Stephane
*/
public class OpenDialog
{
private static class OpenDialogRunner implements Runnable
{
private final String title;
private final String defaultDir;
private final String defaultName;
private final String extension;
private JFileChooser dialog;
String result;
public OpenDialogRunner(String title, String defaultDir, String defaultName, String extension)
{
super();
this.title = title;
this.defaultDir = defaultDir;
this.defaultName = defaultName;
this.extension = extension;
}
@Override
public void run()
{
result = null;
final String defaultFileName;
if ((defaultName != null) && (extension != null))
defaultFileName = FileUtil.setExtension(defaultName, extension);
else
defaultFileName = defaultName;
if (dialog == null)
dialog = new JFileChooser();
dialog.setDialogTitle(title);
if (defaultDir != null)
dialog.setCurrentDirectory(new File(defaultDir));
if (defaultFileName != null)
dialog.setSelectedFile(new File(defaultFileName));
final int returnVal = dialog.showOpenDialog(null);
if (returnVal != JFileChooser.APPROVE_OPTION)
return;
final File f = dialog.getSelectedFile();
if (!f.exists())
return;
result = f.getAbsolutePath();
}
}
/**
* Displays a file load dialog, using the specified default directory and file name and
* extension
*/
public static String chooseFile(String title, String defaultDir, String defaultName, String extension)
{
final OpenDialogRunner runner = new OpenDialogRunner(title, defaultDir, defaultName, extension);
// no result in headless
if (Icy.getMainInterface().isHeadLess())
return null;
ThreadUtil.invokeNow(runner);
return runner.result;
}
/**
* Displays a file load dialog, using the specified default directory and file name
*/
public static String chooseFile(String title, String defaultDir, String defaultName)
{
return chooseFile(title, defaultDir, defaultName, null);
}
/**
* Displays a file load dialog, using the specified default directory and file name
*/
public static String chooseFile(String defaultDir, String defaultName)
{
return chooseFile("Load file...", defaultDir, defaultName);
}
/**
* Displays a file load dialog
*/
public static String chooseFile()
{
return chooseFile(null, null);
}
}