package tk.amberide.ide.os.filechooser;
import tk.amberide.ide.data.io.FileIO;
import tk.amberide.ide.os.OS;
import java.awt.Component;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
/**
*
* @author Tudor
*/
public class SwingFileDialog implements IFileDialog {
private JFileChooser browser;
private Component parent;
private String filter;
private File dir;
private String title;
private boolean multi;
public SwingFileDialog(String title, Component parent) {
browser = new JFileChooser(title);
this.parent = parent;
}
public SwingFileDialog(String title) {
this(title, null);
}
public boolean show() {
browser.setFileSelectionMode(JFileChooser.FILES_ONLY);
browser.setMultiSelectionEnabled(multi);
browser.setCurrentDirectory(dir);
if (filter != null) {
final String[] split = filter.split("\\|");
for (int i = 0; i != split.length; i += 2) {
final String description = split[i];
final List<String> exts = Arrays.asList(split[i + 1].split(";"));
browser.setFileFilter(new FileFilter() {
@Override
public boolean accept(File f) {
return f.isDirectory() || exts.contains("*." + FileIO.getFileExtension(f));
}
@Override
public String getDescription() {
return description;
}
});
}
}
int ret = browser.showOpenDialog(parent);
// parent.setVisible(true);
return ret == JFileChooser.APPROVE_OPTION;
}
public Component getParent() {
return parent;
}
public void setParent(Component parent) {
this.parent = parent;
}
public String getFilter() {
return filter;
}
public void setFilter(String filter) {
this.filter = filter;
}
public void setInitial(File initial) {
browser.setCurrentDirectory(initial);
}
public File getInitial() {
return browser.getCurrentDirectory();
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public boolean isMulti() {
return multi;
}
public void setMulti(boolean multi) {
this.multi = multi;
}
public File getFile() {
return browser.getSelectedFile();
}
public File[] getFiles() {
return browser != null ? browser.getSelectedFiles() : new File[0];
}
}