Rev 965 | Blame | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues.image.filtres;
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;
import com.gwtext.client.core.Ext;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
import com.gwtext.client.widgets.layout.RowLayout;
import com.gwtext.client.widgets.layout.RowLayoutData;
/**
* Panneau contenant les filtres qu'on peut appliquer aux images
*
* @author aurelien
*
*/
public class PanneauFiltresImagesVues extends Panel {
/**
* Le médiateur associé
*/
private ImageMediateur iMediateur = null;
/**
* L'arbre pour la recherche par mots clés
*/
private ArbreMotsClesFiltreVue motsClesFiltres = null;
/**
* L'arbre pour la recherche par mots clés
*/
private ArbreDateImageFiltreVue arbreDateImageFiltreVue = null;
/**
* La barre de recherche libre
*/
private BarreRechercheFiltreVue rechercheLibreFiltreVue = null;
/**
* Recherche par contenu du tampon
*/
private SelectionFiltreVue selectionFiltreVue = null;
/**
* Bouton de validation
*/
private Button valider = null;
/**
* Construcuteur sans argument (privé car on ne doit pas l'utiliser)
*/
@SuppressWarnings("unused")
private PanneauFiltresImagesVues() {
super();
}
/**
* Constructeur avec arguments
*
* @param im
* le médiateur à associer
*/
public PanneauFiltresImagesVues(ImageMediateur im) {
super("Filtres");
iMediateur = im;
this.setCollapsible(true);
setLayout(new RowLayout());
rechercheLibreFiltreVue = new BarreRechercheFiltreVue(im);
rechercheLibreFiltreVue.setTitle("Recherche libre");
rechercheLibreFiltreVue.setCollapsible(true);
add(rechercheLibreFiltreVue, new RowLayoutData());
if(Ext.isIE()) {
add(rechercheLibreFiltreVue);
rechercheLibreFiltreVue.setHeight(110);
} else {
add(rechercheLibreFiltreVue,new RowLayoutData(100));
}
arbreDateImageFiltreVue = new ArbreDateImageFiltreVue(im) ;
arbreDateImageFiltreVue.setWidth("100%") ;
arbreDateImageFiltreVue.setBorder(false);
add(arbreDateImageFiltreVue, new RowLayoutData());
motsClesFiltres = new ArbreMotsClesFiltreVue(im);
motsClesFiltres.setTitle("Mots clés");
motsClesFiltres.setAutoScroll(true);
add(motsClesFiltres, new RowLayoutData());
selectionFiltreVue = new SelectionFiltreVue(im);
addListener(new ContainerListenerAdapter() {
@Override
public void onRender(Component component) {
// TODO Auto-generated method stub
rechercheLibreFiltreVue.ajouterListeners();
arbreDateImageFiltreVue.ajouterListeners();
}
});
}
/**
* Accesseur pour le filtre des mots clés
*
* @return le filtre des mots clés
*/
public ArbreMotsClesFiltreVue getMotsClesFiltre() {
return motsClesFiltres;
}
/**
* Accesseur pour le filtre général
*
* @return le filtre général
*/
public BarreRechercheFiltreVue getBarreRecherche() {
return rechercheLibreFiltreVue;
}
/**
* Accesseur pour le filtre des dates
*
* @return le filtre des dates
*/
public ArbreDateImageFiltreVue getArbreDateRecherche() {
return arbreDateImageFiltreVue;
}
/**
* Renvoie un booléen indiquant si un des filtres a été modifié
*
* @return true sur un des filtres est modifié, false sinon
*/
public boolean renvoyerEtatFiltre() {
return (motsClesFiltres.renvoyerEtatFiltre()
|| rechercheLibreFiltreVue.renvoyerEtatFiltre()
|| arbreDateImageFiltreVue.renvoyerEtatFiltre()
|| selectionFiltreVue.renvoyerEtatFiltre());
}
/**
* Renvoie un tableau à 2 niveaux contenant des paires "nom_de_filtre",
* "valeur"
*
* @return un tableau contenant les noms et les valeurs à filtrer
*/
public String[][] renvoyerValeursAFiltrer() {
String[] filtresDates = arbreDateImageFiltreVue.renvoyerValeursAFiltrer();
int lgSup = 0;
if(filtresDates.length > 0) {
String[] nomFiltresDates = filtresDates[0].split(",");
String[] valFiltresDates = filtresDates[1].split(",");
lgSup = Math.max(nomFiltresDates.length, valFiltresDates.length);
}
String[][] filtres = new String[3 + lgSup][2];
for(int i=3; i < filtres.length; i++) {
filtres[i][0] = filtresDates[0].split(",")[i - 3];
filtres[i][1] = filtresDates[1].split(",")[i -3];
}
filtres[0] = motsClesFiltres.renvoyerValeursAFiltrer();
filtres[1] = rechercheLibreFiltreVue.renvoyerValeursAFiltrer();
filtres[2] = selectionFiltreVue.renvoyerValeursAFiltrer();
return filtres;
}
public void viderFiltres() {
motsClesFiltres.viderFiltre();
rechercheLibreFiltreVue.viderFiltre();
arbreDateImageFiltreVue.viderFiltre();
selectionFiltreVue.viderFiltre();
}
public void viderFiltre(String nom) {
if(nom.equals("id_mots_cles")) {
motsClesFiltres.viderFiltre();
}
if(nom.equals("recherche")) {
rechercheLibreFiltreVue.viderFiltre();
}
if(nom.equals("annee") || nom.equals("mois") || nom.equals("jour")) {
arbreDateImageFiltreVue.viderFiltre(nom);
}
if(nom.equals("ci_id_tampon")) {
selectionFiltreVue.viderFiltre();
}
}
}