[Class] FilterFile

« Older   Newer »
  Share  
-AsCiA-
CAT_IMG Posted on 18/9/2011, 21:54     +1   -1




Ciao ragazzi,studiando il capitolo sugli I/O avevo un esercizio che chiedeva di creare una classe per il filtraggio dei files nelle schermate di dialogo...
L'esercizio chiedeva di scriverla per una determinata estensione ma l'ho scritta riutilizzabile per tutte le estensioni u.u XD...
ecco la classe

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


/**
* Un istanza di questa classe e' un filtro
* per le finestre di dialogo. <br/>
* Utilizzando questa classe si deve settare,
* all'istanza dell'oggetto il valore stringa
* dell'estensione per la quale filtrare.<br/>
* Si puo' ulteriormente Attivare/Disattavare
* la visualizzazione delle directory tramite
* l'apposito metodo.<br/>
* La visualizzazione delle directory di
* default e' impostata a true.
* <br/>
* @author -AsCiA-
*/
public class FilterFile extends FileFilter {

       //--------------COSTANTI--------------//
       private static final char C_DOT = '.';


       //--------------VARIABILI DI CLASSE--------------//

       //estensione per la quale filtrare
       private String sFilterIn = "";
       
       //Attiva/Disattiva la visualizzazione delle cartelle
       private boolean bDirView = true;


       //--------------COSTRUTTORE--------------//
       /**
        * Permette di istanziare un oggetto
        * di questa classe passando come
        * argomento il valore in formato
        * stringa per il quale filtrare
        * le estensioni dei files.
        * <br/>
        * @param sSetValue <br/>
        * Valore in formato String per
        * il quale settare le estensioni
        */
       public FilterFile(String sSetValue){
               setFilter(sSetValue);
       }


       //--------------METODI PUBBLICI--------------//

       /**
        * Questo metodo setta il valore
        * per il quale filtrare  le
        * estensioni
        * <br/>
        * @param sSetValue <br/>
        * Valore in formato String per
        * il quale settare le estensioni
        */
       public void setFilter(String sSetValue){
               sFilterIn = sSetValue;
       }

       //---------------------------------------------//
       
       /**
        * Questo metodo restituisce il valore
        * in formato stringa settato
        * per filtrare i file.
        * <br/>
        * @return String
        */
       public String getFilter(){
               return sFilterIn;
       }

       //---------------------------------------------//
       
       /**
        * Tramite questo metodo si puo' ativare/disattivare
        * la visibilita' delle directory
        */
       public void dirVisibility(boolean bValue){
               bDirView = bValue;
       }
       
       //---------------------------------------------//

       /**
        * Questo metodo controlla che l'estensione
        * del file sia uguale all'estensione stabilita
        * per il filtro
        * <br/>
        *
        * @param oFileToCheck <br/>
        * File al quale controllare l'estensione
        *
        *  <br/>
        *  @return <br/>
        *  Il metodo restituisce true se l'estesione
        *  del file rispetta l'estesione per la
        *  quale filtrare il file.<br/>
        *  Altrimenti restituisce false in caso
        *  contrario.
        */
       public boolean accept(File oFileToCheck) {

               String sFileExtension = getExtension(oFileToCheck);

               if(oFileToCheck.isDirectory())
               {
                       return bDirView;
               }

               if(sFileExtension.compareToIgnoreCase(sFilterIn) == 0)
               {
                       return true;
               }

               return false;
       }


       public String getDescription() {
               return "All files ." + getFilter();
       }



       //--------------METODI PRIVATI--------------//

       //Il metodo restituisce l'estensione del file
       private String getExtension(File oFile)
       {
               String sFileName = oFile.getName();


               //Ottengo la posizione del punto
               int loc = sFileName.lastIndexOf(C_DOT);


               //Verifico che il funto non sia il primo
               //o l'ultimo carattere.
               //Se il controllo e' positivo allora
               //restituisco l'enstensione del file
               //altrimenti restituisco una stringa
               //vuota
               if(loc > 0 && loc < sFileName.length()-1)
               {
                       return sFileName.substring(loc+1);
               }

               return "";
       }




}



Il funzionamento e' molto semplice...
per richiamae una finestra di dialogo settando questo filtro basta fare cosi.

CODICE
int iChooserStatus;

       JFileChooser oChooser = new JFileChooser("../");
               
               oChooser.setFileFilter(new FilterFile("txt"));
               
               iChooserStatus = oChooser.showDialog(null, "apri");


Per utilizzare anche l'opzione che non mostra le directory basta fare cosi:
CODICE
int iChooserStatus;

              JFileChooser oChooser = new JFileChooser("../");

               FilterFile oFilter = new FilterFile("txt");
               
               oFilter.dirVisibility(false);
               
               oChooser.setFileFilter(oFilter);

                iChooserStatus = oChooser.showDialog(null, "apri");


Edited by -AsCiA- - 26/9/2011, 21:51
 
Top
LoGiX
CAT_IMG Posted on 26/9/2011, 17:56     +1   -1




Grande come sempre! :D
 
Top
-AsCiA-
CAT_IMG Posted on 26/9/2011, 20:46     +1   -1




grazie :)
 
Top
2 replies since 18/9/2011, 21:54   55 views
  Share