4,6 → 4,8 |
import java.util.Iterator; |
import java.util.List; |
|
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur; |
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.modeles.Observation; |
import org.tela_botanica.del.client.utils.MockDatasource; |
28,24 → 30,7 |
public class RechercheObservationsPresenteur extends Presenteur { |
|
public abstract interface Vue extends IsWidget { |
public HasClickHandlers getRecherchePrincipaleHasClickHandler(); |
public HasKeyPressHandlers getRecherchePrincipaleHasKeyPressHandlers(); |
public HasText getRecherchePrincipaleHasText(); |
public HasText getDepartement(); |
public HasText getCommune(); |
public HasText getTaxon(); |
public HasText getFamille(); |
public HasText getGenre(); |
public HasText getTag(); |
public HasText getMotCle(); |
public HasText getAuteur(); |
public HasText getDate(); |
public HasClickHandlers getBoutonRecherche(); |
public HasClickHandlers getBoutonRechercheAvancee(); |
public HasClickHandlers getLienRechercheAvancee(); |
public HasText getRecherchePrecedente(); |
public HasWidgets getRechercheAvanceeHasWidget(); |
public HasVisibility getRechercheAvanceeHasVisibility(); |
public HasWidgets getZoneRecherche(); |
public HasWidgets getZoneObservations(); |
public HasWidgets getZonePagination(); |
} |
62,6 → 47,7 |
composite = RootPanel.get(); |
} |
composite.add(vue.asWidget()); |
ajouterMoteurRechercheAvancee(); |
gererEvenements(); |
|
// On commence par afficher la totalité des observations |
68,104 → 54,26 |
chercherObservations(null); |
afficherObservations(); |
} |
|
protected void gererEvenements() { |
|
// Gestion du clic dans la zone de saisie |
vue.getRecherchePrincipaleHasClickHandler().addClickHandler(new ClickHandler() { |
|
public void onClick(ClickEvent event) { |
HasText recherchePrincipale = (HasText) event.getSource(); |
if (recherchePrincipale.getText().equals("Recherche libre")) { |
recherchePrincipale.setText(""); |
} |
} |
}); |
|
// Gestion de l'affichage de la recherche Avancée |
vue.getLienRechercheAvancee().addClickHandler(new ClickHandler() { |
|
public void onClick(ClickEvent event) { |
HasVisibility rechercheAvancee = vue.getRechercheAvanceeHasVisibility(); |
rechercheAvancee.setVisible(!rechercheAvancee.isVisible()); |
} |
}); |
|
// Gestion de l'évènement recherche sur le clic ou sur l'appui de la |
// touche Entrée |
vue.getBoutonRecherche().addClickHandler(new ClickHandler() { |
|
public void onClick(ClickEvent event) { |
chercherObservations(collecterFormulaire()); |
|
protected void ajouterMoteurRechercheAvancee() { |
MoteurRecherchePresenteur presenteur = new MoteurRecherchePresenteur(new MoteurRechercheVue("Rechercher une observation"){}) { |
|
@Override |
public void lancerRecherche(String termeRecherche) { |
chercherObservations(null); |
afficherObservations(); |
} |
}); |
|
vue.getBoutonRechercheAvancee().addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
chercherObservations(collecterFormulaire()); |
afficherObservations(); |
} |
}); |
|
vue.getRecherchePrincipaleHasKeyPressHandlers().addKeyPressHandler(new KeyPressHandler() { |
|
public void onKeyPress(KeyPressEvent event) { |
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) { |
chercherObservations(collecterFormulaire()); |
afficherObservations(); |
} |
} |
}); |
}; |
presenteur.go(vue.getZoneRecherche()); |
} |
|
// Gestion de la recherche d'observations : |
public HashMap<String, String> collecterFormulaire() { |
protected void gererEvenements() {} |
|
HashMap<String, String> champsRecherche = new HashMap<String, String>(); |
|
if (!vue.getRecherchePrincipaleHasText().getText().equals("")) { |
champsRecherche.put("search", vue.getRecherchePrincipaleHasText().getText()); |
} |
if (!vue.getDepartement().getText().equals("")) { |
champsRecherche.put("dept", vue.getDepartement().getText()); |
} |
if (!vue.getCommune().getText().equals("")) { |
champsRecherche.put("com", vue.getCommune().getText()); |
} |
if (!vue.getTaxon().getText().equals("")) { |
champsRecherche.put("taxon", vue.getTaxon().getText()); |
} |
if (!vue.getFamille().getText().equals("")) { |
champsRecherche.put("fam", vue.getFamille().getText()); |
} |
if (!vue.getGenre().getText().equals("")) { |
champsRecherche.put("gen", vue.getGenre().getText()); |
} |
if (!vue.getTag().getText().equals("")) { |
champsRecherche.put("tag", vue.getTag().getText()); |
} |
if (!vue.getMotCle().getText().equals("")) { |
champsRecherche.put("motCle", vue.getMotCle().getText()); |
} |
if (!vue.getAuteur().getText().equals("")) { |
champsRecherche.put("auteur", vue.getAuteur().getText()); |
} |
if (!vue.getDate().getText().equals("")) { |
champsRecherche.put("date", vue.getDate().getText()); |
} |
return champsRecherche; |
} |
|
public void chercherObservations(HashMap<String, String> champsRecherche) { |
|
vue.getRechercheAvanceeHasVisibility().setVisible(false); |
this.observations = MockDatasource.getInstance().getObservations(champsRecherche); |
vue.getRecherchePrecedente().setText(getChaineRecherche(champsRecherche)); |
} |
|
public void afficherObservations() { |
|
vue.getZoneObservations().clear(); |
for (Observation observation : observations) { |
ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation); |
173,18 → 81,4 |
} |
} |
|
private String getChaineRecherche(HashMap<String, String> valeursRecherche) { |
String chaineRecherche = ""; |
if (valeursRecherche != null) { |
Iterator<String> itCles = valeursRecherche.keySet().iterator(); |
while (itCles.hasNext()) { |
String cle = itCles.next(); |
String valeur = valeursRecherche.get(cle); |
if (valeur != "") { |
chaineRecherche += cle + ":=" + valeur + " "; |
} |
} |
} |
return chaineRecherche; |
} |
} |