filebot/source/net/filebot/ui/transfer/SaveAction.java

63 lines
1.5 KiB
Java

package net.filebot.ui.transfer;
import static net.filebot.Logging.*;
import static net.filebot.UserFiles.*;
import static net.filebot.util.FileUtilities.*;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon;
import net.filebot.ResourceManager;
public class SaveAction extends AbstractAction {
public static final String EXPORT_HANDLER = "exportHandler";
public SaveAction(FileExportHandler exportHandler) {
this("Save as ...", ResourceManager.getIcon("action.save"), exportHandler);
}
public SaveAction(String name, Icon icon, FileExportHandler exportHandler) {
putValue(NAME, name);
putValue(SMALL_ICON, icon);
putValue(EXPORT_HANDLER, exportHandler);
}
public FileExportHandler getExportHandler() {
return (FileExportHandler) getValue(EXPORT_HANDLER);
}
protected boolean canExport() {
return getExportHandler().canExport();
}
protected void export(File file) throws IOException {
getExportHandler().export(file);
}
protected File getDefaultFile() {
return new File(validateFileName(getExportHandler().getDefaultFileName()));
}
@Override
public void actionPerformed(ActionEvent evt) {
try {
if (canExport()) {
File file = showSaveDialogSelectFile(false, getDefaultFile(), (String) getValue(Action.NAME), evt);
if (file != null) {
export(file);
}
}
} catch (Exception e) {
debug.log(Level.SEVERE, e.toString(), e);
}
}
}