Rev 1687 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.composants;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.ListePaginable;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.KeyListener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.event.dom.client.KeyCodes;
public class ChampFiltreRecherche {
private ListePaginable listePaginable;
private Mediateur mediateur;
private ToolBar parent;
private TextField<String> filtre;
private Button annulerFiltre;
private boolean filtreActive = false;
private String termeRecherche = "";
private Text labelFiltre;
public ChampFiltreRecherche(Mediateur mediateur, ToolBar parent, ListePaginable listePaginable) {
//Séparation
this.mediateur = mediateur;
this.parent = parent;
this.listePaginable = listePaginable;
parent.add(new SeparatorToolItem());
labelFiltre = new Text("Recherche : ");
labelFiltre.setStyleAttribute("padding-right", "5px");
parent.add(labelFiltre);
filtre = new TextField<String>();
filtre.setWidth(150);
parent.add(filtre);
annulerFiltre = new Button();
annulerFiltre.setIcon(Images.ICONES.annuler());
annulerFiltre.setVisible(false);
parent.add(annulerFiltre);
parent.add(new FillToolItem());
ajouterListeners();
}
private void ajouterListeners() {
annulerFiltre.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent ce) {
filtre.setValue("");
termeRecherche = "";
filtreActive = false;
listePaginable.filtrerParNom("");
labelFiltre.setStyleAttribute("font-weight", "normal");
changerEtat();
}
});
filtre.addKeyListener(new KeyListener(){
public void componentKeyUp(ComponentEvent ce) {
if (ce.getKeyCode() == KeyCodes.KEY_ENTER) {
termeRecherche = filtre.getValue();
if (termeRecherche == null || termeRecherche.equals("")) {
filtreActive = false;
labelFiltre.setStyleAttribute("font-weight", "normal");
termeRecherche= "";
listePaginable.filtrerParNom("");
changerEtat();
} else {
listePaginable.filtrerParNom(termeRecherche);
labelFiltre.setStyleAttribute("font-weight", "bold");
filtreActive = true;
changerEtat();
}
}
}
});
}
private void changerEtat() {
if (filtreActive == true) {
annulerFiltre.setVisible(true);
} else {
annulerFiltre.setVisible(false);
}
}
public void setListePaginable(ListePaginable listePaginable) {
this.listePaginable = listePaginable;
}
public String getFiltreValue() {
return filtre.getValue();
}
}