Subversion Repositories eFlore/Applications.cel

Rev

Rev 723 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
669 aurelien 1
package org.tela_botanica.client.vues.image.filtres;
2 aperonnet 2
 
3
import org.tela_botanica.client.image.ImageMediateur;
195 david 4
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;
638 aurelien 5
import org.tela_botanica.client.vues.observation.filtres.ArbreDateObservationFiltreVue;
2 aperonnet 6
 
638 aurelien 7
import com.google.gwt.core.client.GWT;
8
import com.google.gwt.core.client.JavaScriptObject;
680 aurelien 9
import com.google.gwt.user.client.Window;
2 aperonnet 10
import com.gwtext.client.core.EventObject;
318 aurelien 11
import com.gwtext.client.core.Ext;
638 aurelien 12
import com.gwtext.client.widgets.BoxComponent;
2 aperonnet 13
import com.gwtext.client.widgets.Button;
638 aurelien 14
import com.gwtext.client.widgets.Component;
15
import com.gwtext.client.widgets.Container;
2 aperonnet 16
import com.gwtext.client.widgets.Panel;
17
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
638 aurelien 18
import com.gwtext.client.widgets.event.ContainerListener;
19
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
20
import com.gwtext.client.widgets.layout.RowLayout;
21
import com.gwtext.client.widgets.layout.RowLayoutData;
2 aperonnet 22
import com.gwtext.client.widgets.layout.VerticalLayout;
23
 
24
/**
25
 * Panneau contenant les filtres qu'on peut appliquer aux images
5 aperonnet 26
 *
2 aperonnet 27
 * @author aurelien
5 aperonnet 28
 *
2 aperonnet 29
 */
99 jpm 30
public class PanneauFiltresImagesVues extends Panel {
2 aperonnet 31
 
32
	/**
33
	 * Le médiateur associé
34
	 */
5 aperonnet 35
	private ImageMediateur iMediateur = null;
36
 
2 aperonnet 37
	/**
38
	 * L'arbre pour la recherche par mots clés
39
	 */
5 aperonnet 40
	private ArbreMotsClesFiltreVue motsClesFiltres = null;
638 aurelien 41
 
2 aperonnet 42
	/**
638 aurelien 43
	 * L'arbre pour la recherche par mots clés
44
	 */
45
	private ArbreDateImageFiltreVue arbreDateImageFiltreVue = null;
46
 
47
	/**
2 aperonnet 48
	 * La barre de recherche par commentaires
49
	 */
638 aurelien 50
	private BarreRechercheFiltreVue rechercheLibreFiltreVue = null;
5 aperonnet 51
 
2 aperonnet 52
	/**
5 aperonnet 53
	 * Recherche par date
2 aperonnet 54
	 */
5 aperonnet 55
	private DateFiltreVue dateFiltreVues = null;
56
 
2 aperonnet 57
	/**
5 aperonnet 58
	 * Recherche par contenu du tampon
59
	 */
60
	private SelectionFiltreVue selectionFiltreVue = null;
61
 
62
	/**
2 aperonnet 63
	 * Bouton de validation
64
	 */
5 aperonnet 65
	private Button valider = null;
66
 
2 aperonnet 67
	/**
68
	 * Construcuteur sans argument (privé car on ne doit pas l'utiliser)
69
	 */
70
	@SuppressWarnings("unused")
99 jpm 71
	private PanneauFiltresImagesVues() {
5 aperonnet 72
		super();
2 aperonnet 73
	}
5 aperonnet 74
 
2 aperonnet 75
	/**
76
	 * Constructeur avec arguments
5 aperonnet 77
	 *
78
	 * @param im
79
	 *            le médiateur à associer
2 aperonnet 80
	 */
99 jpm 81
	public PanneauFiltresImagesVues(ImageMediateur im) {
638 aurelien 82
 
167 aurelien 83
		super("Filtres");
5 aperonnet 84
		iMediateur = im;
318 aurelien 85
 
5 aperonnet 86
		this.setCollapsible(true);
638 aurelien 87
		setLayout(new RowLayout());
5 aperonnet 88
 
638 aurelien 89
		rechercheLibreFiltreVue = new BarreRechercheFiltreVue(im);
90
		rechercheLibreFiltreVue.setTitle("Recherche libre");
91
		rechercheLibreFiltreVue.setCollapsible(true);
92
		add(rechercheLibreFiltreVue, new RowLayoutData());
93
 
94
		if(Ext.isIE()) {
95
			add(rechercheLibreFiltreVue);
96
			rechercheLibreFiltreVue.setHeight(110);
97
		} else {
98
			add(rechercheLibreFiltreVue,new RowLayoutData(100));
99
		}
5 aperonnet 100
 
638 aurelien 101
		arbreDateImageFiltreVue = new ArbreDateImageFiltreVue(im) ;
102
		arbreDateImageFiltreVue.setWidth("100%") ;
103
		arbreDateImageFiltreVue.setBorder(false);
104
		add(arbreDateImageFiltreVue, new RowLayoutData());
5 aperonnet 105
 
106
		motsClesFiltres = new ArbreMotsClesFiltreVue(im);
638 aurelien 107
		motsClesFiltres.setTitle("Mots clés");
108
		motsClesFiltres.setAutoScroll(true);
109
		add(motsClesFiltres, new RowLayoutData());
5 aperonnet 110
 
638 aurelien 111
		selectionFiltreVue = new SelectionFiltreVue(im);
112
 
113
		addListener(new ContainerListenerAdapter() {
5 aperonnet 114
 
638 aurelien 115
			public void onRender(Component component) {
116
				// TODO Auto-generated method stub
2 aperonnet 117
 
638 aurelien 118
				rechercheLibreFiltreVue.ajouterListeners();
119
				arbreDateImageFiltreVue.ajouterListeners();
2 aperonnet 120
			}
5 aperonnet 121
		});
2 aperonnet 122
	}
5 aperonnet 123
 
2 aperonnet 124
	/**
125
	 * Accesseur pour le filtre des mots clés
5 aperonnet 126
	 *
2 aperonnet 127
	 * @return le filtre des mots clés
128
	 */
5 aperonnet 129
	public ArbreMotsClesFiltreVue getMotsClesFiltre() {
130
		return motsClesFiltres;
2 aperonnet 131
	}
5 aperonnet 132
 
2 aperonnet 133
	/**
638 aurelien 134
	 * Accesseur pour le filtre général
5 aperonnet 135
	 *
638 aurelien 136
	 * @return le filtre général
2 aperonnet 137
	 */
5 aperonnet 138
	public BarreRechercheFiltreVue getBarreRecherche() {
638 aurelien 139
		return rechercheLibreFiltreVue;
2 aperonnet 140
	}
723 aurelien 141
 
142
	/**
143
	 * Accesseur pour le filtre des dates
144
	 *
145
	 * @return le filtre des dates
146
	 */
147
	public ArbreDateImageFiltreVue getArbreDateRecherche() {
148
		return arbreDateImageFiltreVue;
149
	}
2 aperonnet 150
 
151
	/**
152
	 * Renvoie un booléen indiquant si un des filtres a été modifié
5 aperonnet 153
	 *
2 aperonnet 154
	 * @return true sur un des filtres est modifié, false sinon
155
	 */
156
	public boolean renvoyerEtatFiltre() {
5 aperonnet 157
 
158
		return (motsClesFiltres.renvoyerEtatFiltre()
638 aurelien 159
				|| rechercheLibreFiltreVue.renvoyerEtatFiltre()
160
				|| arbreDateImageFiltreVue.renvoyerEtatFiltre()
5 aperonnet 161
				|| selectionFiltreVue.renvoyerEtatFiltre());
2 aperonnet 162
	}
5 aperonnet 163
 
2 aperonnet 164
	/**
5 aperonnet 165
	 * Renvoie un tableau à 2 niveaux contenant des paires "nom_de_filtre",
166
	 * "valeur"
167
	 *
2 aperonnet 168
	 * @return un tableau contenant les noms et les valeurs à filtrer
169
	 */
5 aperonnet 170
	public String[][] renvoyerValeursAFiltrer() {
171
 
638 aurelien 172
		String[] filtresDates = arbreDateImageFiltreVue.renvoyerValeursAFiltrer();
173
 
174
		int lgSup = 0;
175
 
176
		if(filtresDates.length > 0) {
177
			String[] nomFiltresDates = filtresDates[0].split(",");
178
			String[] valFiltresDates = filtresDates[1].split(",");
179
			lgSup = Math.max(nomFiltresDates.length, valFiltresDates.length);
180
		}
181
 
182
		String[][] filtres = new String[3 + lgSup][2];
183
 
184
		for(int i=3; i < filtres.length; i++) {
185
			filtres[i][0] = filtresDates[0].split(",")[i - 3];
186
			filtres[i][1] = filtresDates[1].split(",")[i -3];
187
		}
188
 
189
		filtres[0] = motsClesFiltres.renvoyerValeursAFiltrer();
190
		filtres[1] = rechercheLibreFiltreVue.renvoyerValeursAFiltrer();
191
		filtres[2] = selectionFiltreVue.renvoyerValeursAFiltrer();
192
 
5 aperonnet 193
		return filtres;
2 aperonnet 194
	}
195
 
680 aurelien 196
	public void viderFiltres() {
197
		motsClesFiltres.viderFiltre();
198
		rechercheLibreFiltreVue.viderFiltre();
199
		arbreDateImageFiltreVue.viderFiltre();
200
		selectionFiltreVue.viderFiltre();
201
	}
202
 
203
	public void viderFiltre(String nom) {
204
 
205
		if(nom.equals("ci_meta_mots_cles")) {
206
			motsClesFiltres.viderFiltre();
207
		}
208
 
209
		if(nom.equals("ci_recherche_generale")) {
210
			rechercheLibreFiltreVue.viderFiltre();
211
		}
212
 
213
		if(nom.equals("annee") || nom.equals("mois") || nom.equals("jour")) {
214
			arbreDateImageFiltreVue.viderFiltre(nom);
215
		}
216
 
217
		if(nom.equals("ci_id_tampon")) {
218
			selectionFiltreVue.viderFiltre();
219
		}
220
 
221
	}
222
 
2 aperonnet 223
}