Blame | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues;
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.interfaces.Filtrable;
import org.tela_botanica.client.interfaces.Rafraichissable;
import com.google.gwt.user.client.ui.Label;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.form.DateField;
/**
* Classe implémentant un filtre qui permet de rechercher une aimge par rapport à la date associée,
* des critères plus fins viendront compléter cela
* @author aurelien
*
*/
public class DateFiltreVue extends Panel implements Rafraichissable, Filtrable {
/**
* Le médiateur associé à la vue
*/
private ImageMediateur iMediateur = null ;
/**
* Le widget calendrier
*/
private DateField filtreDate = null ;
/**
* Booleen d'état du filtre
*/
private boolean filtreModifie = false ;
/**
* Constructeur sans argument (privé car ne doit pas être utilisé)
*/
@SuppressWarnings("unused")
private DateFiltreVue()
{
super() ;
}
/**
* Constructeur avec arguments
* @param im le médiateur à associer
*/
public DateFiltreVue(ImageMediateur im)
{
super() ;
setPaddings(5) ;
setCollapsible(true) ;
setBorder(false) ;
iMediateur = im ;
Label labelRecherche = new Label("Date :") ;
add(labelRecherche) ;
// on crée le calendrier et on définit le format de la date "jj/mm/aaaa"
filtreDate = new DateField() ;
filtreDate.setAutoWidth(true) ;
filtreDate.setFormat("d/m/Y") ;
add(filtreDate);
ajouterListeners() ;
}
/**
* Ajoute les listeners
*/
public void ajouterListeners()
{
}
/**
* Méthode héritée de l'interface rafraichissable
*/
public void rafraichir(Object nouvelleDonnees,
boolean repandreRaffraichissement) {
filtreModifie = false ;
}
/**
* Méthode héritée de l'interface filtrable
*/
public void valider() {
filtreModifie = true ;
}
/**
* Accesseur pour le médiateur
* @return le médiateur associé à la vue
*/
@SuppressWarnings("unused")
private ImageMediateur getIMediateur() {
return iMediateur ;
}
/**
* Méthode héritée de l'interface filtrable
*/
public boolean renvoyerEtatFiltre() {
return filtreModifie ;
}
/**
* Méthode héritée de l'interface filtrable
*/
public String renvoyerNomFiltre() {
return "Recherche par date" ;
}
/**
* Méthode héritée de l'interface filtrable
*/
public String[] renvoyerValeursAFiltrer() {
// si la date est valide
if(filtreDate.isValid())
{
// on en sépare les composants
String dt = filtreDate.getRawValue() ;
String[] dates = dt.split("/") ;
if(dates.length == 3)
{
// qu'on réassemble dans un autre format (américain) pour la base de donnée "aaaa-mm-jj"
String dateFormatee = dates[2]+"-"+dates[1]+"-"+dates[0] ;
String[] valeursFiltres = {"ci_meta_date" , dateFormatee } ;
return valeursFiltres ;
}
}
// si la date n'estp as valide on renvoie une chaine vide (ce qui correspond à n'importe qu'elle date)
String dateFormatee = "" ;
String[] valeursFiltres = {"ci_meta_date" , dateFormatee } ;
return valeursFiltres ;
}
}