001    /*
002     * Copyright 2002-2004 the original author or authors.
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     * 
008     * http://www.apache.org/licenses/LICENSE-2.0
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.richclient.filechooser;
017    
018    import java.awt.Component;
019    import java.io.File;
020    
021    import javax.swing.JFileChooser;
022    
023    /**
024     * Utility functions for file choosers. Designed to be used by a single event
025     * dispatching thread.
026     * 
027     * @author Keith Donald
028     */
029    public class FileChooserUtils {
030        private static JFileChooser fileChooser;
031    
032        private FileChooserUtils() {
033        }
034    
035        public static File showFileChooser(Component parent, String defaultExtension, String approveButtonName,
036                String fileTypeDescription) {
037            if (fileChooser == null) {
038                fileChooser = new JFileChooser();
039            }
040            fileChooser.resetChoosableFileFilters();
041            DefaultFileFilter filter = new DefaultFileFilter();
042            filter.addExtension(defaultExtension);
043            filter.setDescription(fileTypeDescription);
044            fileChooser.setFileFilter(filter);
045            int returnVal = fileChooser.showDialog(parent, approveButtonName);
046            if (returnVal == JFileChooser.APPROVE_OPTION)
047                return fileChooser.getSelectedFile();
048    
049            return null;
050        }
051    }