// License: GPL. Copyright 2007 by Immanuel Scholz and others
package org.openstreetmap.josm.actions;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.io.File;
import javax.swing.JFileChooser;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.gui.ExtendedDialog;
import org.openstreetmap.josm.tools.Shortcut;
/**
* Helper class for all actions that access the disk
*/
abstract public class DiskAccessAction extends JosmAction {
public DiskAccessAction(String name, String iconName, String tooltip, Shortcut shortcut) {
super(name, iconName, tooltip, shortcut, true);
}
public static JFileChooser createAndOpenFileChooser(boolean open, boolean multiple, String title) {
return createAndOpenFileChooser(open, multiple, title, null);
}
public static JFileChooser createAndOpenFileChooser(boolean open, boolean multiple, String title, String extension) {
String curDir = Main.pref.get("lastDirectory");
if (curDir.equals("")) {
curDir = ".";
}
JFileChooser fc = new JFileChooser(new File(curDir));
if (title != null) {
fc.setDialogTitle(title);
}
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
fc.setMultiSelectionEnabled(multiple);
fc.setAcceptAllFileFilterUsed(false);
//System.out.println("opening fc for extension " + extension);
ExtensionFileFilter.applyChoosableImportFileFilters(fc, extension);
int answer = open ? fc.showOpenDialog(Main.parent) : fc.showSaveDialog(Main.parent);
if (answer != JFileChooser.APPROVE_OPTION)
return null;
if (!fc.getCurrentDirectory().getAbsolutePath().equals(curDir)) {
Main.pref.put("lastDirectory", fc.getCurrentDirectory().getAbsolutePath());
}
if (!open) {
File file = fc.getSelectedFile();
if (file != null && file.exists()) {
ExtendedDialog dialog = new ExtendedDialog(
Main.parent,
tr("Overwrite"),
new String[] {tr("Overwrite"), tr("Cancel")}
);
dialog.setContent(tr("File exists. Overwrite?"));
dialog.setButtonIcons(new String[] {"save_as.png", "cancel.png"});
if (dialog.getValue() != 1)
return null;
}
}
return fc;
}
}