001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.widgets;
003
004import java.awt.Component;
005import java.io.File;
006
007import javax.swing.JFileChooser;
008import javax.swing.filechooser.FileFilter;
009
010/**
011 * File chooser based on the Swing's {@link JFileChooser} implementation.
012 * @since 7578
013 */
014public class SwingFileChooser extends AbstractFileChooser {
015
016    /** The JFileChooser which we use for this. */
017    private final JFileChooser jFileChooser;
018
019    /**
020     * Constructs a new {@code SwingFileChooser}.
021     * @param file the current file/directory to point to
022     */
023    public SwingFileChooser(File file) {
024        jFileChooser = new JFileChooser(file);
025    }
026
027    @Override
028    public void addChoosableFileFilter(FileFilter filter) {
029        jFileChooser.addChoosableFileFilter(filter);
030    }
031
032    @Override
033    public FileFilter[] getChoosableFileFilters() {
034        return jFileChooser.getChoosableFileFilters();
035    }
036
037    @Override
038    public File getCurrentDirectory() {
039        return jFileChooser.getCurrentDirectory();
040    }
041
042    @Override
043    public FileFilter getFileFilter() {
044        return jFileChooser.getFileFilter();
045    }
046
047    @Override
048    public File getSelectedFile() {
049        return jFileChooser.getSelectedFile();
050    }
051
052    @Override
053    public File[] getSelectedFiles() {
054        return jFileChooser.getSelectedFiles();
055    }
056
057    @Override
058    public boolean isMultiSelectionEnabled() {
059        return jFileChooser.isMultiSelectionEnabled();
060    }
061
062    @Override
063    public void setAcceptAllFileFilterUsed(boolean b) {
064        jFileChooser.setAcceptAllFileFilterUsed(b);
065    }
066
067    @Override
068    public void setCurrentDirectory(File f) {
069        jFileChooser.setCurrentDirectory(f);
070    }
071
072    @Override
073    public void setDialogTitle(String title) {
074        jFileChooser.setDialogTitle(title);
075    }
076
077    @Override
078    public void setFileFilter(FileFilter cff) {
079        jFileChooser.setFileFilter(cff);
080    }
081
082    @Override
083    public void setFileSelectionMode(int selectionMode) {
084        jFileChooser.setFileSelectionMode(selectionMode);
085    }
086
087    @Override
088    public void setMultiSelectionEnabled(boolean multiple) {
089        jFileChooser.setMultiSelectionEnabled(multiple);
090    }
091
092    @Override
093    public void setSelectedFile(File file) {
094        jFileChooser.setSelectedFile(file);
095    }
096
097    @Override
098    public int showOpenDialog(Component parent) {
099        jFileChooser.setLocale(locale);
100        return jFileChooser.showOpenDialog(parent);
101    }
102
103    @Override
104    public int showSaveDialog(Component parent) {
105        jFileChooser.setLocale(locale);
106        return jFileChooser.showSaveDialog(parent);
107    }
108}