import java.io.File;
import javax.swing.filechooser.*;

/**
 * Projet :PaintRevolution
 * <p>Titre :ExtensionFichier.java </p>
 * <p>Description :Classe permettant d'accepter un fichier selon un filtre </p>
 * <p>Copyright : Copyright (c) 2005</p>
 * <p>Société : IUT CHARLEMAGNE NANCY II</p>
 * @author VIGNERON GEOFFROY && GANGANELLI DORIAN
 * @version 3.0
 */
public class ExtensionFichier extends FileFilter{
    /**
     * Extension de fichier(filtre)
     */
    private String[] extension;
    
    /**
     * description du filtre
     */
    private String description;
    
    /**
     * Constructeur d'extension de fichier
     * @param exten tableau de chaine comprenant les extensions
     * @param desc descrtiption extension
     */
    public ExtensionFichier(String exten[], String desc) {
        extension = exten;
        description = desc;
    }
    
    /**
     * Methode permettant de savoir si le fichier du disque
     * a la même extension que celle désirée
     * @param ext extension du fichier du disque
     * @return un booleen à vrai si l'extension du fichier 
     * 		   est la même que celle dufiltre
     */
    private boolean memeExtension(String ext) {
        boolean trouve=false;
        for (int i = 0; i < extension.length; ++i) {
            if (ext.equals(extension[i]))
                trouve=true;
        }
        return trouve;
    }
    /**
     * Méthode permettant de savoir si un 
     * fichier donne est accepte par le filtre
     * @return un booleen pour savoir l'extension du fichier est accepte
     */
    public boolean accept(File f) {
        if (f.isDirectory()) {
            return true;
        }
        String extensions = null;
        String s = f.getName();
        int i = s.lastIndexOf('.');
        if (i > 0 && i < s.length() - 1) {
            extensions = s.substring(i + 1).toLowerCase();
        }
        return extensions != null && memeExtension(extensions);
    }

    /**
     * Methode permettant de recuperer la description du filtre
     * @return une chaine comprant la description
     */
    public String getDescription() {
        return description;
    }
}


