Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 308 → Rev 309

/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationVue.java
10,7 → 10,7
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
public class ObservationVue extends Composite {
public class ObservationVue extends Composite implements ObservationPresenteur.Vue {
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, ObservationVue> {
24,6 → 24,46
@UiField
protected FlexTable tableauPropositions;
 
public Label getAuteur() {
return auteur;
}
 
public Label getDate() {
return date;
}
 
public Label getFamille() {
return famille;
}
 
public Label getLocalite() {
return localite;
}
 
public Label getMotsClefs() {
return motsClefs;
}
 
public Label getNomRetenu() {
return nomRetenu;
}
 
public Label getNumNomenclatural() {
return numNomenclatural;
}
 
public FlexTable getTableauPropositions() {
return tableauPropositions;
}
 
public Image getPhotoPrincipale() {
return photoPrincipale;
}
 
public Panel getPhotos() {
return photos;
}
 
@UiField
protected Image photoPrincipale;
 
33,4 → 73,39
public ObservationVue() {
initWidget(binder.createAndBindUi(this));
}
 
@Override
public void setUrlImagePrincipale(String url) {
photoPrincipale.setUrl(url);
}
 
@Override
public void setTitreImagePrincipale(String titre) {
photoPrincipale.setTitle(titre);
}
 
@Override
public void setAltTextImagePrincipale(String altText) {
photoPrincipale.setAltText(altText);
}
 
@Override
public String getUrlImagePrincipale() {
return photoPrincipale.getUrl();
}
 
@Override
public String getTitreImagePrincipale() {
return photoPrincipale.getTitle();
}
 
@Override
public String getAltTextImagePrincipale() {
return photoPrincipale.getAltText();
}
 
@Override
public void setTexteTableau(int ligne, int colonne, String texte) {
tableauPropositions.setText(ligne, colonne, texte);
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/RechercheObservationsPresenteur.java
10,10 → 10,17
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasVisibility;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
20,10 → 27,34
 
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 getZoneObservations();
public HasWidgets getZonePagination();
}
private Vue vue;
private List<Observation> observations;
 
public RechercheObservationsPresenteur() {
super(new RechercheObservationsVue());
public RechercheObservationsPresenteur(Vue vue) {
this.vue = vue;
}
 
public void go(HasWidgets composite) {
30,7 → 61,7
if (composite == null) {
composite = RootPanel.get();
}
composite.add(this.getVue());
composite.add(vue.asWidget());
gererEvenements();
 
// On commence par afficher la totalité des observations
40,13 → 71,11
 
protected void gererEvenements() {
 
RechercheObservationsVue vue = (RechercheObservationsVue) getVue();
 
// Gestion du clic dans la zone de saisie
vue.recherchePrincipale.addClickHandler(new ClickHandler() {
vue.getRecherchePrincipaleHasClickHandler().addClickHandler(new ClickHandler() {
 
public void onClick(ClickEvent event) {
TextBox recherchePrincipale = (TextBox) event.getSource();
HasText recherchePrincipale = (HasText) event.getSource();
if (recherchePrincipale.getText().equals("Recherche libre")) {
recherchePrincipale.setText("");
}
54,10 → 83,10
});
 
// Gestion de l'affichage de la recherche Avancée
vue.lienRechercheAvancee.addClickHandler(new ClickHandler() {
vue.getLienRechercheAvancee().addClickHandler(new ClickHandler() {
 
public void onClick(ClickEvent event) {
Panel rechercheAvancee = ((RechercheObservationsVue) getVue()).rechercheAvancee;
HasVisibility rechercheAvancee = vue.getRechercheAvanceeHasVisibility();
rechercheAvancee.setVisible(!rechercheAvancee.isVisible());
}
});
64,7 → 93,7
 
// Gestion de l'évènement recherche sur le clic ou sur l'appui de la
// touche Entrée
vue.boutonRecherche.addClickHandler(new ClickHandler() {
vue.getBoutonRecherche().addClickHandler(new ClickHandler() {
 
public void onClick(ClickEvent event) {
chercherObservations(collecterFormulaire());
72,7 → 101,7
}
});
 
vue.boutonRechercheAvancee.addClickHandler(new ClickHandler() {
vue.getBoutonRechercheAvancee().addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
chercherObservations(collecterFormulaire());
afficherObservations();
79,7 → 108,7
}
});
 
vue.recherchePrincipale.addKeyPressHandler(new KeyPressHandler() {
vue.getRecherchePrincipaleHasKeyPressHandlers().addKeyPressHandler(new KeyPressHandler() {
 
public void onKeyPress(KeyPressEvent event) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
92,39 → 121,38
 
// Gestion de la recherche d'observations :
public HashMap<String, String> collecterFormulaire() {
RechercheObservationsVue vue = (RechercheObservationsVue) getVue();
 
HashMap<String, String> champsRecherche = new HashMap<String, String>();
 
if (!vue.recherchePrincipale.getText().equals("")) {
champsRecherche.put("search", vue.recherchePrincipale.getText());
if (!vue.getRecherchePrincipaleHasText().getText().equals("")) {
champsRecherche.put("search", vue.getRecherchePrincipaleHasText().getText());
}
if (!vue.departement.getText().equals("")) {
champsRecherche.put("dept", vue.departement.getText());
if (!vue.getDepartement().getText().equals("")) {
champsRecherche.put("dept", vue.getDepartement().getText());
}
if (!vue.commune.getText().equals("")) {
champsRecherche.put("com", vue.commune.getText());
if (!vue.getCommune().getText().equals("")) {
champsRecherche.put("com", vue.getCommune().getText());
}
if (!vue.taxon.getText().equals("")) {
champsRecherche.put("taxon", vue.taxon.getText());
if (!vue.getTaxon().getText().equals("")) {
champsRecherche.put("taxon", vue.getTaxon().getText());
}
if (!vue.famille.getText().equals("")) {
champsRecherche.put("fam", vue.famille.getText());
if (!vue.getFamille().getText().equals("")) {
champsRecherche.put("fam", vue.getFamille().getText());
}
if (!vue.genre.getText().equals("")) {
champsRecherche.put("gen", vue.genre.getText());
if (!vue.getGenre().getText().equals("")) {
champsRecherche.put("gen", vue.getGenre().getText());
}
if (!vue.tag.getText().equals("")) {
champsRecherche.put("tag", vue.tag.getText());
if (!vue.getTag().getText().equals("")) {
champsRecherche.put("tag", vue.getTag().getText());
}
if (!vue.motCle.getText().equals("")) {
champsRecherche.put("motCle", vue.motCle.getText());
if (!vue.getMotCle().getText().equals("")) {
champsRecherche.put("motCle", vue.getMotCle().getText());
}
if (!vue.auteur.getText().equals("")) {
champsRecherche.put("auteur", vue.auteur.getText());
if (!vue.getAuteur().getText().equals("")) {
champsRecherche.put("auteur", vue.getAuteur().getText());
}
if (!vue.date.getText().equals("")) {
champsRecherche.put("date", vue.date.getText());
if (!vue.getDate().getText().equals("")) {
champsRecherche.put("date", vue.getDate().getText());
}
return champsRecherche;
}
131,19 → 159,17
 
public void chercherObservations(HashMap<String, String> champsRecherche) {
 
RechercheObservationsVue vue = (RechercheObservationsVue) getVue();
vue.rechercheAvancee.setVisible(false);
vue.getRechercheAvanceeHasVisibility().setVisible(false);
this.observations = MockDatasource.getInstance().getObservations(champsRecherche);
vue.recherchePrecedente.setText(getChaineRecherche(champsRecherche));
vue.getRecherchePrecedente().setText(getChaineRecherche(champsRecherche));
}
 
public void afficherObservations() {
RechercheObservationsVue vue = (RechercheObservationsVue) getVue();
 
vue.zoneObservations.clear();
vue.getZoneObservations().clear();
for (Observation observation : observations) {
ObservationPresenteur presenteur = new ObservationPresenteur(observation);
presenteur.go(vue.zoneObservations);
ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation);
presenteur.go(vue.getZoneObservations());
}
}
 
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/RechercheObservationsVue.java
1,16 → 1,21
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasVisibility;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
 
public class RechercheObservationsVue extends Composite {
public class RechercheObservationsVue extends Composite implements RechercheObservationsPresenteur.Vue {
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, RechercheObservationsVue> {
25,6 → 30,74
@UiField
protected Button boutonRecherche, boutonRechercheAvancee;
 
public TextBox getRecherchePrincipale() {
return recherchePrincipale;
}
 
public TextBox getDepartement() {
return departement;
}
 
public TextBox getCommune() {
return commune;
}
 
public TextBox getTaxon() {
return taxon;
}
 
public TextBox getFamille() {
return famille;
}
 
public TextBox getGenre() {
return genre;
}
 
public TextBox getTag() {
return tag;
}
 
public TextBox getMotCle() {
return motCle;
}
 
public TextBox getAuteur() {
return auteur;
}
 
public TextBox getDate() {
return date;
}
 
public Button getBoutonRecherche() {
return boutonRecherche;
}
 
public Button getBoutonRechercheAvancee() {
return boutonRechercheAvancee;
}
 
public Label getLienRechercheAvancee() {
return lienRechercheAvancee;
}
 
public Label getRecherchePrecedente() {
return recherchePrecedente;
}
 
public Panel getRechercheAvancee() {
return rechercheAvancee;
}
 
public Panel getZoneObservations() {
return zoneObservations;
}
 
public Panel getZonePagination() {
return zonePagination;
}
 
@UiField
protected Label lienRechercheAvancee, recherchePrecedente;
 
37,4 → 110,29
rechercheAvancee.setVisible(false);
}
 
@Override
public HasClickHandlers getRecherchePrincipaleHasClickHandler() {
return recherchePrincipale;
}
 
@Override
public HasKeyPressHandlers getRecherchePrincipaleHasKeyPressHandlers() {
return recherchePrincipale;
}
 
@Override
public HasText getRecherchePrincipaleHasText() {
return recherchePrincipale;
}
 
@Override
public HasWidgets getRechercheAvanceeHasWidget() {
return rechercheAvancee;
}
 
@Override
public HasVisibility getRechercheAvanceeHasVisibility() {
return rechercheAvancee;
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationPresenteur.java
9,25 → 9,51
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
 
public class ObservationPresenteur extends Presenteur {
public abstract interface Vue extends IsWidget {
public HasText getAuteur();
public HasText getDate();
public HasText getFamille();
public HasText getLocalite();
public HasText getMotsClefs();
public HasText getNomRetenu();
public HasText getNumNomenclatural();
public FlexTable getTableauPropositions();
public HasClickHandlers getPhotoPrincipale();
public HasWidgets getPhotos();
public void setUrlImagePrincipale(String url);
public void setTitreImagePrincipale(String titre);
public void setAltTextImagePrincipale(String altText);
public String getUrlImagePrincipale();
public String getTitreImagePrincipale();
public String getAltTextImagePrincipale();
public void setTexteTableau(int ligne, int colonne, String texte);
}
private Vue vue;
 
private Observation observation;
 
public ObservationPresenteur(Observation observation) {
super(new ObservationVue());
public ObservationPresenteur(Vue vue, Observation observation) {
this.observation = observation;
chargerObservation();
}
 
public void chargerObservation() {
ObservationVue vue = (ObservationVue) this.getVue();
vue.auteur.setText(observation.getAuteur());
vue.date.setText(observation.getDate());
vue.famille.setText(observation.getFamille());
vue.localite.setText(observation.getLocalite());
vue.getAuteur().setText(observation.getAuteur());
vue.getDate().setText(observation.getDate());
vue.getFamille().setText(observation.getFamille());
vue.getLocalite().setText(observation.getLocalite());
 
List<String> motsCles = observation.getMotsClefs();
Iterator<String> itMotsCles = motsCles.iterator();
39,17 → 65,17
motsClesChaine += ", ";
}
}
vue.motsClefs.setText(motsClesChaine);
vue.nomRetenu.setText(observation.getNomRetenu());
vue.numNomenclatural.setText(observation.getNumNomenclatural());
vue.getMotsClefs().setText(motsClesChaine);
vue.getNomRetenu().setText(observation.getNomRetenu());
vue.getNumNomenclatural().setText(observation.getNumNomenclatural());
 
List<org.tela_botanica.del.client.modeles.Image> images = observation.getImages();
 
if (images != null && images.size() > 0) {
org.tela_botanica.del.client.modeles.Image imagePrincipale = images.get(0);
vue.photoPrincipale.setUrl(imagePrincipale.getUrl());
vue.photoPrincipale.setTitle(imagePrincipale.getUrlFormat("L"));
vue.photoPrincipale.setAltText(observation.getAuteur() + " - " + observation.getNomRetenu());
vue.setUrlImagePrincipale(imagePrincipale.getUrl());
vue.setTitreImagePrincipale(imagePrincipale.getUrlFormat("L"));
vue.setAltTextImagePrincipale(observation.getAuteur() + " - " + observation.getNomRetenu());
images.remove(0);
}
 
65,31 → 91,31
 
public void onClick(ClickEvent event) {
Image photo = (Image) event.getSource();
ouvrirFenetreModale(new DetailImagePresenteur(photo.getTitle(), photo.getAltText()));
ouvrirFenetreModale(new DetailImagePresenteur(vue.getTitreImagePrincipale(), vue.getAltTextImagePrincipale(), new DetailImageVue()));
}
});
vue.photos.add(photo);
vue.getPhotos().add(photo);
}
}
 
List<PropositionDetermination> propositions = observation.getPropositionsDetermination();
 
vue.tableauPropositions.setText(0, 0, "Certitude");
vue.tableauPropositions.setText(0, 1, "Commentaires");
vue.tableauPropositions.setText(0, 2, "Nom");
vue.tableauPropositions.setText(0, 3, "Votez");
vue.setTexteTableau(0, 0, "Certitude");
vue.setTexteTableau(0, 1, "Commentaires");
vue.setTexteTableau(0, 2, "Nom");
vue.setTexteTableau(0, 3, "Votez");
 
int i = 0;
for (PropositionDetermination proposition : propositions) {
i++;
vue.tableauPropositions.setText(i, 0, String.valueOf(proposition.getVotesDeterminations().size()));
vue.setTexteTableau(i, 0, String.valueOf(proposition.getVotesDeterminations().size()));
/*
* List<VoteDetermination> votes =
* proposition.getVotesDeterminations(); for (VoteDetermination vote
* : votes) { vote.getVote(); }
*/
vue.tableauPropositions.setText(i, 1, String.valueOf(proposition.getCommentaires().size()));
vue.tableauPropositions.setText(i, 2, proposition.getEspece());
vue.setTexteTableau(i, 1, String.valueOf(proposition.getListeCommentaires().size()));
vue.setTexteTableau(i, 2, proposition.getEspece());
}
 
gererEvenements();
97,16 → 123,16
}
 
public void go(HasWidgets composite) {
composite.add(this.getVue());
composite.add(vue.asWidget());
}
 
protected void gererEvenements() {
ObservationVue vue = (ObservationVue) this.getVue();
vue.photoPrincipale.addClickHandler(new ClickHandler() {
vue.getPhotoPrincipale().addClickHandler(new ClickHandler() {
 
public void onClick(ClickEvent event) {
Image photoPrincipale = (Image) event.getSource();
ouvrirFenetreModale(new DetailImagePresenteur(photoPrincipale.getTitle(), photoPrincipale.getAltText()));
//FIXME : faire une interface pour les images
//Image photoPrincipale = (Image) event.getSource();
//ouvrirFenetreModale(new DetailImagePresenteur(photoPrincipale.getTitreImagePrincipale(), vue.getAltTextImagePrincipale(), new DetailImageVue()));
}
});