Subversion Repositories eFlore/Applications.cel

Rev

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