Rev 669 | 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.interfaces.Filtrable;
import org.tela_botanica.client.interfaces.Rafraichissable;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Label;
import com.gwtext.client.core.EventCallback;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.widgets.BoxComponent;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Container;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ButtonListener;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.event.ContainerListener;
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
import com.gwtext.client.widgets.event.KeyListener;
import com.gwtext.client.widgets.form.TextField;
import com.gwtext.client.widgets.layout.HorizontalLayout;
import com.gwtext.client.widgets.menu.Menu;
/**
* Fenêtre de recherche pour les mots clés, contenant un champ texte, et un
* bouton cliquable
*
* @author aurelien
*
*/
public class BarreRechercheFiltreVue extends Panel implements Rafraichissable,
Filtrable {
/**
* Médiateur associé à la vue
*/
private ImageMediateur iMediateur = null;
/**
* Barre de recherche
*
*/
private TextField champRecherche = null;
/**
* Booleen d'etat du filtre
*/
private boolean filtreModifie = false;
private Button boutonRechercher = null;
/**
* mot(s) à chercher
*/
private String motsAChercher = "";
private final int KEY_ENTER = 13;
/**
* Constructeur sans argument (privé car ne doit pas être utilisé)
*/
@SuppressWarnings("unused")
private BarreRechercheFiltreVue() {
super();
}
/**
* Constructeur avec médiateur
*
* @param im
*/
public BarreRechercheFiltreVue(ImageMediateur im) {
super();
setLayout(new HorizontalLayout(3));
iMediateur = im;
champRecherche = new TextField();
boutonRechercher = new Button("OK");
add(champRecherche);
add(boutonRechercher);
setPaddings(5);
setBorder(false);
setAutoWidth(true);
setCollapsible(true);
ajouterListeners();
}
/**
* ajoute des listeners
*/
public void ajouterListeners() {
boutonRechercher.addListener(new ButtonListenerAdapter() {
public void onClick(Button button, EventObject e) {
valider();
iMediateur.obtenirPhotoGalerie(iMediateur.getGalerieImage());
}
});
champRecherche.addKeyPressListener(new EventCallback() {
public void execute(EventObject e) {
switch(e.getKey()) {
case KEY_ENTER:
valider();
iMediateur.obtenirPhotoGalerie(iMediateur.getGalerieImage());
break;
}
}
});
}
/**
* Fonction héritée de l'interface rafraichissable
*/
public void rafraichir(Object nouvelleDonnees,
boolean repandreRaffraichissement) {
filtreModifie = false;
}
/**
* renvoie l'état du filtre (modifié ou non)
*
* @return l'état du filtre
*/
public boolean renvoyerEtatFiltre() {
return filtreModifie;
}
/**
* Renvoie le nom du filtre
*
* @return le nom du filtre
*/
public String renvoyerNomFiltre() {
return "Recherche Commentaires";
}
/**
* Renvoie un tableau contenant le nom du champ à filtrer et la valeur
*
* @return un tableau contenant le nom du champ à filtrer et sa valeur
*/
public String[] renvoyerValeursAFiltrer() {
valider() ;
String[] valeurFiltre = { "ci_recherche_generale", motsAChercher };
return valeurFiltre;
}
/**
* Accesseur pour le médiateur
*
* @return le médiateur associé
*/
public ImageMediateur getIMediateur() {
return iMediateur;
}
/**
* Effectue quelque opérations dans la classe et envoie une requête de
* données au médiateur
*/
public void valider() {
filtreModifie = true;
motsAChercher = champRecherche.getText();
}
/**
* Affiche la fenetre
*/
public void afficherFiltre() {
champRecherche.setValue(motsAChercher);
}
public void viderFiltre() {
champRecherche.setValue("");
}
}