1 package jp.naist.se.stigmata.ui.swing;
\r
7 import java.awt.Component;
\r
9 import java.text.MessageFormat;
\r
11 import javax.swing.JFileChooser;
\r
12 import javax.swing.SwingUtilities;
\r
13 import javax.swing.filechooser.FileFilter;
\r
17 * @author Haruaki TAMADA
\r
18 * @version $Revision$ $Date$
\r
20 public class FileIOManager{
\r
21 private Component parent;
\r
22 private File currentDirectory;
\r
24 public FileIOManager(Component parent){
\r
25 this.parent = parent;
\r
26 currentDirectory = new File(".");
\r
29 public File getCurrentDirectory(){
\r
30 return currentDirectory;
\r
33 public void setCurrentDirectory(File directory) throws IllegalArgumentException{
\r
34 if(!directory.isDirectory()){
\r
35 throw new IllegalArgumentException(directory.getName() + " is not directory");
\r
37 this.currentDirectory = directory;
\r
40 public File findFile(boolean open){
\r
41 return findFile(open, new String[0], "");
\r
44 public File[] openFiles(FileFilter[] filters, boolean multi, boolean directory){
\r
45 JFileChooser chooser = new JFileChooser(getCurrentDirectory());
\r
46 if(filters != null){
\r
47 for(int i = 0; i < filters.length; i++){
\r
48 chooser.addChoosableFileFilter(filters[i]);
\r
51 chooser.setMultiSelectionEnabled(multi);
\r
53 chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
\r
56 chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
\r
58 int returnValue = chooser.showOpenDialog(SwingUtilities.getRootPane(parent));
\r
59 if(returnValue == JFileChooser.APPROVE_OPTION){
\r
60 setCurrentDirectory(chooser.getCurrentDirectory());
\r
61 return chooser.getSelectedFiles();
\r
66 public File findFile(boolean open, String[] exts, String desc){
\r
67 JFileChooser chooser = new JFileChooser(getCurrentDirectory());
\r
69 MessageFormat formatter = new MessageFormat(desc);
\r
70 for(int i = 0; i < exts.length; i++){
\r
71 chooser.addChoosableFileFilter(
\r
72 new ExtensionFilter(exts[i], formatter.format(new Object[] { exts[i], }))
\r
76 int returnValue = -1;
\r
78 returnValue = chooser.showOpenDialog(SwingUtilities.getRootPane(parent));
\r
81 returnValue = chooser.showSaveDialog(SwingUtilities.getRootPane(parent));
\r
83 if(returnValue == JFileChooser.APPROVE_OPTION){
\r
84 setCurrentDirectory(chooser.getCurrentDirectory());
\r
85 File file = chooser.getSelectedFile();
\r
87 FileFilter filter = chooser.getFileFilter();
\r
88 if(filter instanceof ExtensionFilter){
\r
89 ExtensionFilter ef = (ExtensionFilter)filter;
\r
90 if(!filter.accept(file)){
\r
91 String[] extensions = ef.getExtensions();
\r
92 file = setExtension(file, extensions[0]);
\r
101 private File setExtension(File file, String ext){
\r
102 String name = file.getName();
\r
103 int index = name.lastIndexOf('.');
\r
106 n = n.substring(0, index);
\r
108 name = n + '.' + ext;
\r
109 return new File(file.getParentFile(), name);
\r