Subversion Repositories eFlore/Applications.cel

Rev

Details | Last modification | View Log | RSS feed

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