Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 aperonnet 1
package org.tela_botanica.client.vues;
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.interfaces.Filtrable;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
 
7
import com.google.gwt.user.client.ui.Label;
8
import com.gwtext.client.widgets.Panel;
9
import com.gwtext.client.widgets.form.DateField;
10
 
11
/**
7 aperonnet 12
 * Classe implémentant un filtre qui permet de rechercher une image par rapport
5 aperonnet 13
 * à la date associée, des critères plus fins viendront compléter cela
14
 *
2 aperonnet 15
 * @author aurelien
5 aperonnet 16
 *
2 aperonnet 17
 */
18
public class DateFiltreVue extends Panel implements Rafraichissable, Filtrable {
19
 
20
	/**
21
	 * Le médiateur associé à la vue
22
	 */
5 aperonnet 23
	private ImageMediateur iMediateur = null;
24
 
2 aperonnet 25
	/**
26
	 * Le widget calendrier
27
	 */
5 aperonnet 28
	private DateField filtreDate = null;
2 aperonnet 29
 
30
	/**
31
	 * Booleen d'état du filtre
32
	 */
5 aperonnet 33
	private boolean filtreModifie = false;
2 aperonnet 34
 
35
	/**
36
	 * Constructeur sans argument (privé car ne doit pas être utilisé)
37
	 */
38
	@SuppressWarnings("unused")
5 aperonnet 39
	private DateFiltreVue() {
40
		super();
2 aperonnet 41
	}
5 aperonnet 42
 
2 aperonnet 43
	/**
44
	 * Constructeur avec arguments
5 aperonnet 45
	 *
46
	 * @param im
47
	 *            le médiateur à associer
2 aperonnet 48
	 */
5 aperonnet 49
	public DateFiltreVue(ImageMediateur im) {
50
		super();
51
		setPaddings(5);
52
		setCollapsible(true);
53
		setBorder(false);
54
		iMediateur = im;
55
 
168 aurelien 56
		Label labelRecherche = new Label("Par date :");
5 aperonnet 57
		add(labelRecherche);
58
 
59
		// on crée le calendrier et on définit le format de la date "jj/mm/aaaa"
60
		filtreDate = new DateField();
61
		filtreDate.setAutoWidth(true);
62
		filtreDate.setFormat("d/m/Y");
63
 
2 aperonnet 64
		add(filtreDate);
5 aperonnet 65
		ajouterListeners();
2 aperonnet 66
	}
5 aperonnet 67
 
2 aperonnet 68
	/**
69
	 * Ajoute les listeners
70
	 */
5 aperonnet 71
	public void ajouterListeners() {
72
 
2 aperonnet 73
	}
5 aperonnet 74
 
2 aperonnet 75
	/**
76
	 * Méthode héritée de l'interface rafraichissable
77
	 */
78
	public void rafraichir(Object nouvelleDonnees,
79
			boolean repandreRaffraichissement) {
5 aperonnet 80
 
81
		filtreModifie = false;
82
 
2 aperonnet 83
	}
5 aperonnet 84
 
2 aperonnet 85
	/**
86
	 * Méthode héritée de l'interface filtrable
87
	 */
88
	public void valider() {
5 aperonnet 89
 
90
		filtreModifie = true;
91
 
2 aperonnet 92
	}
93
 
94
	/**
95
	 * Accesseur pour le médiateur
5 aperonnet 96
	 *
2 aperonnet 97
	 * @return le médiateur associé à la vue
98
	 */
99
	@SuppressWarnings("unused")
100
	private ImageMediateur getIMediateur() {
5 aperonnet 101
 
102
		return iMediateur;
2 aperonnet 103
	}
104
 
105
	/**
106
	 * Méthode héritée de l'interface filtrable
107
	 */
108
	public boolean renvoyerEtatFiltre() {
5 aperonnet 109
 
110
		return filtreModifie;
2 aperonnet 111
	}
112
 
113
	/**
114
	 * Méthode héritée de l'interface filtrable
115
	 */
116
	public String renvoyerNomFiltre() {
5 aperonnet 117
 
118
		return "Recherche par date";
2 aperonnet 119
	}
120
 
121
	/**
122
	 * Méthode héritée de l'interface filtrable
123
	 */
124
	public String[] renvoyerValeursAFiltrer() {
5 aperonnet 125
 
2 aperonnet 126
		// si la date est valide
5 aperonnet 127
		if (filtreDate.isValid()) {
2 aperonnet 128
			// on en sépare les composants
5 aperonnet 129
			String dt = filtreDate.getRawValue();
130
			String[] dates = dt.split("/");
131
			if (dates.length == 3) {
132
				// qu'on réassemble dans un autre format (américain) pour la
133
				// base de donnée "aaaa-mm-jj"
134
				String dateFormatee = dates[2] + "-" + dates[1] + "-"
135
						+ dates[0];
136
				String[] valeursFiltres = { "ci_meta_date", dateFormatee };
137
				return valeursFiltres;
2 aperonnet 138
			}
139
		}
5 aperonnet 140
 
141
		// si la date n'estp as valide on renvoie une chaine vide (ce qui
142
		// correspond à n'importe qu'elle date)
143
		String dateFormatee = "";
144
		String[] valeursFiltres = { "ci_meta_date", dateFormatee };
145
		return valeursFiltres;
146
 
2 aperonnet 147
	}
148
 
149
}