/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())); |
} |
}); |