Rev 669 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues.image.filtres;
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.core.EventCallback;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.form.DateField;
import com.gwtext.client.widgets.layout.HorizontalLayout;
/**
* Classe implémentant un filtre qui permet de rechercher une image 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;
private Button boutonRechercher = null;
private final int KEY_ENTER = 13;
/**
* 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();
setLayout(new HorizontalLayout(3));
setPaddings(5);
setCollapsible(true);
setBorder(false);
iMediateur = im;
boutonRechercher = new Button("OK");
// 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);
add(boutonRechercher);
}
/**
* Ajoute les listeners
*/
public void ajouterListeners() {
boutonRechercher.addListener(new ButtonListenerAdapter() {
public void onClick(Button button, EventObject e) {
valider();
iMediateur.obtenirPhotoGalerie(iMediateur.getGalerieImage());
}
});
filtreDate.addKeyPressListener(new EventCallback() {
public void execute(EventObject e) {
switch(e.getKey()) {
case KEY_ENTER:
valider();
iMediateur.obtenirPhotoGalerie(iMediateur.getGalerieImage());
break;
}
}
});
}
/**
* 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;
}
public void viderFiltre() {
filtreDate.setValue("");
}
}