Subversion Repositories eFlore/Applications.cel

Rev

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