package com.horstmann.violet.framework;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ResourceBundle;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
/**
* This class implements a FileService with a JFileChooser
*/
class JFileChooserService extends FileService
{
public JFileChooserService(File initialDirectory)
{
fileChooser = new JFileChooser();
fileChooser.setCurrentDirectory(initialDirectory);
}
public Open open(String defaultDirectory, String defaultFile,
ExtensionFilter filter) throws FileNotFoundException
{
fileChooser.resetChoosableFileFilters();
fileChooser.setFileFilter(filter);
if (defaultDirectory != null)
fileChooser.setCurrentDirectory(new File(defaultDirectory));
if (defaultFile == null)
fileChooser.setSelectedFile(null);
else
fileChooser.setSelectedFile(new File(defaultFile));
int response = fileChooser.showOpenDialog(null);
if (response == JFileChooser.APPROVE_OPTION)
file = fileChooser.getSelectedFile();
else
file = null;
return new JOpen(this);
}
public Save save(String defaultDirectory, String defaultFile,
ExtensionFilter filter, String removeExtension, String addExtension) throws FileNotFoundException
{
fileChooser.resetChoosableFileFilters();
fileChooser.setFileFilter(filter);
if (defaultDirectory == null)
fileChooser.setCurrentDirectory(new File("."));
else
fileChooser.setCurrentDirectory(new File(defaultDirectory));
if (defaultFile != null)
{
File f = new File(editExtension(defaultFile, removeExtension, addExtension));
fileChooser.setSelectedFile(f);
}
else
fileChooser.setSelectedFile(new File(""));
int response = fileChooser.showSaveDialog(null);
if (response == JFileChooser.APPROVE_OPTION)
{
File f = fileChooser.getSelectedFile();
if (addExtension != null && f.getName().indexOf(".") < 0) // no extension supplied
f = new File(f.getPath() + addExtension);
if (!f.exists()) return new JSave(f);
ResourceBundle editorResources =
ResourceBundle.getBundle("com.horstmann.violet.framework.EditorStrings");
int result = JOptionPane.showConfirmDialog(
null,
editorResources.getString("dialog.overwrite"),
null,
JOptionPane.YES_NO_OPTION);
if (result == JOptionPane.YES_OPTION)
return new JSave(f);
}
return new JSave(null);
}
public boolean isWebStart() { return false; }
private JFileChooser fileChooser;
File file;
}