// License: GPL. For details, see LICENSE file.
package org.openstreetmap.hot.sds;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.actions.DiskAccessAction;
import org.openstreetmap.josm.gui.ExtendedDialog;
import org.openstreetmap.josm.gui.widgets.SwingFileChooser;
import org.openstreetmap.josm.tools.Shortcut;
@SuppressWarnings("serial")
public abstract class SdsDiskAccessAction extends DiskAccessAction {
public SdsDiskAccessAction(String name, String iconName, String tooltip,
Shortcut shortcut) {
super(name, iconName, tooltip, shortcut);
}
public static SwingFileChooser createAndOpenFileChooser(boolean open, boolean multiple, String title) {
String curDir = Main.pref.get("lastDirectory");
if (curDir.equals("")) {
curDir = ".";
}
SwingFileChooser fc = new SwingFileChooser(new File(curDir));
if (title != null) {
fc.setDialogTitle(title);
}
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
fc.setMultiSelectionEnabled(multiple);
fc.setAcceptAllFileFilterUsed(false);
fc.setFileFilter(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".sds") || pathname.isDirectory();
}
@Override
public String getDescription() {
return (tr("SDS data file"));
}
});
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"});
dialog.showDialog();
if (dialog.getValue() != 1)
return null;
}
}
return fc;
}
public static File createAndOpenSaveFileChooser(String title) {
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_ONLY);
fc.setMultiSelectionEnabled(false);
fc.setAcceptAllFileFilterUsed(false);
fc.setFileFilter(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".sds") || pathname.isDirectory();
}
@Override
public String getDescription() {
return (tr("SDS data file"));
}
});
int answer = fc.showSaveDialog(Main.parent);
if (answer != JFileChooser.APPROVE_OPTION)
return null;
if (!fc.getCurrentDirectory().getAbsolutePath().equals(curDir)) {
Main.pref.put("lastDirectory", fc.getCurrentDirectory().getAbsolutePath());
}
File file = fc.getSelectedFile();
if (!confirmOverwrite(file))
return null;
return file;
}
public static boolean confirmOverwrite(File file) {
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"});
dialog.showDialog();
return (dialog.getValue() == 1);
}
return true;
}
}