package ij.io;
import ij.gui.GenericDialog;
import java.awt.*;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import ij.*;
import ij.plugin.frame.Recorder;
import ij.util.Java2;
import ij.macro.Interpreter;
/** This class displays a dialog window from
which the user can save a file. */
public class SaveDialog {
private String dir;
private String name;
private String title;
private String ext;
/** Displays a file save dialog with 'title' as the
title, 'defaultName' as the initial file name, and
'extension' (e.g. ".tif") as the default extension.
*/
public SaveDialog(String title, String defaultName, String extension) {
this.title = title;
ext = extension;
if (isMacro())
return;
String defaultDir = OpenDialog.getDefaultDirectory();
defaultName = setExtension(defaultName, extension);
if (Prefs.useJFileChooser)
jSave(title, defaultDir, defaultName);
else
save(title, defaultDir, defaultName);
if (name!=null && dir!=null)
OpenDialog.setDefaultDirectory(dir);
IJ.showStatus(title+": "+dir+name);
}
/** Displays a file save dialog, using the specified
default directory and file name and extension. */
public SaveDialog(String title, String defaultDir, String defaultName, String extension) {
this.title = title;
ext = extension;
if (isMacro())
return;
defaultName = setExtension(defaultName, extension);
if (Prefs.useJFileChooser)
jSave(title, defaultDir, defaultName);
else
save(title, defaultDir, defaultName);
IJ.showStatus(title+": "+dir+name);
}
boolean isMacro() {
String macroOptions = Macro.getOptions();
if (macroOptions!=null) {
String path = Macro.getValue(macroOptions, title, null);
if (path==null)
path = Macro.getValue(macroOptions, "path", null);
if (path!=null && path.indexOf(".")==-1 && !((new File(path)).exists())) {
// Is 'path' a macro variable?
if (path.startsWith("&")) path=path.substring(1);
Interpreter interp = Interpreter.getInstance();
String path2 = interp!=null?interp.getStringVariable(path):null;
if (path2!=null) path = path2;
}
if (path!=null) {
Opener o = new Opener();
dir = o.getDir(path);
name = o.getName(path);
return true;
}
}
return false;
}
public static String setExtension(String name, String extension) {
if (name==null || extension==null || extension.length()==0)
return name;
int dotIndex = name.lastIndexOf(".");
if (dotIndex>=0 && (name.length()-dotIndex)<=5) {
if (dotIndex+1"+name);
dir = fd.getDirectory();
if (name==null)
Macro.abort();
fd.dispose();
if (ij==null)
parent.dispose();
}
private boolean noExtension(String name) {
if (name==null) return false;
int dotIndex = name.indexOf(".");
return dotIndex==-1 || (name.length()-dotIndex)>5;
}
/** Returns the selected directory. */
public String getDirectory() {
OpenDialog.setLastDirectory(dir);
return dir;
}
/** Returns the selected file name. */
public String getFileName() {
if (name!=null) {
if (Recorder.record && dir!=null)
Recorder.recordPath(title, dir+name);
OpenDialog.setLastName(name);
}
return name;
}
}
Ads help maintain this website.