/**
* Copyright (c) 2012, Lindsay Bradford and other Contributors.
* All rights reserved.
*
* This program and the accompanying materials are made available
* under the terms of the BSD 3-Clause licence which accompanies
* this distribution, and is available at
* http://opensource.org/licenses/BSD-3-Clause
*/
package blacksmyth.personalfinancier.view;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.filechooser.FileNameExtensionFilter;
import blacksmyth.general.file.IFileHandlerView;
public class FileHandlerView implements IFileHandlerView {
private final JFileChooser fileChooser = new JFileChooser();
private String currentFileName;
private JFrame parentFrame;
public FileHandlerView(JFrame parentFrame, String description, String... extensions) {
this.parentFrame = parentFrame;
configureFileChooser(description, extensions);
}
private void configureFileChooser(String description, String... extensions) {
FileNameExtensionFilter filter = new FileNameExtensionFilter(description, extensions);
fileChooser.setFileFilter(filter);
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setMultiSelectionEnabled(false);
}
@Override
public boolean promptForSaveFilename() {
int response = fileChooser.showSaveDialog(parentFrame);
if (response == JFileChooser.APPROVE_OPTION) {
setCurrentFileName(
fileChooser.getSelectedFile().getAbsolutePath()
);
return true;
}
return false;
}
private void setCurrentFileName(String filename) {
this.currentFileName = filename;
parentFrame.setTitle(filename);
}
@Override
public String getFilename() {
return this.currentFileName;
}
@Override
public void setPromptDirectory(String directory) {
fileChooser.setCurrentDirectory(
new File(
directory
)
);
}
@Override
public boolean promptForLoadFilename() {
int response = fileChooser.showOpenDialog(parentFrame);
if (response == JFileChooser.APPROVE_OPTION) {
setCurrentFileName(
fileChooser.getSelectedFile().getAbsolutePath()
);
return true;
}
return false;
}
}