New file |
0,0 → 1,98 |
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 rapide : "); |
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; |
} |
} |