/*
* Copyright (C) 2008 Universidade Federal de Campina Grande
*
* This file is part of OurGrid.
*
* OurGrid is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.ourgrid.common.ui.gui;
import java.awt.Component;
import java.io.File;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
public class OGFileChooser extends JFileChooser {
private static final long serialVersionUID = 1L;
private static String filePath = ".";
public OGFileChooser( final String description, final String extension ) {
super( new File( filePath ) );
addChoosableFileFilter( new FileFilter() {
@Override
public boolean accept( File f ) {
if(f.isDirectory()){
return true;
}
String lowerCaseName = f.getName().toLowerCase();
if ( lowerCaseName.endsWith( extension ) ) {
filePath = f.getParent();
return true;
}
return false;
}
@Override
public String getDescription() {
return description;
}
} );
}
public OGFileChooser(final Map<String, String> extensions) {
super( new File( filePath ) );
Set<Entry<String,String>> entrySet = extensions.entrySet();
for ( final Entry<String,String> entry : entrySet ) {
addChoosableFileFilter( new FileFilter() {
@Override
public boolean accept( File f ) {
if(f.isDirectory()){
return true;
}
String lowerCaseName = f.getName().toLowerCase();
if ( lowerCaseName.endsWith( entry.getKey() ) ) {
filePath = f.getParent();
return true;
}
return false;
}
@Override
public String getDescription() {
return entry.getValue();
}
} );
}
}
/**
* Return Selected file in file chooser
*/
public File selectFile( Component parent ) {
int result = this.showOpenDialog( parent );
if ( result == JFileChooser.APPROVE_OPTION )
return this.getSelectedFile();
return null;
}
}