Subversion Repositories eFlore/Applications.del

Compare Revisions

No changes between revisions

Ignore whitespace Rev 208 → Rev 210

/trunk/src/org/tela_botanica/del/client/navigation/evenement/changementprotocole/GestionnaireEvenementChangementProtocole.java
New file
0,0 → 1,8
package org.tela_botanica.del.client.navigation.evenement.changementprotocole;
 
 
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementChangementProtocole extends EventHandler {
public void onChangementProtocole(EvenementChangementProtocole event);
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/changementprotocole/EvenementChangementProtocole.java
New file
0,0 → 1,35
package org.tela_botanica.del.client.navigation.evenement.changementprotocole;
 
import org.tela_botanica.del.client.modeles.Protocole;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementChangementProtocole extends GwtEvent<GestionnaireEvenementChangementProtocole> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementProtocole> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementProtocole>();
 
private Protocole protocole;
 
public EvenementChangementProtocole(Protocole protocole) {
this.protocole = protocole;
}
 
@Override
protected void dispatch(GestionnaireEvenementChangementProtocole handler) {
handler.onChangementProtocole(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementChangementProtocole> getAssociatedType() {
return TYPE;
}
 
public Protocole getProtocole() {
return protocole;
}
 
public void setProtocole(Protocole protocole) {
this.protocole = protocole;
}
 
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/voteDetermination/GestionnaireEvenementVoteDetermination.java
New file
0,0 → 1,5
package org.tela_botanica.del.client.navigation.evenement.voteDetermination;
 
public class GestionnaireEvenementVoteDetermination {
 
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/voteDetermination/EvenementVoteDetermination.java
New file
0,0 → 1,5
package org.tela_botanica.del.client.navigation.evenement.voteDetermination;
 
public class EvenementVoteDetermination {
 
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/ajoutdetermination/GestionnaireEvenementAjoutDetermination.java
New file
0,0 → 1,8
package org.tela_botanica.del.client.navigation.evenement.ajoutdetermination;
 
 
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementAjoutDetermination extends EventHandler {
public void onAjoutDetermination(EvenementAjoutDetermination event);
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/ajoutdetermination/EvenementAjoutDetermination.java
New file
0,0 → 1,35
package org.tela_botanica.del.client.navigation.evenement.ajoutdetermination;
 
import org.tela_botanica.del.client.modeles.PropositionDetermination;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementAjoutDetermination extends GwtEvent<GestionnaireEvenementAjoutDetermination> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementAjoutDetermination> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementAjoutDetermination>();
 
private PropositionDetermination propositionDetermination;
 
public EvenementAjoutDetermination(PropositionDetermination propositionDetermination) {
this.propositionDetermination = propositionDetermination;
}
 
@Override
protected void dispatch(GestionnaireEvenementAjoutDetermination handler) {
handler.onAjoutDetermination(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementAjoutDetermination> getAssociatedType() {
return TYPE;
}
 
public PropositionDetermination getPropositionDetermination() {
return propositionDetermination;
}
 
public void setPropositionDetermination(PropositionDetermination propositionDetermination) {
this.propositionDetermination = propositionDetermination;
}
 
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/validationobservation/GestionnaireEvenementValidation.java
New file
0,0 → 1,8
package org.tela_botanica.del.client.navigation.evenement.validationobservation;
 
 
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementValidation extends EventHandler {
public void onValidationImage(EvenementValidation event);
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/validationobservation/EvenementValidation.java
New file
0,0 → 1,31
package org.tela_botanica.del.client.navigation.evenement.validationobservation;
 
import org.tela_botanica.del.client.modeles.Image;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementValidation extends GwtEvent<GestionnaireEvenementValidation> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementValidation> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementValidation>();
 
private final Image image;
 
public EvenementValidation(Image image) {
this.image = image;
}
 
@Override
protected void dispatch(GestionnaireEvenementValidation handler) {
handler.onValidationImage(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementValidation> getAssociatedType() {
return TYPE;
}
 
public Image getImage() {
return image;
}
 
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/comparaisoneflore/EvenementComparaisonEflore.java
New file
0,0 → 1,33
package org.tela_botanica.del.client.navigation.evenement.comparaisoneflore;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementComparaisonEflore extends GwtEvent<GestionnaireEvenementComparaisonEflore> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementComparaisonEflore> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementComparaisonEflore>();
 
private String taxonDemande;
 
public EvenementComparaisonEflore(String taxonDemande) {
this.taxonDemande = taxonDemande;
}
 
@Override
protected void dispatch(GestionnaireEvenementComparaisonEflore handler) {
handler.onComparaisonEflore(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementComparaisonEflore> getAssociatedType() {
return TYPE;
}
 
public String getTaxonDemande() {
return taxonDemande;
}
 
public void setTaxonDemande(String taxonDemande) {
this.taxonDemande = taxonDemande;
}
 
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/comparaisoneflore/GestionnaireEvenementComparaisonEflore.java
New file
0,0 → 1,8
package org.tela_botanica.del.client.navigation.evenement.comparaisoneflore;
 
 
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementComparaisonEflore extends EventHandler {
public void onComparaisonEflore(EvenementComparaisonEflore event);
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/BusEvenementiel.java
New file
0,0 → 1,97
package org.tela_botanica.del.client.navigation.evenement;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.GestionnaireEvenementChangementProtocole;
import org.tela_botanica.del.client.navigation.evenement.comparaisoneflore.EvenementComparaisonEflore;
import org.tela_botanica.del.client.navigation.evenement.comparaisoneflore.GestionnaireEvenementComparaisonEflore;
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementRechercheImage;
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.GestionnaireEvenementRechercheImage;
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
import org.tela_botanica.del.client.navigation.evenement.validationobservation.GestionnaireEvenementValidation;
 
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.History;
 
public class BusEvenementiel extends HandlerManager {
 
private static BusEvenementiel instance;
 
private BusEvenementiel() {
super(null);
instance = this;
createHandlers();
}
 
public static BusEvenementiel getInstance() {
if (instance == null) {
instance = new BusEvenementiel();
}
return instance;
}
 
private void createHandlers() {
addHandler(EvenementValidation.TYPE, new GestionnaireEvenementValidation() {
 
@Override
public void onValidationImage(EvenementValidation event) {
doValidationImage(event.getImage());
}
});
 
addHandler(EvenementComparaisonEflore.TYPE, new GestionnaireEvenementComparaisonEflore() {
 
@Override
public void onComparaisonEflore(EvenementComparaisonEflore event) {
doComparaisonAvecEflore(event.getTaxonDemande());
}
});
 
addHandler(EvenementRechercheImage.TYPE, new GestionnaireEvenementRechercheImage() {
 
@Override
public void onRechercheImage(EvenementRechercheImage event) {
doRechercheImage(event.getImages());
}
});
 
addHandler(EvenementChangementProtocole.TYPE, new GestionnaireEvenementChangementProtocole() {
 
@Override
public void onChangementProtocole(EvenementChangementProtocole event) {
doChangementProtocole(event.getProtocole());
}
});
}
 
private void doValidationImage(Image image) {
CacheClient.getInstance().setCurrentObservation(image.getObservation());
CacheClient.getInstance().setImageCourante(image);
History.newItem(ConstantesNavigation.PAGE_VALIDATION, true);
History.fireCurrentHistoryState();
}
 
private void doComparaisonAvecEflore(String taxon) {
CacheClient.getInstance().setTaxonPourRechercheEflore(taxon);
History.newItem(ConstantesNavigation.PAGE_COMPARAISON_EFLORE, true);
History.fireCurrentHistoryState();
}
 
private void doRechercheImage(List<Image> images) {
CacheClient.getInstance().setImages(images);
History.newItem(ConstantesNavigation.PAGE_RESULTAT_RECHERCHE_IMAGES, true);
History.fireCurrentHistoryState();
}
 
private void doChangementProtocole(Protocole protocole) {
CacheClient.getInstance().setProtocoleCourant(protocole);
History.newItem(ConstantesNavigation.PAGE_RESULTAT_RECHERCHE_IMAGES, true);
History.fireCurrentHistoryState();
}
 
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/rechercheimage/GestionnaireEvenementRechercheImage.java
New file
0,0 → 1,8
package org.tela_botanica.del.client.navigation.evenement.rechercheimage;
 
 
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementRechercheImage extends EventHandler {
public void onRechercheImage(EvenementRechercheImage event);
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/rechercheimage/EvenementRechercheImage.java
New file
0,0 → 1,37
package org.tela_botanica.del.client.navigation.evenement.rechercheimage;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Image;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementRechercheImage extends GwtEvent<GestionnaireEvenementRechercheImage> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementRechercheImage> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementRechercheImage>();
 
private List<Image> images;
 
public EvenementRechercheImage(List<Image> images) {
this.images = images;
}
 
@Override
protected void dispatch(GestionnaireEvenementRechercheImage handler) {
handler.onRechercheImage(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementRechercheImage> getAssociatedType() {
return TYPE;
}
 
public List<Image> getImages() {
return images;
}
 
public void setImages(List<Image> images) {
this.images = images;
}
 
}
/trunk/src/org/tela_botanica/del/client/utils/KeyboardKeyListener.java
New file
0,0 → 1,28
package org.tela_botanica.del.client.utils;
 
import com.google.gwt.user.client.ui.KeyboardListener;
import com.google.gwt.user.client.ui.Widget;
 
@SuppressWarnings("deprecation")
public abstract class KeyboardKeyListener implements KeyboardListener {
 
public void onKeyDown(Widget arg0, char arg1, int arg2) {
// TODO Auto-generated method stub
 
}
 
public void onKeyPress(Widget arg0, char arg1, int arg2) {
// TODO Auto-generated method stub
 
}
 
public void onKeyUp(Widget arg0, char arg1, int arg2) {
if (arg1 == KeyboardListener.KEY_ENTER) {
onEnterKeyUp();
}
 
}
 
public abstract void onEnterKeyUp();
 
}
/trunk/src/org/tela_botanica/del/client/utils/MockDatasource.java
New file
0,0 → 1,300
package org.tela_botanica.del.client.utils;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.del.client.exceptions.ExceptionClient;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
 
public class MockDatasource {
 
static MockDatasource instance;
 
List<Observation> observations = new ArrayList<Observation>();
 
List<PropositionDetermination> observationValidationDatas = new ArrayList<PropositionDetermination>();
 
ArrayList<String> propositionsTaxonDatas = new ArrayList<String>();
 
List<Protocole> protocoles = new ArrayList<Protocole>();
 
List<Image> images = new ArrayList<Image>();
 
List<String> pourcentagesConfiance = new ArrayList<String>();
 
private MockDatasource() {
 
HashMap<String, String> auteurObs = new HashMap<String, String>();
auteurObs.put("Juliette 1MOUREAU", "Tragopogon porrifolius subsp. australis (Jord.) Nyman");
auteurObs.put("Robert 2LERAS", "Iris lutescens subsp. lutescens");
auteurObs.put("Geneviève 3BOTTI", "Euphorbia dendroides L.");
auteurObs.put("Robert 4LERAS", "Lonicera japonica Thunb. ex Murray");
auteurObs.put("Juliette 5MOUREAU", "Lavatera arborea L.");
auteurObs.put("Robert 6LERAS", "Lavatera arborea L.");
auteurObs.put("Juliette 7MOUREAU", "Serapias vomeracea (Burm.f.) Briq. ");
auteurObs.put("Benjamin 8LIENS", "Lonicera etrusca Santi");
auteurObs.put("Aurélient 9PERONNET", "Ophrys scolopax Cav. ");
auteurObs.put("Grégoire 10DUCHÉ", "Staehelina dubia L. ");
auteurObs.put("Juliette 11MOUREAU", "Tragopogon porrifolius subsp. australis (Jord.) Nyman");
auteurObs.put("Robert 12LERAS", "Iris lutescens subsp. lutescens");
auteurObs.put("Geneviève 13BOTTI", "Euphorbia dendroides L.");
auteurObs.put("Robert 14LERAS", "Lonicera japonica Thunb. ex Murray");
auteurObs.put("Juliette 15MOUREAU", "Lavatera arborea L.");
auteurObs.put("Robert 16LERAS", "Lavatera arborea L.");
auteurObs.put("Juliette 17MOUREAU", "Serapias vomeracea (Burm.f.) Briq. ");
auteurObs.put("Benjamin 18LIENS", "Lonicera etrusca Santi");
auteurObs.put("Aurélient 19PERONNET", "Ophrys scolopax Cav. ");
auteurObs.put("Grégoire 20DUCHÉ", "Staehelina dubia L. ");
 
ArrayList<String> motsClefs = new ArrayList<String>();
motsClefs.add("plantnet");
motsClefs.add("fleur");
motsClefs.add("fruit");
 
Iterator<String> auteurs = auteurObs.keySet().iterator();
 
Protocole protocol1 = new Protocole();
protocol1.setNom(Protocole.ESTHETISME);
protocol1.setId(1);
 
Protocole protocol2 = new Protocole();
protocol2.setNom(Protocole.IDENTIFICATION_AUTOMATIQUE);
protocol2.setId(2);
 
protocoles.add(protocol1);
protocoles.add(protocol2);
 
VoteDetermination voteDetermination = new VoteDetermination();
voteDetermination.setVote(1);
voteDetermination.setDate(new Date());
voteDetermination.setContributeur("benjamin");
 
PropositionDetermination observationValidationData = new PropositionDetermination();
observationValidationData.setEspece("Iris lutescens subsp. lutescens");
observationValidationData.setContributeur("contributeur test");
observationValidationData.setId("1");
 
observationValidationData.getVotesDeterminations().add(voteDetermination);
observationValidationData.setDate(new Date());
observationValidationDatas.add(observationValidationData);
 
PropositionDetermination observationValidationData2 = new PropositionDetermination();
observationValidationData2.setContributeur("contributeur test 2");
observationValidationData2.setEspece("Lavatera arborea L.");
observationValidationData2.setId("2");
observationValidationData2.getVotesDeterminations().add(voteDetermination);
observationValidationData2.setDate(new Date());
observationValidationDatas.add(observationValidationData2);
 
PropositionDetermination observationValidationData3 = new PropositionDetermination();
observationValidationData3.setEspece("Acer monsp. L.");
observationValidationData3.setContributeur("Léo Ferré");
Commentaire commentaire = new Commentaire("Greg", new Date(), "Avec le temps...");
Commentaire commentaireBis = new Commentaire("Benj", new Date(), "Pas d'accord avec Greg!");
commentaire.getListeCommentaires().add(commentaireBis);
observationValidationData3.getCommentaires().add(commentaire);
observationValidationData3.setId("1");
observationValidationData2.getVotesDeterminations().add(voteDetermination);
observationValidationData3.setDate(new Date());
observationValidationDatas.add(observationValidationData3);
 
PropositionDetermination observationValidationData4 = new PropositionDetermination();
observationValidationData4.setEspece("Acer aceras aus.");
observationValidationData4.setContributeur("Pierre Desproges");
Commentaire commentaire2 = new Commentaire("Greg", new Date(), "Public chéri mon amour...");
observationValidationData4.getCommentaires().add(commentaire2);
observationValidationData4.setId("2");
observationValidationData4.getVotesDeterminations().add(voteDetermination);
observationValidationData4.setDate(new Date());
observationValidationDatas.add(observationValidationData4);
 
PropositionDetermination observationValidationData5 = new PropositionDetermination();
observationValidationData5.setEspece("Acer monsp subsp. monsp.");
observationValidationData5.setContributeur("Louis Aragon");
Commentaire commentaire3 = new Commentaire("Greg", new Date(), "Tout est affaire de décor...");
observationValidationData5.getCommentaires().add(commentaire3);
observationValidationData5.setId("2");
observationValidationData5.getVotesDeterminations().add(voteDetermination);
observationValidationData5.setDate(new Date());
observationValidationDatas.add(observationValidationData5);
 
int numobs = 44120;
for (int i = 0; i < 20; i++) {
 
Observation observation = new Observation();
String auteur = auteurs.next();
observation.setAuteur(auteur);
observation.setSpecies(auteurObs.get(auteur));
 
numobs += i;
observation.setNumNomenclatural("num nomenclatural " + i);
observation.setDate(DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT).format(new Date()));
observation.setFamille("famille " + i);
observation.setLocalite("localite " + i);
observation.setNomRetenu(auteurObs.get(auteur));
observation.setMotsClefs(motsClefs);
observation.setImageCelValidationDatas(observationValidationDatas);
 
Image image = new Image();
image.setIdImage("id image " + i);
image.setUrlFormat("http://www.tela-botanica.org/appli:cel-img:0000" + String.valueOf(numobs) + "%s%.jpg");
image.setUrl("http://www.tela-botanica.org/appli:cel-img:0000" + String.valueOf(numobs) + "CRS.jpg");
image.setMiniature("http://www.tela-botanica.org/appli:cel-img:0000" + String.valueOf(numobs) + "XS.jpg");
observation.getImages().add(image);
image.setObservation(observation);
images.add(image);
 
// nombre d'images aléatoires
int nbImagesAssociees = (int) Math.round(Math.random() * 10);
for (int j = 0; j < nbImagesAssociees; j++) {
numobs++;
image = new Image();
image.setIdImage("id image " + i);
image.setUrlFormat("http://www.tela-botanica.org/appli:cel-img:0000" + String.valueOf(numobs) + "%s%.jpg");
image.setUrl("http://www.tela-botanica.org/appli:cel-img:0000" + String.valueOf(numobs) + "CRS.jpg");
image.setMiniature("http://www.tela-botanica.org/appli:cel-img:0000" + String.valueOf(numobs) + "XS.jpg");
observation.getImages().add(image);
image.setObservation(observation);
images.add(image);
}
 
VoteProtocole voteProtocole = new VoteProtocole();
voteProtocole.setProtocol(protocol1);
voteProtocole.setVote(3);
voteProtocole.setContributeur("aurelien");
voteProtocole.setDate(new Date());
 
image.getVoteProtocoles().add(voteProtocole);
 
VoteProtocole voteProtocole2 = new VoteProtocole();
voteProtocole2.setProtocol(protocol2);
voteProtocole2.setVote(2);
voteProtocole2.setContributeur("jpm");
voteProtocole2.setDate(new Date());
 
image.getVoteProtocoles().add(voteProtocole2);
 
observations.add(observation);
}
 
ajouterVotesAleatoires();
 
pourcentagesConfiance.add(I18n.getVocabulary().confiance_simple_suggestion());
pourcentagesConfiance.add(I18n.getVocabulary().confiance_probable());
pourcentagesConfiance.add(I18n.getVocabulary().confiance_sur_cent());
}
 
public void ajouterVotesAleatoires() {
for (PropositionDetermination validation : observationValidationDatas) {
int nbVotesAjoutes = (int) Math.round(Math.random() * 20);
 
for (int i = 0; i < nbVotesAjoutes; i++) {
VoteDetermination vd = new VoteDetermination();
vd.setVote((int) Math.round(Math.random()));
vd.setDate(new Date());
vd.setContributeur("test");
 
validation.ajouterVoteDetermination(vd);
}
}
}
 
public List<Observation> getObservations(HashMap<String, String> champsRecherche) {
if (champsRecherche == null) {
return getObservations();
} else {
int nbResultats = (int) Math.round(Math.random() * 20);
List<Observation> resultatRecherche = new ArrayList<Observation>();
for (int i = 0; i < nbResultats; i++) {
int numeroResultat = (int) Math.round(Math.random() * (observations.size() - 1));
resultatRecherche.add(observations.get(numeroResultat));
}
return resultatRecherche;
}
}
 
public List<Observation> getObservations() {
return observations;
}
 
public List<Image> getImages() {
return images;
}
 
public List<VoteProtocole> getVote(String idImage) {
for (Image image : images) {
if (image.getIdImage().equals(idImage)) {
return image.getVoteProtocoles();
}
 
}
return null;
}
 
public List<VoteProtocole> getVoteByImageAndProtocol(String idImage, String protocolName) {
 
List<VoteProtocole> voteProtocolesLocal = new ArrayList<VoteProtocole>();
 
for (Image image : images) {
if (image.getIdImage().equals(idImage)) {
for (VoteProtocole voteProtocole : image.getVoteProtocoles()) {
if (voteProtocole.getProtocol().getNom().equals(protocolName)) {
voteProtocolesLocal.add(voteProtocole);
}
}
}
 
}
return voteProtocolesLocal;
}
 
public List<Image> getImagesEfloreParTaxon(String nomTaxon) {
return images;
}
 
public Protocole getProtocole(String nomProtocole) {
for (Protocole protocole : protocoles) {
if (protocole.getNom().equals(nomProtocole)) {
return protocole;
}
}
return null;
}
 
public List<Protocole> getProtocoles() {
return protocoles;
}
 
public void saveVote(VoteProtocole voteProtocole) {
// TODO implement method
}
 
public List<String> getPourcentagesConfiance() {
return pourcentagesConfiance;
}
 
public void saveValidationData(PropositionDetermination validationData) throws ExceptionClient {
observationValidationDatas.add(validationData);
}
 
public static MockDatasource getInstance() {
if (instance == null) {
instance = new MockDatasource();
}
return instance;
}
 
}
/trunk/src/org/tela_botanica/del/client/cache/CacheClient.java
New file
0,0 → 1,94
package org.tela_botanica.del.client.cache;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.Protocole;
 
public class CacheClient {
 
private Observation currentObservation;
private Image imageCourante;
 
private String taxonPourRechercheEflore;
private Protocole protocoleCourant;
 
private List<Image> images;
 
private int numPageRechercheImage = 0;
 
private int pasPageRechercheImage = 10;
 
private static CacheClient instance;
 
private CacheClient() {
instance = this;
}
 
public Observation getCurrentObservation() {
return currentObservation;
}
 
public void setCurrentObservation(Observation currentObservation) {
this.currentObservation = currentObservation;
}
 
public static CacheClient getInstance() {
if (instance == null) {
instance = new CacheClient();
}
return instance;
}
 
public String getTaxonPourRechercheEflore() {
return taxonPourRechercheEflore;
}
 
public void setTaxonPourRechercheEflore(String taxonPourRechercheEflore) {
this.taxonPourRechercheEflore = taxonPourRechercheEflore;
}
 
public int getNumPageRechercheImage() {
return numPageRechercheImage;
}
 
public void setNumPageRechercheImage(int numPageRechercheImage) {
this.numPageRechercheImage = numPageRechercheImage;
}
 
public int getPasPageRechercheImage() {
return pasPageRechercheImage;
}
 
public void setPasPageRechercheImage(int pasPageRechercheImage) {
this.pasPageRechercheImage = pasPageRechercheImage;
}
 
public List<Image> getImages() {
return images;
}
 
public void setImages(List<Image> images) {
this.images = images;
}
 
public Image getImageCourante() {
return imageCourante;
}
 
public void setImageCourante(Image imageCourante) {
this.imageCourante = imageCourante;
}
 
public Protocole getProtocoleCourant() {
return protocoleCourant;
}
 
public void setProtocoleCourant(Protocole protocoleCourant) {
this.protocoleCourant = protocoleCourant;
}
 
}
/trunk/src/org/tela_botanica/del/client/Ressources.java
New file
0,0 → 1,19
package org.tela_botanica.del.client;
 
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
 
/**
* Resources used by the entire application.
*/
public interface Ressources extends ClientBundle {
 
@Source("logo.jpg")
ImageResource logo();
 
@Source("flecheGauche.png")
ImageResource arrowLeft();
 
@Source("flecheDroite.png")
ImageResource arrowRight();
}
/trunk/src/org/tela_botanica/del/client/i18n/VocabularyConsumer.java
New file
0,0 → 1,18
package org.tela_botanica.del.client.i18n;
 
import com.google.gwt.core.client.GWT;
 
public class VocabularyConsumer {
public VocabularyConsumer() {
}
 
public static Vocabulary getVocabulary() {
return (Vocabulary) GWT.create(Vocabulary.class);
}
 
public static Messages getMessages() {
return (Messages) GWT.create(Messages.class);
}
 
}
/trunk/src/org/tela_botanica/del/client/i18n/Messages_en.properties
--- tela_botanica/del/client/i18n/Vocabulary_en.properties (revision 0)
+++ tela_botanica/del/client/i18n/Vocabulary_en.properties (revision 210)
@@ -0,0 +1,3 @@
+#sample constant property to be translated in language specific versions of this property file
+
+
/trunk/src/org/tela_botanica/del/client/i18n/Messages.java
New file
0,0 → 1,17
package org.tela_botanica.del.client.i18n;
 
/**
* Interface to represent the constants contained in resource bundle:
* 'D:/dev/svn/del/src/org/tela_botanica/del/client/i18n/Messages.properties'.
*/
public interface Messages extends com.google.gwt.i18n.client.Constants {
/**
* Translated "Rechercher le taxon {0}".
*
* @return translated "Rechercher le taxon {0}"
*/
@DefaultStringValue("Rechercher le taxon {0}")
@Key("rechercher_taxon")
String rechercher_taxon();
}
/trunk/src/org/tela_botanica/del/client/i18n/Vocabulary.java
New file
0,0 → 1,548
package org.tela_botanica.del.client.i18n;
 
/**
* Interface to represent the constants contained in resource bundle:
* 'D:/dev/svn/del/src/org/tela_botanica/del/client/i18n/Vocabulary.properties'.
*/
public interface Vocabulary extends com.google.gwt.i18n.client.Constants {
/**
* Translated "Valider".
*
* @return translated "Valider"
*/
@DefaultStringValue("Valider")
@Key("accepter")
String accepter();
 
/**
* Translated "Annuler".
*
* @return translated "Annuler"
*/
@DefaultStringValue("Annuler")
@Key("annuler")
String annuler();
 
/**
* Translated "Merci d'entrer une chaine avec au moins 4 caracteres".
*
* @return translated "Merci d'entrer une chaine avec au moins 4 caracteres"
*/
@DefaultStringValue("Merci d'entrer une chaine avec au moins 4 caracteres")
@Key("auMoins4charcateres")
String auMoins4charcateres();
 
/**
* Translated "Auteur".
*
* @return translated "Auteur"
*/
@DefaultStringValue("Auteur")
@Key("auteur")
String auteur();
 
/**
* Translated "autre".
*
* @return translated "autre"
*/
@DefaultStringValue("autre")
@Key("autre")
String autre();
 
/**
* Translated "Autre Proposition".
*
* @return translated "Autre Proposition"
*/
@DefaultStringValue("Autre Proposition")
@Key("autre_proposition")
String autre_proposition();
 
/**
* Translated "Autres informations ".
*
* @return translated "Autres informations "
*/
@DefaultStringValue("Autres informations ")
@Key("autres_informations")
String autres_informations();
 
/**
* Translated "Valider ma détermination".
*
* @return translated "Valider ma détermination"
*/
@DefaultStringValue("Valider ma détermination")
@Key("boutonProposer")
String boutonProposer();
 
/**
* Translated "Chargement".
*
* @return translated "Chargement"
*/
@DefaultStringValue("Chargement")
@Key("chargement")
String chargement();
 
/**
* Translated "Choisir un taxon".
*
* @return translated "Choisir un taxon"
*/
@DefaultStringValue("Choisir un taxon")
@Key("choisir_un_taxon")
String choisir_un_taxon();
 
/**
* Translated "Commentaire".
*
* @return translated "Commentaire"
*/
@DefaultStringValue("Commentaire")
@Key("commentaire")
String commentaire();
 
/**
* Translated "Commentaires".
*
* @return translated "Commentaires"
*/
@DefaultStringValue("Commentaires")
@Key("commentaires")
String commentaires();
 
/**
* Translated "Comparer cette image".
*
* @return translated "Comparer cette image"
*/
@DefaultStringValue("Comparer cette image")
@Key("comparer")
String comparer();
 
/**
* Translated "Probable".
*
* @return translated "Probable"
*/
@DefaultStringValue("Probable")
@Key("confiance_probable")
String confiance_probable();
 
/**
* Translated "Simple Suggestion".
*
* @return translated "Simple Suggestion"
*/
@DefaultStringValue("Simple Suggestion")
@Key("confiance_simple_suggestion")
String confiance_simple_suggestion();
 
/**
* Translated "Sur à 100%".
*
* @return translated "Sur à 100%"
*/
@DefaultStringValue("Sur à 100%")
@Key("confiance_sur_cent")
String confiance_sur_cent();
 
/**
* Translated "Contributeur".
*
* @return translated "Contributeur"
*/
@DefaultStringValue("Contributeur")
@Key("contributeur")
String contributeur();
 
/**
* Translated "Date".
*
* @return translated "Date"
*/
@DefaultStringValue("Date")
@Key("date")
String date();
 
/**
* Translated "Date de la prise de vue".
*
* @return translated "Date de la prise de vue"
*/
@DefaultStringValue("Date de la prise de vue")
@Key("date_observation")
String date_observation();
 
/**
* Translated "Date de derniere validation".
*
* @return translated "Date de derniere validation"
*/
@DefaultStringValue("Date de derniere validation")
@Key("date_validation")
String date_validation();
 
/**
* Translated "Entrez un nom de genre ou d'espèce, un nom de commune, un numéro de departement, l'email d'un utilisateur ou un mot-clef".
*
* @return translated "Entrez un nom de genre ou d'espèce, un nom de commune, un numéro de departement, l'email d'un utilisateur ou un mot-clef"
*/
@DefaultStringValue("Entrez un nom de genre ou d'espèce, un nom de commune, un numéro de departement, l'email d'un utilisateur ou un mot-clef")
@Key("entrer_mot_clef")
String entrer_mot_clef();
 
/**
* Translated "Famille".
*
* @return translated "Famille"
*/
@DefaultStringValue("Famille")
@Key("famille")
String famille();
 
/**
* Translated "Fiabilite".
*
* @return translated "Fiabilite"
*/
@DefaultStringValue("Fiabilite")
@Key("fiabilite")
String fiabilite();
 
/**
* Translated "Photos d'eFlore".
*
* @return translated "Photos d'eFlore"
*/
@DefaultStringValue("Photos d'eFlore")
@Key("image_eflore")
String image_eflore();
 
/**
* Translated "Vous pouvez comparer cette image à d'autres photos. Saisissez le nom de l'espèce et cliquez sur OK".
*
* @return translated "Vous pouvez comparer cette image à d'autres photos. Saisissez le nom de l'espèce et cliquez sur OK"
*/
@DefaultStringValue("Vous pouvez comparer cette image à d'autres photos. Saisissez le nom de l'espèce et cliquez sur OK")
@Key("infoComparer")
String infoComparer();
 
/**
* Translated "Indiquez votre niveau de certitude vis-à-vis de votre proposition.".
*
* @return translated "Indiquez votre niveau de certitude vis-à-vis de votre proposition."
*/
@DefaultStringValue("Indiquez votre niveau de certitude vis-à-vis de votre proposition.")
@Key("infoFiabilite")
String infoFiabilite();
 
/**
* Translated "Pour proposer une détermination, remplissez les champs ci-dessous et cliquez sur le bouton Proposer !".
*
* @return translated "Pour proposer une détermination, remplissez les champs ci-dessous et cliquez sur le bouton Proposer !"
*/
@DefaultStringValue("Pour proposer une détermination, remplissez les champs ci-dessous et cliquez sur le bouton Proposer !")
@Key("infoProposerDetermination")
String infoProposerDetermination();
 
/**
* Translated "D'autres utilisateurs ont laissé une détermination".
*
* @return translated "D'autres utilisateurs ont laissé une détermination"
*/
@DefaultStringValue("D'autres utilisateurs ont laissé une détermination")
@Key("infoPropositions")
String infoPropositions();
 
/**
* Translated "<b>Choisissez un taxon</b> dans la liste déroulante <b>OU</b> saisissez <b>un nouveau nom</b> dans le champ ci-après.".
*
* @return translated "<b>Choisissez un taxon</b> dans la liste déroulante <b>OU</b> saisissez <b>un nouveau nom</b> dans le champ ci-après."
*/
@DefaultStringValue("<b>Choisissez un taxon</b> dans la liste déroulante <b>OU</b> saisissez <b>un nouveau nom</b> dans le champ ci-après.")
@Key("infoTaxon")
String infoTaxon();
 
/**
* Translated "Voici la moyenne des votes en fonction du protocole choisi :".
*
* @return translated "Voici la moyenne des votes en fonction du protocole choisi :"
*/
@DefaultStringValue("Voici la moyenne des votes en fonction du protocole choisi :")
@Key("infoVotes")
String infoVotes();
 
/**
* Translated "Vos nom et prénom".
*
* @return translated "Vos nom et prénom"
*/
@DefaultStringValue("Vos nom et prénom")
@Key("infoVous")
String infoVous();
 
/**
* Translated "Propositions ".
*
* @return translated "Propositions "
*/
@DefaultStringValue("Propositions ")
@Key("lesPropositions")
String lesPropositions();
 
/**
* Translated "Localite".
*
* @return translated "Localite"
*/
@DefaultStringValue("Localite")
@Key("localite")
String localite();
 
/**
* Translated "Meta-donnees de la photo".
*
* @return translated "Meta-donnees de la photo"
*/
@DefaultStringValue("Meta-donnees de la photo")
@Key("metadonnees_photo")
String metadonnees_photo();
 
/**
* Translated "Mon vote".
*
* @return translated "Mon vote"
*/
@DefaultStringValue("Mon vote")
@Key("mon_vote")
String mon_vote();
 
/**
* Translated "Mots-clefs".
*
* @return translated "Mots-clefs"
*/
@DefaultStringValue("Mots-clefs")
@Key("mots-clefs")
String mots_clefs();
 
/**
* Translated "Moyenne".
*
* @return translated "Moyenne"
*/
@DefaultStringValue("Moyenne")
@Key("moyenne")
String moyenne();
 
/**
* Translated "Nom".
*
* @return translated "Nom"
*/
@DefaultStringValue("Nom")
@Key("nom")
String nom();
 
/**
* Translated "Nom retenu".
*
* @return translated "Nom retenu"
*/
@DefaultStringValue("Nom retenu")
@Key("nom_retenu")
String nom_retenu();
 
/**
* Translated "Nb votes".
*
* @return translated "Nb votes"
*/
@DefaultStringValue("Nb votes")
@Key("nombre_votes")
String nombre_votes();
 
/**
* Translated "non".
*
* @return translated "non"
*/
@DefaultStringValue("non")
@Key("non")
String non();
 
/**
* Translated "Observateur".
*
* @return translated "Observateur"
*/
@DefaultStringValue("Observateur")
@Key("observateur")
String observateur();
 
/**
* Translated "ok".
*
* @return translated "ok"
*/
@DefaultStringValue("ok")
@Key("ok")
String ok();
 
/**
* Translated "oui".
*
* @return translated "oui"
*/
@DefaultStringValue("oui")
@Key("oui")
String oui();
 
/**
* Translated "Pas de validation actuellement".
*
* @return translated "Pas de validation actuellement"
*/
@DefaultStringValue("Pas de validation actuellement")
@Key("pas_de_validation_actuellement")
String pas_de_validation_actuellement();
 
/**
* Translated "Proposer votre détermination".
*
* @return translated "Proposer votre détermination"
*/
@DefaultStringValue("Proposer votre détermination")
@Key("proposer_sa_determination")
String proposer_sa_determination();
 
/**
* Translated "Cliquez ici pour proposer votre validation".
*
* @return translated "Cliquez ici pour proposer votre validation"
*/
@DefaultStringValue("Cliquez ici pour proposer votre validation")
@Key("proposer_validation")
String proposer_validation();
 
/**
* Translated "Protocole".
*
* @return translated "Protocole"
*/
@DefaultStringValue("Protocole")
@Key("protocole")
String protocole();
 
/**
* Translated "Esthetisme".
*
* @return translated "Esthetisme"
*/
@DefaultStringValue("Esthetisme")
@Key("protocole_esthetisme")
String protocole_esthetisme();
 
/**
* Translated "Identification automatique".
*
* @return translated "Identification automatique"
*/
@DefaultStringValue("Identification automatique")
@Key("protocole_identification_auto")
String protocole_identification_auto();
 
/**
* Translated "Rechercher une image".
*
* @return translated "Rechercher une image"
*/
@DefaultStringValue("Rechercher une image")
@Key("rechercher_image")
String rechercher_image();
 
/**
* Translated "Rechercher le taxon ".
*
* @return translated "Rechercher le taxon "
*/
@DefaultStringValue("Rechercher le taxon ")
@Key("rechercher_taxon")
String rechercher_taxon();
 
/**
* Translated "Taxon".
*
* @return translated "Taxon"
*/
@DefaultStringValue("Taxon")
@Key("taxon")
String taxon();
 
/**
* Translated "Taxon a determiner".
*
* @return translated "Taxon a determiner"
*/
@DefaultStringValue("Taxon a determiner")
@Key("taxon_a_determiner")
String taxon_a_determiner();
 
/**
* Translated "Merci d'entrer une valeur".
*
* @return translated "Merci d'entrer une valeur"
*/
@DefaultStringValue("Merci d'entrer une valeur")
@Key("texteNonNull")
String texteNonNull();
 
/**
* Translated "Transmis le".
*
* @return translated "Transmis le"
*/
@DefaultStringValue("Transmis le")
@Key("transmis_le")
String transmis_le();
 
/**
* Translated "Merci d'entrer une valeur numerique".
*
* @return translated "Merci d'entrer une valeur numerique"
*/
@DefaultStringValue("Merci d'entrer une valeur numerique")
@Key("valeurNonNumerique")
String valeurNonNumerique();
 
/**
* Translated "Valide par".
*
* @return translated "Valide par"
*/
@DefaultStringValue("Valide par")
@Key("valide_par")
String valide_par();
 
/**
* Translated "Moyenne des votes".
*
* @return translated "Moyenne des votes"
*/
@DefaultStringValue("Moyenne des votes")
@Key("votes")
String votes();
 
/**
* Translated "Vous".
*
* @return translated "Vous"
*/
@DefaultStringValue("Vous")
@Key("vous")
String vous();
}
/trunk/src/org/tela_botanica/del/client/i18n/I18n.java
New file
0,0 → 1,18
package org.tela_botanica.del.client.i18n;
 
import com.google.gwt.core.client.GWT;
 
public class I18n {
public I18n() {
}
 
public static Vocabulary getVocabulary() {
return (Vocabulary) GWT.create(Vocabulary.class);
}
 
public static Messages getMessages() {
return (Messages) GWT.create(Messages.class);
}
 
}
/trunk/src/org/tela_botanica/del/client/i18n/Messages.properties
New file
0,0 → 1,0
rechercher_taxon=Rechercher le taxon {0}
/trunk/src/org/tela_botanica/del/client/i18n/Vocabulary.properties
New file
0,0 → 1,70
#vocabulaire partagé
oui=oui
non=non
accepter=Valider
annuler=Annuler
chargement=Chargement
ok=ok
 
#validation
auMoins4charcateres=Merci d'entrer une chaine avec au moins 4 caracteres
valeurNonNumerique=Merci d'entrer une valeur numerique
texteNonNull=Merci d'entrer une valeur
 
#ecran recherche taxons
proposer_validation=Cliquez ici pour proposer votre validation
pas_de_validation_actuellement=Pas de validation actuellement
rechercher_image=Rechercher une image
entrer_mot_clef=Entrez un nom de genre ou d'espèce, un nom de commune, un numéro de departement, l'email d'un utilisateur ou un mot-clef
rechercher_taxon=Rechercher le taxon
moyenne=Moyenne
nombre_votes=Nb votes
observateur=Observateur
nom_retenu=Nom retenu
date=Date
famille=Famille
localite=Localite
nom=Nom
auteur=Auteur
protocole=Protocole
 
#ecran determination
proposer_sa_determination=Proposer votre détermination
infoProposerDetermination = Pour proposer une détermination, remplissez les champs ci-dessous et cliquez sur le bouton Proposer !
boutonProposer = Valider ma détermination
vous = Vous
infoVous = Vos nom et prénom
contributeur=Contributeur
fiabilite=Fiabilite
infoFiabilite = Indiquez votre niveau de certitude vis-à-vis de votre proposition.
commentaire=Commentaire
autres_informations=Autres informations
choisir_un_taxon=Choisir un taxon
infoTaxon = <b>Choisissez un taxon</b> dans la liste déroulante <b>OU</b> saisissez <b>un nouveau nom</b> dans le champ ci-après.
autre=autre
autre_proposition=Autre Proposition
confiance_simple_suggestion=Simple Suggestion
confiance_probable=Probable
confiance_sur_cent=Sur à 100%
comparer = Comparer cette image
infoComparer = Vous pouvez comparer cette image à d'autres photos. Saisissez le nom de l'espèce et cliquez sur OK
lesPropositions = Propositions
infoPropositions = D'autres utilisateurs ont laissé une détermination
#ecran comparaison
date_observation=Date de la prise de vue
taxon_a_determiner=Taxon a determiner
image_eflore=Photos d'eFlore
metadonnees_photo=Meta-donnees de la photo
commentaires=Commentaires
mots-clefs=Mots-clefs
valide_par=Valide par
date_validation=Date de derniere validation
taxon=Taxon
transmis_le=Transmis le
 
#ecran votes protcoles
votes = Moyenne des votes
infoVotes = Voici la moyenne des votes en fonction du protocole choisi :
protocole_esthetisme=Esthetisme
protocole_identification_auto=Identification automatique
mon_vote=Mon vote
/trunk/src/org/tela_botanica/del/client/logo.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/src/org/tela_botanica/del/client/logo.jpg
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/src/org/tela_botanica/del/client/flecheDroite.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/src/org/tela_botanica/del/client/flecheDroite.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/src/org/tela_botanica/del/client/exceptions/ExceptionClient.java
New file
0,0 → 1,42
package org.tela_botanica.del.client.exceptions;
 
import com.google.gwt.user.client.rpc.IsSerializable;
 
/**
* An exception that can be displayed on the client side. It can receive an
* exception from server and display the message in the client.
*
* @author Benjamin
*
*/
public class ExceptionClient extends Exception implements IsSerializable {
 
/**
*
*/
private static final long serialVersionUID = 636898773374000925L;
 
private String clientMessage;
 
public ExceptionClient(String exceptionMessage) {
super();
clientMessage = exceptionMessage;
}
 
public ExceptionClient(Exception e) {
super(e);
clientMessage = e.getMessage();
}
 
public ExceptionClient() {
}
 
public String getClientMessage() {
return clientMessage;
}
 
public void setClientMessage(String clientMessage) {
this.clientMessage = clientMessage;
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/RechercheImageVue.ui.xml
New file
0,0 → 1,25
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
ui:generateLocales="default">
 
<ui:with field='res' type='org.tela_botanica.del.client.Ressources' />
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="rechercheImage.css" />
<g:VerticalPanel>
<g:HTMLPanel styleName="{style.observationsRecherche}">
<g:Label text="{constants.rechercher_image}" styleName="titre" />
<g:Label text="{constants.entrer_mot_clef}" styleName="petit" />
 
<g:TextBox ui:field="nomEspece" text="apifera" styleName="test" />
<g:Button text="{constants.rechercher_taxon}" ui:field="boutonChercher" />
 
<g:HorizontalPanel ui:field="panneauProtocole">
<g:Label ui:field="protocoleLabel" text="{constants.protocole}" />
<g:ListBox ui:field="listeProtocoles" />
</g:HorizontalPanel>
</g:HTMLPanel>
<g:VerticalPanel ui:field="panneauResultats" />
</g:VerticalPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/image.css
New file
0,0 → 1,9
.observations {border: solid 1px #DDD; padding:10px; width:150px; height:250px; -moz-border-radius:10px; -webkit-border-radius:10px; }
.observations img {width:150px}
.zoneCache {position:absolute; padding:15px; border:solid 1px #CCC; background:white; z-index:1000; -moz-border-radius:5px; -webkit-border-radius:5px; -moz-box-shadow:2px 2px 2px 2px #AAA; -webkit-box-shadow:2px 2px 2px 2px #AAA }
 
.ajoutValidation {background:url(./img/add.png) no-repeat; font-size:11px; padding:2px 0px 2px 18px; margin-top:4px; cursor:pointer}
.espece {font-size:12px; font-weight:bold; color:#454341}
 
.zonePlus {position:absolute; margin-top:65px;}
.voter {/*position:absolute; margin-top:65px; margin-left:20px;*/}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/ResultatRechercheImageVue.ui.xml
New file
0,0 → 1,14
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
ui:generateLocales="default">
 
<ui:with field='res' type='org.tela_botanica.del.client.Ressources' />
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="rechercheImage.css" />
<g:HTMLPanel styleName="{style.observationsRecherche}">
<g:FlexTable ui:field="imageTable" />
<g:VerticalPanel ui:field="panneauPagination" />
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/ResultatRechercheImagePresenteur.java
New file
0,0 → 1,88
package org.tela_botanica.del.client.vues.rechercheimages.resultats;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.pagination.PaginationPresenteur;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImagePresenteur;
 
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Panel;
 
public class ResultatRechercheImagePresenteur {
 
private final ResultatRechercheImageVue vue = new ResultatRechercheImageVue();
private static ResultatRechercheImagePresenteur instance;
private List<ImagePresenteur> observationPresenteurs = new ArrayList<ImagePresenteur>();
 
public ResultatRechercheImagePresenteur() {
instance = this;
}
 
public void go(HasWidgets composite) {
composite.add(vue);
afficherImagesEtMoyenneVoteProtocole();
 
}
 
private void afficherImagesEtMoyenneVoteProtocole() {
 
// Remise à zéro du panneau d'affichage et des composants
vue.nettoyer();
 
// TODO : créer une méthode globale pour l'application ? voir
// superclasse présenteur ?
// FIXME : ne s'affiche pas
vue.startChargement();
vue.creerPanneauxObservation(CacheClient.getInstance().getImages());
 
Iterator<Panel> panelIterator = vue.getPanneauxImages().iterator();
for (Image image : CacheClient.getInstance().getImages()) {
Panel imagePanel = panelIterator.next();
ImagePresenteur imagePresenteur = new ImagePresenteur(image, CacheClient.getInstance().getProtocoleCourant());
imagePresenteur.go(imagePanel);
observationPresenteurs.add(imagePresenteur);
}
 
vue.afficherPanneauxImage(0, vue.getNbImagesPerPage());
createPaginationWidget(CacheClient.getInstance().getImages().size());
 
vue.stopChargement();
 
}
 
public void fermerTousPanneauxDetailsObservations() {
for (ImagePresenteur observationPresenteur : observationPresenteurs) {
if (observationPresenteur.isDetailsOpen()) {
observationPresenteur.cacherDetails();
}
}
}
 
private void createPaginationWidget(int nbImages) {
 
new PaginationPresenteur(nbImages) {
 
@Override
public void changerPage(int debut, int fin) {
showImagePanels(debut, fin);
}
}.go(vue.getPanneauPagination());
}
 
public void showImagePanels(int first, int last) {
vue.afficherPanneauxImage(first, last);
}
 
public ResultatRechercheImageVue getView() {
return vue;
}
 
public static ResultatRechercheImagePresenteur getInstance() {
return instance;
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/ResultatRechercheImageVue.java
New file
0,0 → 1,122
package org.tela_botanica.del.client.vues.rechercheimages.resultats;
 
import java.util.ArrayList;
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Image;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
 
public class ResultatRechercheImageVue extends Composite {
 
private final VerticalPanel mainPanel = new VerticalPanel();
private final Panel panneauChargement = new FlowPanel();
private final List<Panel> panneauxImages = new ArrayList<Panel>();
private int nbCol = 5;
private final int nbImagesPerPage = 10;
private int numImage = 0;
 
// Annotation can be used to change the name of the associated xml file
// @UiTemplate("ObservationRechercheVue.ui.xml")
interface MyUiBinder extends UiBinder<Widget, ResultatRechercheImageVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField
Panel panneauPagination;
 
@UiField
FlexTable imageTable;
 
// Constructeur
protected ResultatRechercheImageVue() {
 
initWidget(uiBinder.createAndBindUi(this));
 
}
 
/**
* Nettoie et remet à zéro les composants du panneau qui doivent l'être
* */
protected void nettoyer() {
panneauPagination.clear();
setNumImage(0);
imageTable.clear();
panneauxImages.clear();
}
 
protected void creerPanneauxObservation(List<Image> images) {
 
for (int i = 0; i < images.size(); i++) {
Panel imagePanel = new VerticalPanel();
panneauxImages.add(imagePanel);
}
 
}
 
protected void afficherPanneauxImage(int first, int last) {
imageTable.clear();
 
int positionImage = 0;
for (int numImage = first; numImage < last; numImage++) {
try {
Panel panel = panneauxImages.get(numImage);
imageTable.setWidget((positionImage) / nbCol, (positionImage) % nbCol, panel);
} catch (Exception e) {
break;
}
 
positionImage++;
}
}
 
public void setNumImage(int numImage) {
this.numImage = numImage;
}
 
protected void startChargement() {
panneauChargement.setVisible(true);
}
 
protected void stopChargement() {
panneauChargement.setVisible(false);
}
 
public FlexTable getImageTable() {
return imageTable;
}
 
public int getNumImage() {
return numImage;
}
 
public Panel getPanneauChargement() {
return panneauChargement;
}
 
public Panel getPanneauPagination() {
return panneauPagination;
}
 
public int getNbImagesPerPage() {
return nbImagesPerPage;
}
 
public Panel getPanel() {
return mainPanel;
}
 
public List<Panel> getPanneauxImages() {
return panneauxImages;
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/rechercheImage.css
New file
0,0 → 1,2
.observationsRecherche {width:50%; margin:0 auto;}
 
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/image.css
New file
0,0 → 1,9
.observations {border: solid 1px #DDD; padding:10px; width:150px; height:250px; -moz-border-radius:10px; -webkit-border-radius:10px; }
.observations img {width:150px}
.zoneCache {position:absolute; padding:15px; border:solid 1px #CCC; background:white; z-index:1000; -moz-border-radius:5px; -webkit-border-radius:5px; -moz-box-shadow:2px 2px 2px 2px #AAA; -webkit-box-shadow:2px 2px 2px 2px #AAA }
 
.ajoutValidation {background:url(./img/add.png) no-repeat; font-size:11px; padding:2px 0px 2px 18px; margin-top:4px; cursor:pointer}
.espece {font-size:12px; font-weight:bold; color:#454341}
 
.zonePlus {position:absolute; margin-top:65px;}
.voter {/*position:absolute; margin-top:65px; margin-left:20px;*/}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImageVue.ui.xml
New file
0,0 → 1,45
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default">
 
<ui:with field='res' type='org.tela_botanica.del.client.Ressources'/>
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<ui:style src="image.css" />
 
<g:HTMLPanel styleName="{style.observations}">
<g:Image ui:field="imagePrincipale" resource='{res.logo}' />
<g:VerticalPanel styleName="{style.zonePlus}">
<g:Label ui:field="enSavoirPlus" text=" "/>
<g:VerticalPanel styleName="{style.zoneCache}" ui:field="zoneCache">
<g:VerticalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.observateur} : "/>
<g:Label ui:field="nomObservateur">Nom observateur</g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.nom_retenu} : "/>
<g:Label ui:field="nomRetenu">Nom retenu</g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.date_observation} : "/>
<g:Label ui:field="dateObservation">Date observation</g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.famille} : "/>
<g:Label ui:field="famille">Famille</g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.localite} : "/>
<g:Label ui:field="localite">Localite</g:Label>
</g:HorizontalPanel>
</g:VerticalPanel>
</g:VerticalPanel>
<g:Label ui:field="ajoutValidation" styleName="{style.ajoutValidation}">Ajouter votre validation</g:Label>
</g:VerticalPanel>
<g:HorizontalPanel ui:field="voter"/>
<g:VerticalPanel>
<g:Label ui:field="nomAuteur" styleName="petit">Auteur</g:Label>
<g:Label ui:field="nomEspece" styleName="{style.espece}">Nom</g:Label>
</g:VerticalPanel>
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImagePresenteur.java
New file
0,0 → 1,103
package org.tela_botanica.del.client.vues.rechercheimages.resultats.images;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
import org.tela_botanica.del.client.utils.MockDatasource;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.ResultatRechercheImagePresenteur;
import org.tela_botanica.del.client.vues.rechercheimages.vote.MoyenneVotePresenteur;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
 
public class ImagePresenteur {
 
private final MockDatasource validationService = MockDatasource.getInstance();
private ImageVue vue = new ImageVue();
private final Image image;
private boolean detailsOpen = false;
 
private Protocole protocole;
 
public ImagePresenteur(Image image, Protocole protocole) {
this.image = image;
this.protocole = protocole;
}
 
public void go(HasWidgets composite) {
composite.add(vue);
vue.loadImage(image);
loadValidationData();
handleEvents();
 
}
 
private void loadValidationData() {
 
List<VoteProtocole> observationValidationDatas = validationService.getVoteByImageAndProtocol(image.getIdImage(), protocole.getNom());
new MoyenneVotePresenteur(observationValidationDatas).go(vue.getVoter());
 
}
 
private void handleEvents() {
 
vue.getEnSavoirPlus().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
 
if (!detailsOpen) {
afficherDetails();
} else {
cacherDetails();
}
 
}
});
 
vue.getAjoutValidation().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
BusEvenementiel.getInstance().fireEvent(new EvenementValidation(image));
}
});
}
 
public void cacherDetails() {
VerticalPanel zoneCache = vue.getZoneCache();
Label enSavoirPlus = vue.getEnSavoirPlus();
 
zoneCache.setVisible(false);
enSavoirPlus.setStyleName("boutonPlus");
 
detailsOpen = false;
}
 
public void afficherDetails() {
ResultatRechercheImagePresenteur.getInstance().fermerTousPanneauxDetailsObservations();
 
VerticalPanel zoneCache = vue.getZoneCache();
Label enSavoirPlus = vue.getEnSavoirPlus();
 
zoneCache.setVisible(true);
enSavoirPlus.setStyleName("boutonMoins");
 
detailsOpen = true;
}
 
public boolean isDetailsOpen() {
return detailsOpen;
}
 
public ImageVue getVue() {
return vue;
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImageVue.java
New file
0,0 → 1,110
package org.tela_botanica.del.client.vues.rechercheimages.resultats.images;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
 
public class ImageVue extends Composite {
 
// Annotation can be used to change the name of the associated xml file
// @UiTemplate("ObservationVue.ui.xml")
interface MyUiBinder extends UiBinder<Widget, ImageVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField
protected Label nomEspece, nomAuteur, nomObservateur, nomRetenu, dateObservation, famille, localite;
 
@UiField
protected HorizontalPanel voter;
 
@UiField
protected VerticalPanel zoneCache;
 
@UiField
Image imagePrincipale;
 
@UiField
Label enSavoirPlus, ajoutValidation;
 
public ImageVue() {
// sets listBox
initWidget(uiBinder.createAndBindUi(this));
}
 
protected void loadImage(org.tela_botanica.del.client.modeles.Image image) {
enSavoirPlus.setStyleName("boutonPlus");
zoneCache.setVisible(false);
nomEspece.setText(image.getObservation().getSpecies());
nomAuteur.setText(image.getObservation().getAuteur());
imagePrincipale.setUrl(image.getUrl());
nomObservateur.setText(image.getObservation().getAuteur());
nomRetenu.setText(image.getObservation().getNomRetenu());
dateObservation.setText(image.getObservation().getDate());
famille.setText(image.getObservation().getFamille());
localite.setText(image.getObservation().getLocalite());
 
}
 
protected void clearDetails() {
/*
* detailsPanel.clear();
* moreDetailsHtml.setHTML("<img src='img/icon_plus.gif' >");
*/
}
 
public Panel getFlowPanel() {
// return flowPanel;
return new FlowPanel();
}
 
public Panel getDetailsPanel() {
// return detailsPanel;
return new FlowPanel();
}
 
public HTML getMoreDetailsHtml() {
// return moreDetailsHtml;
return new HTML();
}
 
public HTML getNoValidationDataHtml() {
// return noValidationDataHtml;
return new HTML();
}
 
public HTML getProposeValidationDataHtml() {
// return proposeValidationDataHtml;
return new HTML();
}
 
public HorizontalPanel getVoter() {
return voter;
}
 
public VerticalPanel getZoneCache() {
return zoneCache;
}
 
public Label getEnSavoirPlus() {
return enSavoirPlus;
}
 
public Image getImagePrincipale() {
return imagePrincipale;
}
 
public Label getAjoutValidation() {
return ajoutValidation;
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/RechercheImagePresenteur.java
New file
0,0 → 1,90
package org.tela_botanica.del.client.vues.rechercheimages;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementRechercheImage;
import org.tela_botanica.del.client.utils.MockDatasource;
 
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
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.HasWidgets;
 
public class RechercheImagePresenteur {
 
private final MockDatasource dataSource = MockDatasource.getInstance();
private final RechercheImageVue vue = new RechercheImageVue();
private String protocoleParDefaut = Protocole.IDENTIFICATION_AUTOMATIQUE;
private List<Protocole> protocoles;
 
public RechercheImagePresenteur() {
 
if (CacheClient.getInstance().getProtocoleCourant() == null) {
CacheClient.getInstance().setProtocoleCourant(dataSource.getProtocole(protocoleParDefaut));
}
}
 
public void go(HasWidgets composite) {
composite.add(vue);
gererEvenements();
chargerProtocoles();
}
 
private void chargerProtocoles() {
protocoles = dataSource.getProtocoles();
for (Protocole protocole : protocoles) {
vue.listeProtocoles.addItem(protocole.getNom());
}
vue.listeProtocoles.setSelectedIndex(protocoles.indexOf(CacheClient.getInstance().getProtocoleCourant()));
}
 
public void gererEvenements() {
 
vue.boutonChercher.addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
chargerImages();
}
});
 
vue.nomEspece.addKeyPressHandler(new KeyPressHandler() {
 
public void onKeyPress(KeyPressEvent event) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
chargerImages();
}
}
});
 
vue.listeProtocoles.addChangeHandler(new ChangeHandler() {
 
@Override
public void onChange(ChangeEvent event) {
Protocole protocoleCourant = protocoles.get(vue.listeProtocoles.getSelectedIndex());
EvenementChangementProtocole evenement = new EvenementChangementProtocole(protocoleCourant);
BusEvenementiel.getInstance().fireEvent(evenement);
}
});
}
 
private void chargerImages() {
List<Image> imagesFromDatabase = dataSource.getImages();
EvenementRechercheImage evenementRechercheImage = new EvenementRechercheImage(imagesFromDatabase);
BusEvenementiel.getInstance().fireEvent(evenementRechercheImage);
}
 
public RechercheImageVue getVue() {
return vue;
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/RechercheImageVue.java
New file
0,0 → 1,70
package org.tela_botanica.del.client.vues.rechercheimages;
 
import com.google.gwt.core.client.GWT;
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.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
 
public class RechercheImageVue extends Composite {
 
private final VerticalPanel mainPanel = new VerticalPanel();
private final Panel panneauChargement = new FlowPanel();
 
// Annotation can be used to change the name of the associated xml file
// @UiTemplate("ObservationRechercheVue.ui.xml")
interface MyUiBinder extends UiBinder<Widget, RechercheImageVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField
protected TextBox nomEspece;
 
@UiField
protected Panel panneauProtocole, panneauResultats;
 
@UiField
protected Button boutonChercher;
 
@UiField
protected Label protocoleLabel;
 
@UiField
protected ListBox listeProtocoles;
 
// Constructeur
protected RechercheImageVue() {
initWidget(uiBinder.createAndBindUi(this));
nomEspece.setFocus(true);
 
}
 
public Panel getPanneauChargement() {
return panneauChargement;
}
 
public void setListeProtocoles(ListBox listeProtocoles) {
this.listeProtocoles = listeProtocoles;
}
 
public void setProtocoleLabel(Label protocoleLabel) {
this.protocoleLabel = protocoleLabel;
}
 
// Cette méthode est public car appelé dans GestionnaireHistorique
public Panel getPanneauResultats() {
return panneauResultats;
}
 
public void setPanneauResultats(Panel panneauResultats) {
this.panneauResultats = panneauResultats;
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/vote/MoyenneVoteVue.ui.xml
New file
0,0 → 1,10
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default">
 
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<ui:style src="moyenne.css" />
 
<g:HTMLPanel styleName="{style.moyenne}">
<g:HorizontalPanel styleName="{style.voter}"><g:FocusPanel ui:field="voter"/><g:Label text="Votes :" styleName="{style.petit}"/><g:Label ui:field="nbVotes" styleName="{style.petit}"/></g:HorizontalPanel>
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/vote/MoyenneVotePresenteur.java
New file
0,0 → 1,20
package org.tela_botanica.del.client.vues.rechercheimages.vote;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class MoyenneVotePresenteur {
 
private MoyenneVoteVue view;
 
public MoyenneVotePresenteur(List<VoteProtocole> validationDatas) {
view = new MoyenneVoteVue(validationDatas);
}
 
public void go(HasWidgets container) {
container.add(view);
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/vote/MoyenneVoteVue.java
New file
0,0 → 1,50
package org.tela_botanica.del.client.vues.rechercheimages.vote;
 
import java.util.List;
 
import org.cobogw.gwt.user.client.ui.Rating;
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FocusPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
 
public class MoyenneVoteVue extends Composite {
 
// Annotation can be used to change the name of the associated xml file
// @UiTemplate("MoyenneVoteVue.ui.xml")
interface MyUiBinder extends UiBinder<Widget, MoyenneVoteVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField
FocusPanel voter;
 
@UiField
Label nbVotes;
 
protected MoyenneVoteVue(List<VoteProtocole> validationDatas) {
initWidget(uiBinder.createAndBindUi(this));
 
int meanVote = 0;
int nbVote = 0;
for (VoteProtocole imageCelValidationData : validationDatas) {
 
meanVote += imageCelValidationData.getVote();
nbVote++;
}
if (nbVote > 0)
meanVote /= nbVote;
Rating rating = new Rating(meanVote, 5);
rating.setReadOnly(true);
voter.add(rating);
 
nbVotes.setText(String.valueOf(validationDatas.size()));
 
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/vote/DetailVotePresenteur.java
New file
0,0 → 1,20
package org.tela_botanica.del.client.vues.rechercheimages.vote;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class DetailVotePresenteur {
 
private DetailVoteVue view;
 
public DetailVotePresenteur(List<VoteProtocole> validationDatas) {
view = new DetailVoteVue(validationDatas);
}
 
public void go(HasWidgets container) {
container.add(view);
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/vote/DetailVoteVue.java
New file
0,0 → 1,28
package org.tela_botanica.del.client.vues.rechercheimages.vote;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;
 
public class DetailVoteVue extends Composite {
 
private Panel mainPanel = new VerticalPanel();
 
protected DetailVoteVue(List<VoteProtocole> validationDatas) {
 
for (VoteProtocole imageCelValidationData : validationDatas) {
 
mainPanel.add(new HTML("Vote " + imageCelValidationData.getVote()
+ " par " + imageCelValidationData.getContributeur()));
}
 
initWidget(mainPanel);
 
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/vote/moyenne.css
New file
0,0 → 1,3
.moyenne {}
.petit {font-size:11px; color:#AAA}
.voter {position:absolute; margin-top:65px; margin-left:20px;}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/detail/ObservationDetailPresenteur.java
New file
0,0 → 1,22
package org.tela_botanica.del.client.vues.rechercheimages.detail;
 
import org.tela_botanica.del.client.modeles.Observation;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class ObservationDetailPresenteur {
 
private ObservationDetailVue view = new ObservationDetailVue();
 
private Observation observation;
 
public ObservationDetailPresenteur(Observation imageCel) {
this.observation = imageCel;
}
 
public void go(HasWidgets container) {
view.loadDetails(observation);
container.add(view);
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/detail/ObservationDetailVue.java
New file
0,0 → 1,30
package org.tela_botanica.del.client.vues.rechercheimages.detail;
 
import org.tela_botanica.del.client.modeles.Observation;
 
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;
 
public class ObservationDetailVue extends Composite {
 
private final Panel mainPanel = new VerticalPanel();
 
protected ObservationDetailVue() {
initWidget(mainPanel);
}
 
protected void loadDetails(Observation observation) {
mainPanel.add(new HTML("Observateur:" + observation.getAuteur()));
mainPanel.add(new HTML("Nom retenu:" + observation.getNomRetenu()));
mainPanel.add(new HTML("Date: " + observation.getDate()));
mainPanel.add(new HTML("Famille: " + observation.getFamille()));
mainPanel.add(new HTML("Localite " + observation.getLocalite()));
}
 
public Panel getMainPanel() {
return mainPanel;
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/rechercheImage.css
New file
0,0 → 1,2
.observationsRecherche {width:50%; margin:0 auto;}
 
/trunk/src/org/tela_botanica/del/client/vues/vueinitiale/VueInitiale.java
New file
0,0 → 1,45
package org.tela_botanica.del.client.vues.vueinitiale;
 
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.Widget;
 
public class VueInitiale extends Composite {
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, VueInitiale> {
}
 
private static Binder binder = GWT.create(Binder.class);
 
@UiField
protected Hyperlink lienRechercheImages;
 
@UiField
protected Hyperlink lienRechercheObservations;
 
// Constructeur de la vue
public VueInitiale() {
initWidget(binder.createAndBindUi(this));
 
lienRechercheImages.setText("Recherche par image");
lienRechercheImages.setTargetHistoryToken(ConstantesNavigation.PAGE_RECHERCHE_IMAGES);
 
lienRechercheObservations.setText("Recherche par observation");
lienRechercheObservations.setTargetHistoryToken(ConstantesNavigation.PAGE_RECHERCHE_OBSERVATIONS);
}
 
public Hyperlink getLienRechercheImages() {
return lienRechercheImages;
}
 
public Hyperlink getLienRechercheObservations() {
return lienRechercheObservations;
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/vueinitiale/PresenteurInitial.java
New file
0,0 → 1,13
package org.tela_botanica.del.client.vues.vueinitiale;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class PresenteurInitial {
 
private VueInitiale vue = new VueInitiale();
 
public void go(HasWidgets composite) {
composite.add(vue);
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/vueinitiale/VueInitiale.ui.xml
New file
0,0 → 1,13
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
ui:generateLocales="default">
<ui:with field='res' type='org.tela_botanica.del.client.Ressources' />
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
 
 
<g:VerticalPanel>
<g:Hyperlink ui:field="lienRechercheImages" />
<g:Hyperlink ui:field="lienRechercheObservations" />
</g:VerticalPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationVue.java
New file
0,0 → 1,47
package org.tela_botanica.del.client.vues.plateformedetermination;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
 
public class DeterminationVue extends Composite {
 
@UiField
VerticalPanel forum, detailImageObservation, formulaireProposition, formulaireRechercheEflore, vote, barreRepartition;
 
interface DeterminationUIiBinder extends UiBinder<Widget, DeterminationVue> {
};
 
private static DeterminationUIiBinder uiBinder = GWT.create(DeterminationUIiBinder.class);
 
public DeterminationVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
public VerticalPanel getForum() {
return forum;
}
 
public VerticalPanel getDetailImageObservation() {
return detailImageObservation;
}
 
public VerticalPanel getFormulaireProposition() {
return formulaireProposition;
}
 
public VerticalPanel getFormulaireRechercheEflore() {
return formulaireRechercheEflore;
}
 
public VerticalPanel getVote() {
return vote;
}
public VerticalPanel getBarreRepartition() {
return barreRepartition;
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/detail/DetailImageObservationVue.java
New file
0,0 → 1,38
package org.tela_botanica.del.client.vues.plateformedetermination.detail;
 
 
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
 
public class DetailImageObservationVue extends Composite {
 
@UiField
protected Image imageObservation;
 
@UiField
protected Label nomObservateur, nomRetenu, dateObservation, famille, localite;
 
private static DetailImageObservationUIiBinder uiBinder = GWT.create(DetailImageObservationUIiBinder.class);
 
interface DetailImageObservationUIiBinder extends UiBinder<Widget, DetailImageObservationVue> {
};
 
public DetailImageObservationVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
public void chargerInformationsObservation(org.tela_botanica.del.client.modeles.Image image) {
imageObservation.setUrl(image.getUrl());
nomObservateur.setText(image.getObservation().getAuteur());
nomRetenu.setText(image.getObservation().getNomRetenu());
famille.setText(image.getObservation().getFamille());
localite.setText(image.getObservation().getLocalite());
dateObservation.setText(image.getObservation().getDate());
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/detail/detailObservation.css
New file
0,0 → 1,6
.groupeObservation img {-moz-box-shadow:4px 4px 2px #AAA}
.detailObservation {font-size:11px; position:absolute; padding:5px; color:white; background:#333; opacity:0.8; margin-top:-80px; width:230px;}
.observateur td {font-size:11px; white-space:nowrap}
.date {}
.nomRetenu {font-weight:bold}
.dateObservation {}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/detail/DetailImageObservationVue.ui.xml
New file
0,0 → 1,36
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
 
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<ui:style src="detailObservation.css" />
<g:VerticalPanel styleName="{style.groupeObservation}">
<g:Image ui:field="imageObservation"/>
<g:VerticalPanel ui:field="detailObservation" styleName="{style.detailObservation}">
<g:HorizontalPanel styleName="{style.observateur}">
<!-- g:Label text="{constants.observateur} : "/ -->
<g:Label ui:field="nomObservateur" /><g:HTML>&nbsp;-&nbsp;</g:HTML><g:Label ui:field="localite" /><g:HTML>&nbsp;-&nbsp;</g:HTML><g:Label ui:field="dateObservation" />
</g:HorizontalPanel>
<g:HorizontalPanel>
<!-- <g:Label text="{constants.nom_retenu} : "/> -->
<g:Label ui:field="nomRetenu" styleName="{style.nomRetenu}"/>
</g:HorizontalPanel>
<g:HorizontalPanel styleName="{style.date}">
<!-- <g:Label text="{constants.date_observation} : "/> -->
</g:HorizontalPanel>
<g:HorizontalPanel>
<!-- <g:Label text="{constants.famille} : "/> -->
<g:HorizontalPanel><g:Label ui:field="famille" /></g:HorizontalPanel>
</g:HorizontalPanel>
<g:HorizontalPanel>
<!-- <g:Label text="{constants.localite} : "/> -->
</g:HorizontalPanel>
</g:VerticalPanel>
</g:VerticalPanel>
 
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/detail/DetailImageObservationPresenteur.java
New file
0,0 → 1,15
package org.tela_botanica.del.client.vues.plateformedetermination.detail;
 
import org.tela_botanica.del.client.cache.CacheClient;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class DetailImageObservationPresenteur {
 
private DetailImageObservationVue detailImageObservationVue = new DetailImageObservationVue();
 
public void go(HasWidgets composite) {
detailImageObservationVue.chargerInformationsObservation(CacheClient.getInstance().getImageCourante());
composite.add(detailImageObservationVue);
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/forum/forum.css
New file
0,0 → 1,0
.table {border:solid 1px #DDD}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/forum/ForumVue.ui.xml
New file
0,0 → 1,13
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:vues="urn:import:org.tela_botanica.del.client.vues.plateformedetermination.forum">
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="forum.css" />
<g:VerticalPanel>
<g:Label text="{constants.lesPropositions}" styleName="titre"/>
<g:Label text="{constants.infoPropositions}" styleName="petit"/>
<g:FlexTable ui:field='htmlTableau' styleName="{style.table}" />
</g:VerticalPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/forum/LigneForumPresenteur.java
New file
0,0 → 1,36
package org.tela_botanica.del.client.vues.plateformedetermination.forum;
 
import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.barrerepartition.BarreRepartitionVotePresenteur;
 
import com.google.gwt.user.client.ui.FlexTable;
 
public class LigneForumPresenteur {
private LigneForumVue ligneforumVue;
private BarreRepartitionVotePresenteur barreRepartitionVotePresenteur = new BarreRepartitionVotePresenteur();
private PropositionDetermination determination;
public LigneForumPresenteur(PropositionDetermination propositionDetermination) {
this.determination = propositionDetermination;
}
 
public void go(FlexTable tableParente) {
ligneforumVue = new LigneForumVue(tableParente);
chargerDetermination();
}
 
private void chargerDetermination() {
calculerEtAfficherVoteDetermination();
ligneforumVue.chargerDetermination(determination,barreRepartitionVotePresenteur.getBarreRepartitionVoteVue());
}
private void calculerEtAfficherVoteDetermination() {
MoyenneVote votes = CalculVoteDeterminationService.calculerVoteDetermination(determination);
barreRepartitionVotePresenteur.afficherVotes(votes);
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/forum/ForumPresenteur.java
New file
0,0 → 1,47
package org.tela_botanica.del.client.vues.plateformedetermination.forum;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class ForumPresenteur {
 
private ForumVue forumVue = new ForumVue();
 
private List<PropositionDetermination> determinations;
 
public void go(HasWidgets composite) {
 
chargerDeterminations();
composite.add(forumVue);
 
gererEvenements();
}
 
private void chargerDeterminations() {
determinations = CacheClient.getInstance().getCurrentObservation().getPropositionsDetermination();
forumVue.initialiserEntetesTableau();
 
for (PropositionDetermination determination : determinations) {
LigneForumPresenteur ligne = new LigneForumPresenteur(determination);
ligne.go(forumVue.getTable());
}
}
 
private void gererEvenements() {
BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
 
@Override
public void onAjoutDetermination(EvenementAjoutDetermination event) {
LigneForumPresenteur ligne = new LigneForumPresenteur(event.getPropositionDetermination());
ligne.go(forumVue.getTable());
}
});
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/forum/LigneForumVue.java
New file
0,0 → 1,62
package org.tela_botanica.del.client.vues.plateformedetermination.forum;
 
import java.util.Date;
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
 
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;
 
public class LigneForumVue extends Composite {
FlexTable tableParente;
HTMLPanel barreRepartition;
public LigneForumVue(FlexTable flexTable) {
tableParente = flexTable;
}
public void chargerDetermination(PropositionDetermination determination, IsWidget barreRepartition) {
 
Tree arbreCommentaires = new Tree();
TreeItem racineArbreCommentaires = new TreeItem();
arbreCommentaires.addItem(racineArbreCommentaires);
creerListeCommentaireRecursive(racineArbreCommentaires, determination.getCommentaires());
 
int ligne = tableParente.getRowCount() + 1;
tableParente.setWidget(ligne, 1, barreRepartition);
tableParente.setHTML(ligne, 2, determination.getContributeur());
tableParente.setHTML(ligne, 3, DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT).format(determination.getDate()));
tableParente.setWidget(ligne, 4, arbreCommentaires);
 
}
private void creerListeCommentaireRecursive(TreeItem parentTreeItem, List<Commentaire> commentaires) {
 
for (Commentaire commentaire : commentaires) {
String commentaireHTML = commentaire.getCommentaire() +" "+ commentaire.getAuteur() + "-"+formaterDatePourForum(commentaire.getDate());
parentTreeItem.setHTML(commentaireHTML);
if (commentaire.getListeCommentaires().size() != 0) {
TreeItem childTreeItem = new TreeItem();
parentTreeItem.addItem(childTreeItem);
creerListeCommentaireRecursive(childTreeItem, commentaire.getListeCommentaires());
}
}
parentTreeItem.setState(true);
 
}
 
private String formaterDatePourForum(Date date) {
return DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT).format(date);
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/forum/ForumVue.java
New file
0,0 → 1,47
package org.tela_botanica.del.client.vues.plateformedetermination.forum;
 
import java.util.Date;
import java.util.List;
 
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.user.client.ui.Widget;
 
public class ForumVue extends Composite {
 
private static ForumUIiBinder uiBinder = GWT.create(ForumUIiBinder.class);
 
interface ForumUIiBinder extends UiBinder<Widget, ForumVue> {
};
 
@UiField
FlexTable htmlTableau;
 
public ForumVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
public void initialiserEntetesTableau() {
 
htmlTableau.setHTML(1, 1, I18n.getVocabulary().nom());
htmlTableau.setHTML(1, 2, I18n.getVocabulary().contributeur());
htmlTableau.setHTML(1, 3, I18n.getVocabulary().fiabilite());
htmlTableau.setHTML(1, 4, I18n.getVocabulary().date());
htmlTableau.setHTML(1, 5, I18n.getVocabulary().commentaire());
}
public FlexTable getTable() {
return htmlTableau;
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/determinationVue.css
New file
0,0 → 1,5
.zoneDetermination {width:50%; margin:0 auto;}
.zoneVote {margin-left:5px; padding:20px; border:#DDD solid 1px; -moz-border-radius:0 10px 10px 0; height:100%}
.zoneBarreRepartition {border:solid 1px #DDD; padding: 15px;}
.zoneDetailImage {border:#DDD solid 1px; -moz-border-radius:10px 0 0 10px; padding:20px; height:100%}
.zoneImage {margin-bottom:10px}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionVue.ui.xml
New file
0,0 → 1,33
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:vues="urn:import:org.tela_botanica.del.client.vues.plateformedetermination.forum">
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<ui:style src="formulaireProposition.css" />
<g:VerticalPanel styleName="{style.formulaireProposition}">
<g:Label text="{constants.proposer_sa_determination}" styleName="titre"/>
<g:Label text="{constants.infoProposerDetermination}" styleName="petit"/>
<g:HTML><br /></g:HTML>
<g:HorizontalPanel>
<g:VerticalPanel styleName="{style.colonneGauche}">
<g:Label text="{constants.vous}" styleName="sousTitre"/>
<g:Label text="{constants.infoVous}" styleName="petit" />
<g:TextBox ui:field="nomPrenom" />
<g:HTML><br /></g:HTML>
<g:Label text="{constants.choisir_un_taxon}" styleName="sousTitre"/>
<g:HTML HTML="{constants.infoTaxon}" styleName="petit"/>
<g:TextBox ui:field="propositionTaxon" />
<g:HTML><br /></g:HTML>
</g:VerticalPanel>
<g:VerticalPanel styleName="{style.colonneGauche}">
<g:Label text="{constants.commentaire}" styleName="sousTitre"/>
<g:TextArea ui:field="commentaires" styleName="{style.commentaire}" />
</g:VerticalPanel>
</g:HorizontalPanel>
<g:Button text="{constants.boutonProposer}" ui:field="boutonValidationProposition" styleName="{style.boutonProposer}"/>
</g:VerticalPanel>
 
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionPresenteur.java
New file
0,0 → 1,71
package org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition;
 
import java.util.Date;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.validation.TextNotNullFormValidator;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HasWidgets;
 
public class FormulairePropositionPresenteur {
 
private FormulairePropositionVue formulairePropositionVue = new FormulairePropositionVue();
 
public void go(HasWidgets composite) {
 
composite.add(formulairePropositionVue);
gererEvenements();
}
 
private void gererEvenements() {
formulairePropositionVue.getBoutonValidationProposition().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
if(!validerSaisieProposition()) {
return;
} else {
PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition();
CacheClient.getInstance().getCurrentObservation().addImageCelValidationData(propositionAjoutee);
EvenementAjoutDetermination evenementAjoutDetermination=new EvenementAjoutDetermination(propositionAjoutee);
BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination);
}
}
});
}
private boolean validerSaisieProposition() {
TextNotNullFormValidator validateurTaxon = new TextNotNullFormValidator(formulairePropositionVue.getNomPrenom());
boolean taxonSaisi = validateurTaxon.validate();
return taxonSaisi;
}
private PropositionDetermination collecterValeursSaisieProposition() {
PropositionDetermination propositionAjoutee = new PropositionDetermination();
propositionAjoutee.setId(CacheClient.getInstance().getImageCourante().getIdImage());
String auteur = formulairePropositionVue.getNomPrenom().getText();
if(formulairePropositionVue.getCommentaires().getText() != "") {
String contenuCommentaire = formulairePropositionVue.getCommentaires().getText();
Commentaire comm = new Commentaire(auteur, new Date(),contenuCommentaire);
propositionAjoutee.ajouterCommentaire(comm);
}
propositionAjoutee.setContributeur(auteur);
propositionAjoutee.setDate(new Date());
propositionAjoutee.setEspece(formulairePropositionVue.getPropositionTaxon().getText());
return propositionAjoutee;
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionVue.java
New file
0,0 → 1,54
package org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition;
 
import java.util.Iterator;
import java.util.List;
 
import com.google.gwt.core.client.GWT;
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.ListBox;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
 
public class FormulairePropositionVue extends Composite {
 
@UiField(provided = true)
public TextBox nomPrenom = new TextBox();
 
@UiField(provided = true)
public TextBox propositionTaxon = new TextBox();
 
@UiField(provided = true)
public TextArea commentaires = new TextArea();
 
@UiField(provided = true)
public Button boutonValidationProposition = new Button();
 
interface FormulairePropositionUIiBinder extends UiBinder<Widget, FormulairePropositionVue> {
};
 
FormulairePropositionUIiBinder uiBinder = GWT.create(FormulairePropositionUIiBinder.class);
 
public FormulairePropositionVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
public TextBox getNomPrenom() {
return nomPrenom;
}
 
public TextBox getPropositionTaxon() {
return propositionTaxon;
}
 
public TextArea getCommentaires() {
return commentaires;
}
 
public Button getBoutonValidationProposition() {
return boutonValidationProposition;
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/formulaireProposition.css
New file
0,0 → 1,8
.formulaireProposition {border:solid 1px #AAA; width:100%; padding:15px; -moz-box-shadow:5px 5px 5px #AAA}
.boutonProposer {float:right; margin-right:55px; margin-top:-85px; padding:10px; background:url(./img/add.png) no-repeat 5px 12px #DDD; padding-left:20px; cursor:pointer}
.boutonProposer:hover {background-color:#AAA}
.colonneGauche, .colonneDroite {width:250px;}
.colonneGauche {padding-right:30px}
.colonneGauche select {width:100%}
.colonneGauche input {width:95%}
.commentaire {width:250px; height:100px}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulairerechercheeflore/FormulaireRechercheEfloreVue.ui.xml
New file
0,0 → 1,15
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<g:VerticalPanel>
<g:Label text="{constants.comparer}" styleName="sousTitre"/>
<g:Label text="{constants.infoComparer}" styleName="petit"/>
<g:HTML><br /></g:HTML>
<g:HorizontalPanel><g:TextBox ui:field="formulaireRechercheObservationEflore"/>
<g:Button text="{constants.ok}" ui:field="boutonValidationRechercheObservation" /></g:HorizontalPanel>
</g:VerticalPanel>
 
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulairerechercheeflore/FormulaireRechercheEflorePresenteur.java
New file
0,0 → 1,30
package org.tela_botanica.del.client.vues.plateformedetermination.formulairerechercheeflore;
 
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.comparaisoneflore.EvenementComparaisonEflore;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HasWidgets;
 
public class FormulaireRechercheEflorePresenteur {
 
FormulaireRechercheEfloreVue formulaireRechercheEfloreVue = new FormulaireRechercheEfloreVue();
 
public void go(HasWidgets composite) {
composite.add(formulaireRechercheEfloreVue);
gererEvenements();
}
 
private void gererEvenements() {
formulaireRechercheEfloreVue.getBoutonValidationRechercheObservation().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
EvenementComparaisonEflore evenementComparaisonEflore = new EvenementComparaisonEflore(formulaireRechercheEfloreVue.getFormulaireRechercheObservationEflore().getText());
BusEvenementiel.getInstance().fireEvent(evenementComparaisonEflore);
}
});
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulairerechercheeflore/FormulaireRechercheEfloreVue.java
New file
0,0 → 1,33
package org.tela_botanica.del.client.vues.plateformedetermination.formulairerechercheeflore;
 
import com.google.gwt.core.client.GWT;
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.TextBox;
import com.google.gwt.user.client.ui.Widget;
 
public class FormulaireRechercheEfloreVue extends Composite {
 
@UiField(provided = true)
public TextBox formulaireRechercheObservationEflore = new TextBox();
@UiField(provided = true)
public Button boutonValidationRechercheObservation = new Button();
interface FormulaireRechercheEfloreUIiBinder extends UiBinder<Widget, FormulaireRechercheEfloreVue>{};
FormulaireRechercheEfloreUIiBinder uiBinder = GWT.create(FormulaireRechercheEfloreUIiBinder.class);
 
public FormulaireRechercheEfloreVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
public TextBox getFormulaireRechercheObservationEflore() {
return formulaireRechercheObservationEflore;
}
 
public Button getBoutonValidationRechercheObservation() {
return boutonValidationRechercheObservation;
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationVue.ui.xml
New file
0,0 → 1,24
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder
xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:forum="urn:import:org.tela_botanica.del.client.vues.plateformedetermination.forum">
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<ui:style src="determinationVue.css" />
<g:HorizontalPanel styleName="{style.zoneDetermination}">
<g:VerticalPanel styleName="{style.zoneDetailImage}">
<g:VerticalPanel ui:field="detailImageObservation" styleName="{style.zoneImage}"/>
<g:VerticalPanel ui:field="formulaireRechercheEflore"/>
</g:VerticalPanel>
<g:VerticalPanel styleName="{style.zoneVote}">
<g:VerticalPanel ui:field="vote" styleName="plein"/>
<g:VerticalPanel ui:field="barreRepartition" styleName="{style.zoneBarreRepartition} repartitionVoteTaxonPopulaire plein"/>
<g:HTML><br /></g:HTML>
<g:VerticalPanel ui:field="forum" styleName="plein"/>
<g:HTML><br /></g:HTML>
<g:VerticalPanel ui:field="formulaireProposition" styleName="plein"/>
</g:VerticalPanel>
</g:HorizontalPanel>
 
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/EnsembleVotesVue.ui.xml
New file
0,0 → 1,10
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<g:HTMLPanel styleName="plein">
<g:Label text="{constants.votes}" styleName="titre"/>
<g:Label text="{constants.infoVotes}" styleName="petit"/>
<g:VerticalPanel ui:field="panneauVotes" styleName="plein"/>
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/moyenne/MoyenneVoteProtocoleVue.ui.xml
New file
0,0 → 1,20
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
ui:generateLocales="default">
 
<ui:style src="moyenneVoteProtocole.css" />
 
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<g:HorizontalPanel styleName="{style.protocole} plein">
<g:VerticalPanel styleName="{style.nomProtocole}">
<g:Label ui:field="nomProtocole" text="{constants.chargement}" styleName="gras"/>
<g:FocusPanel ui:field="moyenneVotes" />
</g:VerticalPanel>
<g:VerticalPanel styleName="{style.nbVotes} gras">
<g:Label text="Votes" />
<g:Label ui:field="nbVotes" />
</g:VerticalPanel>
<g:FocusPanel ui:field="monVote" styleName="{style.monVote} gras"/>
</g:HorizontalPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/moyenne/MoyenneVoteProtocolePresenteur.java
New file
0,0 → 1,25
package org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.moyenne;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.personnel.MonVoteProtocolePresenteur;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class MoyenneVoteProtocolePresenteur {
 
private MoyenneVoteProtocoleVue view;
private Protocole protocole;
 
public MoyenneVoteProtocolePresenteur(Protocole protocole, List<VoteProtocole> validationDatas) {
view = new MoyenneVoteProtocoleVue(protocole, validationDatas);
}
 
public void go(HasWidgets container) {
container.add(view);
new MonVoteProtocolePresenteur(protocole).go(view.getMonVote());
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/moyenne/MoyenneVoteProtocoleVue.java
New file
0,0 → 1,58
package org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.moyenne;
 
import java.util.List;
 
import org.cobogw.gwt.user.client.ui.Rating;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FocusPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
 
public class MoyenneVoteProtocoleVue extends Composite {
 
interface MyUiBinder extends UiBinder<Widget, MoyenneVoteProtocoleVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField
FocusPanel moyenneVotes, monVote;
 
@UiField
Label nbVotes, nomProtocole;
 
protected MoyenneVoteProtocoleVue(Protocole protocole, List<VoteProtocole> validationDatas) {
initWidget(uiBinder.createAndBindUi(this));
 
nomProtocole.setText(protocole.getNom());
 
int meanVote = 0;
int nbVote = 0;
for (VoteProtocole validationData : validationDatas) {
meanVote += validationData.getVote();
nbVote++;
}
if (nbVote > 0)
meanVote /= nbVote;
Rating rating = new Rating(meanVote, 5);
rating.setReadOnly(true);
moyenneVotes.add(rating);
 
nbVotes.setText(String.valueOf(validationDatas.size()));
 
}
 
public FocusPanel getMonVote() {
return monVote;
}
 
public void setMonVote(FocusPanel monVote) {
this.monVote = monVote;
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/moyenne/moyenneVoteProtocole.css
New file
0,0 → 1,3
.nomProtocole {width:250px;}
.monVote, .nbVotes {width:125px}
.protocole {padding:10px 15px 10px 15px; border:solid 1px #ddd; margin-bottom:1px}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/voteProtocole.css
New file
0,0 → 1,2
.tiers {border :solid 1px red}
.nomProtocole {border:solid 1px}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/VoteProtocoleVue.ui.xml
New file
0,0 → 1,14
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
ui:generateLocales="default">
 
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="voteProtocole.css" />
 
<g:HorizontalPanel>
<g:Label ui:field="nomProtocole" text="{constants.chargement}" />
<g:FocusPanel ui:field="moyenneVotes" />
<g:FocusPanel ui:field="monVote" />
</g:HorizontalPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/VoteProtocolePresenteur.java
New file
0,0 → 1,32
package org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.moyenne.MoyenneVoteProtocolePresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.personnel.MonVoteProtocolePresenteur;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class VoteProtocolePresenteur {
 
private VoteProtocoleVue vue = new VoteProtocoleVue();
 
private Protocole protocole;
 
private List<VoteProtocole> validationDatas;
 
public VoteProtocolePresenteur(Protocole protocole, List<VoteProtocole> validationDatas) {
this.protocole = protocole;
this.validationDatas = validationDatas;
}
 
public void go(HasWidgets container) {
container.add(vue);
new MoyenneVoteProtocolePresenteur(protocole, validationDatas).go(vue.getMoyenneVotes());
new MonVoteProtocolePresenteur(protocole).go(vue.getMonVote());
 
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/VoteProtocoleVue.java
New file
0,0 → 1,41
package org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FocusPanel;
import com.google.gwt.user.client.ui.Widget;
 
public class VoteProtocoleVue extends Composite {
 
interface MyUiBinder extends UiBinder<Widget, VoteProtocoleVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField
FocusPanel moyenneVotes, monVote;
 
protected VoteProtocoleVue() {
initWidget(uiBinder.createAndBindUi(this));
 
}
 
public FocusPanel getMonVote() {
return monVote;
}
 
public void setMonVote(FocusPanel monVote) {
this.monVote = monVote;
}
 
public FocusPanel getMoyenneVotes() {
return moyenneVotes;
}
 
public void setMoyenneVotes(FocusPanel moyenneVotes) {
this.moyenneVotes = moyenneVotes;
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/personnel/MonVoteProtocoleVue.ui.xml
New file
0,0 → 1,14
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
ui:generateLocales="default">
 
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<g:HorizontalPanel>
<g:VerticalPanel>
<g:Label text="{constants.mon_vote}" />
<g:FocusPanel ui:field="voter" />
</g:VerticalPanel>
<g:Button ui:field="boutonVote" text="{constants.ok}"></g:Button>
</g:HorizontalPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/personnel/MonVoteProtocolePresenteur.java
New file
0,0 → 1,45
package org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.personnel;
 
import java.util.Date;
 
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.utils.MockDatasource;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HasWidgets;
 
public class MonVoteProtocolePresenteur {
 
private MonVoteProtocoleVue vue;
 
private Protocole protocole;
 
private MockDatasource voteService = MockDatasource.getInstance();
 
public MonVoteProtocolePresenteur(Protocole protocole) {
this.protocole = protocole;
vue = new MonVoteProtocoleVue();
}
 
public void go(HasWidgets container) {
container.add(vue);
}
 
public void gererEvenements() {
vue.getBoutonVote().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
VoteProtocole voteProtocole = new VoteProtocole();
voteProtocole.setDate(new Date());
voteProtocole.setVote(vue.getRating().getValue());
voteProtocole.setProtocol(protocole);
 
vue.getRating();
voteService.saveVote(voteProtocole);
}
});
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/personnel/MonVoteProtocoleVue.java
New file
0,0 → 1,51
package org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.personnel;
 
import org.cobogw.gwt.user.client.ui.Rating;
 
import com.google.gwt.core.client.GWT;
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.FocusPanel;
import com.google.gwt.user.client.ui.Widget;
 
public class MonVoteProtocoleVue extends Composite {
 
interface MyUiBinder extends UiBinder<Widget, MonVoteProtocoleVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField
FocusPanel voter;
@UiField
Button boutonVote;
private Rating rating = new Rating(0, 5);
 
protected MonVoteProtocoleVue() {
initWidget(uiBinder.createAndBindUi(this));
rating.setReadOnly(false);
voter.add(rating);
 
}
 
public Rating getRating() {
return rating;
}
 
public void setRating(Rating rating) {
this.rating = rating;
}
 
public Button getBoutonVote() {
return boutonVote;
}
 
public void setBoutonVote(Button boutonVote) {
this.boutonVote = boutonVote;
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/EnsembleVotesPresenteur.java
New file
0,0 → 1,36
package org.tela_botanica.del.client.vues.plateformedetermination.vote;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.utils.MockDatasource;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.moyenne.MoyenneVoteProtocolePresenteur;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class EnsembleVotesPresenteur {
 
private EnsembleVotesVue vue = new EnsembleVotesVue();
 
private MockDatasource validationService = MockDatasource.getInstance();
 
public void go(HasWidgets container) {
container.add(vue);
afficherVotes();
}
 
private void afficherVotes() {
 
String idImageCourante = CacheClient.getInstance().getImageCourante().getIdImage();
 
Protocole protocoleEsthetisme = validationService.getProtocole(Protocole.ESTHETISME);
List<VoteProtocole> observationValidationsEsthetisme = validationService.getVoteByImageAndProtocol(idImageCourante, Protocole.ESTHETISME);
new MoyenneVoteProtocolePresenteur(protocoleEsthetisme, observationValidationsEsthetisme).go(vue.getPanneauVotes());
 
Protocole protocoleIdentification = validationService.getProtocole(Protocole.IDENTIFICATION_AUTOMATIQUE);
List<VoteProtocole> observationValidationsIdentification = validationService.getVoteByImageAndProtocol(idImageCourante, Protocole.IDENTIFICATION_AUTOMATIQUE);
new MoyenneVoteProtocolePresenteur(protocoleIdentification, observationValidationsIdentification).go(vue.getPanneauVotes());
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/EnsembleVotesVue.java
New file
0,0 → 1,33
package org.tela_botanica.del.client.vues.plateformedetermination.vote;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
 
public class EnsembleVotesVue extends Composite {
 
interface MyUiBinder extends UiBinder<Widget, EnsembleVotesVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField()
VerticalPanel panneauVotes;
 
public EnsembleVotesVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
public VerticalPanel getPanneauVotes() {
return panneauVotes;
}
 
public void setPanneauVotes(VerticalPanel panneauVotes) {
this.panneauVotes = panneauVotes;
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/barrerepartition/barreRepartitionVote.css
New file
0,0 → 1,0
.boutonVote {float:left;text-align: center;}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/barrerepartition/BarreRepartitionVoteVue.ui.xml
New file
0,0 → 1,13
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="barreRepartitionVote.css" />
<g:HTMLPanel>
<div class="conteneurBoutonVote">
<g:PushButton ui:field="boutonOui" styleName="{style.boutonVote}" />
<g:PushButton ui:field="boutonNon" styleName="{style.boutonVote}" />
</div>
<g:HTML ui:field="barreRepartitionHtmlBrut" styleName="conteneurBarreRepartition"/>
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/barrerepartition/BarreRepartitionVotePresenteur.java
New file
0,0 → 1,83
package org.tela_botanica.del.client.vues.plateformedetermination.vote.barrerepartition;
 
import java.util.Date;
 
import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
import org.tela_botanica.del.client.utils.MockDatasource;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasWidgets;
 
public class BarreRepartitionVotePresenteur {
private BarreRepartitionVoteVue vue = new BarreRepartitionVoteVue();
 
private MockDatasource validationService = MockDatasource.getInstance();
private MoyenneVote moyenneVote;
public void go(HasWidgets container) {
container.add(vue);
}
 
public void afficherVotes(MoyenneVote moyenneVote) {
this.moyenneVote = moyenneVote;
vue.afficherVotes(moyenneVote.getScore(), moyenneVote.getIntituleAssocie());
gererEvenements();
}
public BarreRepartitionVoteVue getBarreRepartitionVoteVue() {
return vue;
}
public HTML getBarreRepartitionVoteVueHTML() {
return vue.getBarreRepartitionHtmlBrut();
}
public void gererEvenements() {
vue.getBoutonOui().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
VoteDetermination vd = new VoteDetermination();
vd.setContributeur("test");
vd.setDate(new Date());
vd.setVote(1);
vd.setId("3");
vue.getBoutonOui().setEnabled(false);
vue.getBoutonNon().setEnabled(true);
moyenneVote.getPropositionAssociee().ajouterVoteDetermination(vd);
moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee());
afficherVotes(moyenneVote);
}
});
vue.getBoutonNon().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
VoteDetermination vd = new VoteDetermination();
vd.setContributeur("test");
vd.setDate(new Date());
vd.setVote(0);
vd.setId("3");
vue.getBoutonOui().setEnabled(true);
vue.getBoutonNon().setEnabled(false);
moyenneVote.getPropositionAssociee().ajouterVoteDetermination(vd);
moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee());
afficherVotes(moyenneVote);
}
});
}
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/barrerepartition/BarreRepartitionVoteVue.java
New file
0,0 → 1,72
package org.tela_botanica.del.client.vues.plateformedetermination.vote.barrerepartition;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.Widget;
 
public class BarreRepartitionVoteVue extends Composite implements IsWidget {
interface MyUiBinder extends UiBinder<Widget, BarreRepartitionVoteVue> {}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
private int pourcentage = -1;
private int tailleBarre = 0;
private String nomTaxon = "";
@UiField(provided = true)
public PushButton boutonOui = new PushButton("+");
@UiField(provided = true)
public PushButton boutonNon = new PushButton("-");
@UiField(provided = true)
public HTML barreRepartitionHtmlBrut = new HTML("<div class=\"barreRepartition\"></div>");
public BarreRepartitionVoteVue() {
initWidget(uiBinder.createAndBindUi(this));
boutonNon.setWidth("20px");
boutonOui.setWidth("20px");
}
public void afficherVotes(int pourcentage, String NomTaxon) {
this.pourcentage = pourcentage;
this.nomTaxon = NomTaxon;
tailleBarre = (pourcentage > -1) ? pourcentage : 0;
String classe = "barreRepartition";
if(pourcentage == -1) {
classe = "barreRepartitionAucunVote";
}
String chaineHtml = "<div class=\"conteneurBarreRepartition\">" +
"<div class=\""+classe+"\">"+
"<div style=\"width:"+tailleBarre+"%\" class=\"elementBarreRepartition voteOui\"></div>"+
"</div>"+
"<span class=\"nomTaxonBarreRepartition\">"+nomTaxon+"</span>"+
"</div>";
barreRepartitionHtmlBrut.setHTML(chaineHtml);
}
public HTML getBarreRepartitionHtmlBrut() {
return barreRepartitionHtmlBrut;
}
public PushButton getBoutonOui() {
return boutonOui;
}
public PushButton getBoutonNon() {
return boutonNon;
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationPresenteur.java
New file
0,0 → 1,48
package org.tela_botanica.del.client.vues.plateformedetermination;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
import org.tela_botanica.del.client.vues.plateformedetermination.detail.DetailImageObservationPresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition.FormulairePropositionPresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.formulairerechercheeflore.FormulaireRechercheEflorePresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.forum.ForumPresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.EnsembleVotesPresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.barrerepartition.BarreRepartitionVotePresenteur;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class DeterminationPresenteur {
 
DeterminationVue determinationVue = new DeterminationVue();
BarreRepartitionVotePresenteur barreRepartitionVotePresenteur;
 
public DeterminationPresenteur() {
 
}
 
public void go(HasWidgets composite) {
 
new DetailImageObservationPresenteur().go(determinationVue.getDetailImageObservation());
new EnsembleVotesPresenteur().go(determinationVue.getVote());
new ForumPresenteur().go(determinationVue.getForum());
new FormulairePropositionPresenteur().go(determinationVue.getFormulaireProposition());
new FormulaireRechercheEflorePresenteur().go(determinationVue.getFormulaireRechercheEflore());
 
barreRepartitionVotePresenteur = new BarreRepartitionVotePresenteur();
barreRepartitionVotePresenteur.go(determinationVue.getBarreRepartition());
calculerEtAfficherVoteDeterminationPlusPopulaire();
 
composite.add(determinationVue);
}
 
private void calculerEtAfficherVoteDeterminationPlusPopulaire() {
 
List<MoyenneVote> votesOrdonnes = CalculVoteDeterminationService.calculerVoteDeterminationPlusPopulaire(CacheClient.getInstance().getCurrentObservation().getPropositionsDetermination());
if (votesOrdonnes.size() > 0) {
barreRepartitionVotePresenteur.afficherVotes(votesOrdonnes.get(0));
}
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/DetailImageVue.ui.xml
New file
0,0 → 1,11
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'
ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat' ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default">
<ui:with field='res' type='org.tela_botanica.del.client.Ressources'/>
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
 
<ui:style src="detailImage.css" />
<g:HTMLPanel styleName="{style.detailImage}">
<g:Image ui:field="photoPrincipale" />
<g:Label ui:field="texteAlternatif"/>
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/DetailImagePresenteur.java
New file
0,0 → 1,24
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class DetailImagePresenteur extends Presenteur {
 
public DetailImagePresenteur(String urlImage, String texteAlternatif) {
super(new DetailImageVue(urlImage, texteAlternatif));
}
 
@Override
public void go(HasWidgets composite) {
composite.add(this.getVue());
}
 
@Override
protected void handleEvents() {
// TODO Auto-generated method stub
 
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/RechercheObservationsVue.ui.xml
New file
0,0 → 1,66
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'
ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat' ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default">
<ui:with field='res' type='org.tela_botanica.del.client.Ressources'/>
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
 
<ui:style src="RechercheObservations.css" />
<g:HTMLPanel styleName="contenu">
<g:Label text="Vue Recherche Observations" styleName="titre"/>
<g:Label text="la vue pour rechercher parmi les observations" styleName="petit"/>
<g:TextBox styleName="{style.recherchePrincipale}" ui:field="recherchePrincipale">Recherche libre</g:TextBox>
<g:Button styleName="{style.boutonRecherche}" ui:field="boutonRecherche">Rechercher</g:Button>
<g:Label styleName="{style.lienRechercheAvancee}" ui:field="lienRechercheAvancee">Recherche avancée</g:Label>
<g:HTMLPanel styleName="{style.rechercheAvancee}" ui:field="rechercheAvancee">
<g:HTMLPanel styleName="{style.champRecherche}">
<g:Label text="Département"/>
<g:TextBox ui:field="departement"/>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.champRecherche}">
<g:Label text="Commune"/>
<g:TextBox ui:field="commune"/>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.champRecherche}">
<g:Label text="Taxon"/>
<g:TextBox ui:field="taxon"/>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.champRecherche}">
<g:Label text="Famille"/>
<g:TextBox ui:field="famille"/>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.champRecherche}">
<g:Label text="Genre"/>
<g:TextBox ui:field="genre"/>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.champRecherche}">
<g:Label text="Tag"/>
<g:TextBox ui:field="tag"/>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.champRecherche}">
<g:Label text="Mot-clé"/>
<g:TextBox ui:field="motCle"/>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.champRecherche}">
<g:Label text="Auteur"/>
<g:TextBox ui:field="auteur"/>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.champRecherche}">
<g:Label text="Date"/>
<g:TextBox ui:field="date"/>
</g:HTMLPanel>
<g:Button styleName="{style.boutonRecherche}" ui:field="boutonRechercheAvancee">Rechercher</g:Button>
<g:HTMLPanel styleName="nettoyage" />
</g:HTMLPanel>
<g:Label ui:field="recherchePrecedente" styleName="{style.recherchePrecedente}"></g:Label>
<g:HTMLPanel ui:field="zoneObservations" />
<g:HTMLPanel ui:field="zonePagination" />
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/observation.css
New file
0,0 → 1,6
.ligneObservation {-moz-box-shadow: 5px 0px 5px #DDD; -moz-border-radius:10px; margin-bottom:10px; border:solid 1px #DDD}
.description {border:solid 1px #EEE; border-width:0 1px 0 0; width:25%; float:left;padding : 10px; margin:0 1px 5px 0; height:150px}
.photos {border:solid 1px #EEE; border-width:0 1px 0 0; width:33%; float:left; -moz-border-radius: 0px; padding : 10px; margin:0 1px 5px 0; height:170px}
.determination {width:37%; float:left; padding : 10px; margin:0 1px 5px 0; height:150px}
.photos img {float:left; padding:2px; -moz-box-shadow:2px 2px 2px #DDD; cursor:pointer}
.photoPrincipale {height:130px; width:140px; float:left; padding:5px; cursor:pointer}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/RechercheObservationsPresenteur.java
New file
0,0 → 1,164
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
 
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;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
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.HasWidgets;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
 
public class RechercheObservationsPresenteur extends Presenteur {
 
private List<Observation> observations;
 
public RechercheObservationsPresenteur() {
super(new RechercheObservationsVue());
}
 
public void go(HasWidgets composite) {
if (composite == null) {
composite = RootPanel.get();
}
composite.add(this.getVue());
handleEvents();
 
// On commence par afficher la totalité des observations
chercherObservations(null);
afficherObservations();
}
 
protected void handleEvents() {
 
RechercheObservationsVue vue = (RechercheObservationsVue) getVue();
 
// Gestion du clic dans la zone de saisie
vue.recherchePrincipale.addClickHandler(new ClickHandler() {
 
public void onClick(ClickEvent event) {
TextBox recherchePrincipale = (TextBox) event.getSource();
if (recherchePrincipale.getText().equals("Recherche libre")) {
recherchePrincipale.setText("");
}
}
});
 
// Gestion de l'affichage de la recherche Avancée
vue.lienRechercheAvancee.addClickHandler(new ClickHandler() {
 
public void onClick(ClickEvent event) {
Panel rechercheAvancee = ((RechercheObservationsVue) getVue()).rechercheAvancee;
rechercheAvancee.setVisible(!rechercheAvancee.isVisible());
}
});
 
// Gestion de l'évènement recherche sur le clic ou sur l'appui de la
// touche Entrée
vue.boutonRecherche.addClickHandler(new ClickHandler() {
 
public void onClick(ClickEvent event) {
chercherObservations(collecterFormulaire());
afficherObservations();
}
});
 
vue.boutonRechercheAvancee.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
chercherObservations(collecterFormulaire());
afficherObservations();
}
});
 
vue.recherchePrincipale.addKeyPressHandler(new KeyPressHandler() {
 
public void onKeyPress(KeyPressEvent event) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
chercherObservations(collecterFormulaire());
afficherObservations();
}
}
});
}
 
// 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.departement.getText().equals("")) {
champsRecherche.put("dept", vue.departement.getText());
}
if (!vue.commune.getText().equals("")) {
champsRecherche.put("com", vue.commune.getText());
}
if (!vue.taxon.getText().equals("")) {
champsRecherche.put("taxon", vue.taxon.getText());
}
if (!vue.famille.getText().equals("")) {
champsRecherche.put("fam", vue.famille.getText());
}
if (!vue.genre.getText().equals("")) {
champsRecherche.put("gen", vue.genre.getText());
}
if (!vue.tag.getText().equals("")) {
champsRecherche.put("tag", vue.tag.getText());
}
if (!vue.motCle.getText().equals("")) {
champsRecherche.put("motCle", vue.motCle.getText());
}
if (!vue.auteur.getText().equals("")) {
champsRecherche.put("auteur", vue.auteur.getText());
}
if (!vue.date.getText().equals("")) {
champsRecherche.put("date", vue.date.getText());
}
return champsRecherche;
}
 
public void chercherObservations(HashMap<String, String> champsRecherche) {
 
RechercheObservationsVue vue = (RechercheObservationsVue) getVue();
vue.rechercheAvancee.setVisible(false);
this.observations = MockDatasource.getInstance().getObservations(champsRecherche);
vue.recherchePrecedente.setText(getChaineRecherche(champsRecherche));
}
 
public void afficherObservations() {
RechercheObservationsVue vue = (RechercheObservationsVue) getVue();
 
vue.zoneObservations.clear();
for (Observation observation : observations) {
ObservationPresenteur presenteur = new ObservationPresenteur(observation);
presenteur.go(vue.zoneObservations);
}
}
 
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;
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/DetailImageVue.java
New file
0,0 → 1,30
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
 
public class DetailImageVue extends Composite {
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, DetailImageVue> {
}
 
private static Binder binder = GWT.create(Binder.class);
 
@UiField
protected Image photoPrincipale;
 
@UiField
protected Label texteAlternatif;
 
public DetailImageVue(String urlImage, String texteAlternatif) {
initWidget(binder.createAndBindUi(this));
photoPrincipale.setUrl(urlImage);
this.texteAlternatif.setText(texteAlternatif);
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationVue.ui.xml
New file
0,0 → 1,27
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'
ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat' ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default">
<ui:with field='res' type='org.tela_botanica.del.client.Ressources'/>
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
 
<ui:style src="observation.css" />
<g:HTMLPanel styleName="{style.ligneObservation}">
<g:HTMLPanel styleName="{style.description}">
<g:Label ui:field="nomRetenu" styleName="sousTitre"/>
<g:Label ui:field="famille" />
<g:Label ui:field="auteur" /> - <g:Label ui:field="date" />
<g:Label ui:field="localite" />
<g:Label ui:field="motsClefs" />
<g:Label ui:field="numNomenclatural" />
</g:HTMLPanel>
<g:HorizontalPanel styleName="{style.photos}">
<g:Image ui:field="photoPrincipale" styleName="{style.photoPrincipale}"/>
<g:HTMLPanel ui:field="photos"></g:HTMLPanel>
</g:HorizontalPanel>
<g:FlexTable styleName="{style.determination}" ui:field="tableauPropositions" />
<g:HTMLPanel styleName="nettoyage" />
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/RechercheObservationsVue.java
New file
0,0 → 1,40
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import com.google.gwt.core.client.GWT;
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.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 {
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, RechercheObservationsVue> {
}
 
private static Binder binder = GWT.create(Binder.class);
 
// Définir ici les champs de la vue à afficher en protected
@UiField
protected TextBox recherchePrincipale, departement, commune, taxon, famille, genre, tag, motCle, auteur, date;
 
@UiField
protected Button boutonRecherche, boutonRechercheAvancee;
 
@UiField
protected Label lienRechercheAvancee, recherchePrecedente;
 
@UiField
protected Panel rechercheAvancee, zoneObservations, zonePagination;
 
// Constructeur de la vue
public RechercheObservationsVue() {
initWidget(binder.createAndBindUi(this));
rechercheAvancee.setVisible(false);
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationPresenteur.java
New file
0,0 → 1,112
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Image;
 
public class ObservationPresenteur extends Presenteur {
 
private Observation observation;
 
public ObservationPresenteur(Observation observation) {
super(new ObservationVue());
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());
 
List<String> motsCles = observation.getMotsClefs();
Iterator<String> itMotsCles = motsCles.iterator();
String motsClesChaine = "";
while (itMotsCles.hasNext()) {
String motCle = itMotsCles.next();
motsClesChaine += motCle;
if (itMotsCles.hasNext()) {
motsClesChaine += ", ";
}
}
vue.motsClefs.setText(motsClesChaine);
vue.nomRetenu.setText(observation.getNomRetenu());
vue.numNomenclatural.setText(observation.getNumNomenclatural());
 
List<org.tela_botanica.del.client.modeles.Image> images = observation.getImages();
 
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());
images.remove(0);
 
int nbImagesAffichees = 0;
for (org.tela_botanica.del.client.modeles.Image imageCourante : images) {
nbImagesAffichees++;
if (nbImagesAffichees < 5) {
Image photo = new Image();
photo.setUrl(imageCourante.getUrlFormat("CRX2S"));
photo.setTitle(imageCourante.getUrlFormat("L"));
photo.setAltText(observation.getAuteur() + " - " + observation.getNomRetenu());
photo.addClickHandler(new ClickHandler() {
 
public void onClick(ClickEvent event) {
Image photo = (Image) event.getSource();
ouvrirFenetreModale(new DetailImagePresenteur(photo.getTitle(), photo.getAltText()));
}
});
vue.photos.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");
 
int i = 0;
for (PropositionDetermination proposition : propositions) {
i++;
vue.tableauPropositions.setText(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());
}
 
handleEvents();
// vue.propositions.setText(ch);
}
 
public void go(HasWidgets composite) {
composite.add(this.getVue());
}
 
protected void handleEvents() {
ObservationVue vue = (ObservationVue) this.getVue();
vue.photoPrincipale.addClickHandler(new ClickHandler() {
 
public void onClick(ClickEvent event) {
Image photoPrincipale = (Image) event.getSource();
ouvrirFenetreModale(new DetailImagePresenteur(photoPrincipale.getTitle(), photoPrincipale.getAltText()));
}
});
 
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationVue.java
New file
0,0 → 1,36
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
public class ObservationVue extends Composite {
 
// Gestion d'UiBinder
interface Binder extends UiBinder<Widget, ObservationVue> {
}
 
private static Binder binder = GWT.create(Binder.class);
 
@UiField
protected Label auteur, date, famille, localite, motsClefs, nomRetenu, numNomenclatural;
 
@UiField
protected FlexTable tableauPropositions;
 
@UiField
protected Image photoPrincipale;
 
@UiField
protected Panel photos;
 
public ObservationVue() {
initWidget(binder.createAndBindUi(this));
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/detailImage.css
New file
0,0 → 1,0
.detailImage {z-index:1500; padding:50px; background:white; width:50%; width:600px; margin:0 auto; margin-top:5%;}
/trunk/src/org/tela_botanica/del/client/vues/rechercheobservations/RechercheObservations.css
New file
0,0 → 1,6
.recherchePrincipale {width: 50%; font-size:18px; padding:5px; -moz-border-radius:10px; border:solid 1px #AAA;}
.boutonRecherche {border:solid 1px #AAA; -moz-border-radius:10px; padding:5px; cursor:pointer}
.lienRechercheAvancee {cursor:pointer; text-decoration:underline; color:blue; float:right; margin-right:240px; margin-top:10px}
.rechercheAvancee {border:solid 1px #333; padding:10px; -moz-border-radius:0 0 10px 10px; -moz-box-shadow:5px 5px 10px #EEE;position:absolute; width:700px; margin-top:5px; background:white}
.champRecherche {float:left; width:50%; padding-bottom:5px}
.recherchePrecedente {color:#555; padding:5px; font-style:italic}
/trunk/src/org/tela_botanica/del/client/vues/comparaisoneflore/comparaisonEflore.css
New file
0,0 → 1,7
.zoneComparaison {width:50%; margin:0 auto; height:100%}
.photoComparee {width:500px; margin-left:5px; padding:20px; border:#DDD solid 1px; -moz-border-radius:0 10px 10px 0;}
.photoPrincipale img, .photoComparee img {-moz-box-shadow:4px 4px 2px #AAA}
.photoPrincipale {width:500px; border:#DDD solid 1px; -moz-border-radius:10px 0 0 10px; padding:20px; height:100%}
.fleches {position:absolute; margin-left:-20px; padding:20px;margin-top:-50px; width:500px;}
.fleches img {cursor:pointer; -moz-box-shadow:0px 0px 0px #000}
.meta {color:white; background:#333; padding:10px; opacity:0.8em; margin-top:5px}
/trunk/src/org/tela_botanica/del/client/vues/comparaisoneflore/ComparaisonEfloreVue.ui.xml
New file
0,0 → 1,69
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
 
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'>
 
<ui:with field='res' type='org.tela_botanica.del.client.Ressources' />
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="comparaisonEflore.css" />
<g:HorizontalPanel styleName="{style.zoneComparaison}">
<g:VerticalPanel styleName="{style.photoPrincipale}">
<g:Label text="{constants.taxon_a_determiner}" styleName="titre"/>
<g:Label text="{constants.taxon_a_determiner}" styleName="petit"/>
<g:Image ui:field="imagePrincipale" />
<g:HTMLPanel styleName="{style.meta}">
<g:Label text="{constants.metadonnees_photo}" styleName="titre"/>
<g:Label text="{constants.metadonnees_photo}" styleName="petit"/>
<br />
<g:Label text="{constants.observateur}" styleName="petit"/><g:Label ui:field="nomAuteur" />
<g:Label text="{constants.date_observation}" styleName="petit"/>
<g:Label ui:field="dateObservation" />
<g:Label text="{constants.commentaires}" styleName="petit"/>
<g:Label ui:field="famille"/>
<g:Label text="{constants.mots_clefs}" styleName="petit"/>
<g:Label ui:field="motsClefs"/>
 
<br />
<g:Label text="{constants.valide_par}" styleName="petit"/>
<g:Label ui:field="validateurs"/>
<g:Label text="{constants.date_validation}" styleName="petit"/>
<g:Label ui:field="dateValidation"/>
</g:HTMLPanel>
</g:VerticalPanel>
<g:VerticalPanel styleName="{style.photoComparee}">
<g:Label text="{constants.image_eflore}" styleName="titre"/>
<g:Label text="{constants.image_eflore}" styleName="petit"/>
<g:Image ui:field="imageEflore" />
<g:HorizontalPanel styleName="{style.fleches}">
<g:Image ui:field="scrollLeftImage" resource='{res.arrowLeft}' styleName="gauche"/>
<g:Image ui:field="scrollRightImage" resource='{res.arrowRight}' styleName="droite" />
</g:HorizontalPanel>
<g:HTMLPanel styleName="{style.meta}">
<g:Label text="{constants.metadonnees_photo}" styleName="titre"/>
<g:Label text="{constants.metadonnees_photo}" styleName="petit"/>
<g:Label text="{constants.taxon}" styleName="petit"/>
<g:Label ui:field="nomEspeceEflore" />
 
<g:Label text="{constants.localite}" styleName="petit"/>
<g:Label ui:field="localiteEflore"/>
 
<g:Label text="{constants.auteur}" styleName="petit"/>
<g:Label ui:field="nomAuteurEflore"/>
 
<g:Label text="{constants.transmis_le}" styleName="petit"/>
<g:Label ui:field="dateObservationEflore"/>
</g:HTMLPanel>
 
 
</g:VerticalPanel>
</g:HorizontalPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/comparaisoneflore/ComparaisonEflorePresenteur.java
New file
0,0 → 1,69
package org.tela_botanica.del.client.vues.comparaisoneflore;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.utils.MockDatasource;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HasWidgets;
 
public class ComparaisonEflorePresenteur {
 
private ComparaisonEfloreVue vue = new ComparaisonEfloreVue();
 
private final MockDatasource observationService = MockDatasource.getInstance();
 
private final MockDatasource validationService = MockDatasource.getInstance();
 
private Image imagePrincipale;
 
private String nomTaxonComparaison;
 
private List<org.tela_botanica.del.client.modeles.Image> imagesEflore;
 
public ComparaisonEflorePresenteur() {
this.imagePrincipale = CacheClient.getInstance().getImageCourante();
this.nomTaxonComparaison = CacheClient.getInstance().getTaxonPourRechercheEflore();
}
 
public void go(HasWidgets composite) {
composite.add(vue);
chargerValidationObservationPrincipale();
vue.chargerImagePrincipale(imagePrincipale);
chargerObservationsEflore();
gererEvenements();
}
 
private void chargerValidationObservationPrincipale() {
List<VoteProtocole> observationValidations = validationService.getVote(imagePrincipale.getIdImage());
imagePrincipale.setVoteProtocoles(observationValidations);
}
 
private void chargerObservationsEflore() {
imagesEflore = observationService.getImagesEfloreParTaxon(nomTaxonComparaison);
vue.chargerImagesEflore(imagesEflore, 0);
}
 
private void gererEvenements() {
vue.getScrollLeftImage().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
vue.chargerImagesEflore(imagesEflore, vue.getCurrentIndexImages() - 1);
}
});
 
vue.getScrollRightImage().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
vue.chargerImagesEflore(imagesEflore, vue.getCurrentIndexImages() + 1);
}
});
}
 
}
/trunk/src/org/tela_botanica/del/client/vues/comparaisoneflore/ComparaisonEfloreVue.java
New file
0,0 → 1,117
package org.tela_botanica.del.client.vues.comparaisoneflore;
 
import java.util.Date;
import java.util.List;
 
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
 
public class ComparaisonEfloreVue extends Composite {
 
interface MyUiBinder extends UiBinder<Widget, ComparaisonEfloreVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField
Label nomAuteur, dateObservation, famille, motsClefs, validateurs, dateValidation;
 
@UiField
Label nomEspeceEflore, nomAuteurEflore, localiteEflore, dateObservationEflore;
 
@UiField
Image imagePrincipale;
 
@UiField
Image imageEflore;
 
@UiField
Image scrollLeftImage;
 
@UiField
Image scrollRightImage;
 
private int currentIndexImages;
 
public ComparaisonEfloreVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
protected void chargerImagePrincipale(org.tela_botanica.del.client.modeles.Image image) {
 
// mots clefs
String motsClefsConcatenes = "";
for (String motClef : image.getObservation().getMotsClefs()) {
motsClefsConcatenes += motClef + ",";
}
motsClefsConcatenes = motsClefsConcatenes.subSequence(0, motsClefsConcatenes.lastIndexOf(",")).toString();
 
// validateurs
String validateursConcatenes = "";
for (VoteProtocole observationValidation : image.getVoteProtocoles()) {
validateursConcatenes += observationValidation.getContributeur() + ", ";
}
validateursConcatenes = validateursConcatenes.subSequence(0, validateursConcatenes.lastIndexOf(",")).toString();
 
// date derniere validation
Date dateDerniereValidation = null;
for (VoteProtocole observationValidation : image.getVoteProtocoles()) {
if (dateDerniereValidation == null) {
dateDerniereValidation = observationValidation.getDate();
} else if (dateDerniereValidation.before(observationValidation.getDate())) {
dateDerniereValidation = observationValidation.getDate();
}
}
 
motsClefs.setText(motsClefsConcatenes);
nomAuteur.setText(image.getObservation().getAuteur());
imagePrincipale.setUrl(image.getUrl());
dateObservation.setText(image.getObservation().getDate());
famille.setText(image.getObservation().getFamille());
validateurs.setText(validateursConcatenes);
dateValidation.setText(DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT).format(dateDerniereValidation));
 
}
 
protected void chargerImagesEflore(List<org.tela_botanica.del.client.modeles.Image> observationsEflore, int indexImage) {
 
if (indexImage >= 0 && indexImage < observationsEflore.size()) {
currentIndexImages = indexImage;
}
 
org.tela_botanica.del.client.modeles.Image observationEflore = observationsEflore.get(currentIndexImages);
 
nomEspeceEflore.setText(observationEflore.getObservation().getSpecies());
nomAuteurEflore.setText(observationEflore.getObservation().getAuteur());
imageEflore.setUrl(observationEflore.getUrl());
dateObservationEflore.setText(observationEflore.getObservation().getDate());
localiteEflore.setText(observationEflore.getObservation().getLocalite());
 
}
 
public Image getScrollLeftImage() {
return scrollLeftImage;
}
 
public void setScrollLeftImage(Image scrollLeftImage) {
this.scrollLeftImage = scrollLeftImage;
}
 
public int getCurrentIndexImages() {
return currentIndexImages;
}
 
public Image getScrollRightImage() {
return scrollRightImage;
}
 
}
/trunk/src/org/tela_botanica/del/client/services/CalculVoteDeterminationService.java
New file
0,0 → 1,51
package org.tela_botanica.del.client.services;
 
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
 
import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.VoteDetermination;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.logging.client.FirebugLogHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.core.java.util.Collections;
 
 
public class CalculVoteDeterminationService {
public static List<MoyenneVote> calculerVoteDeterminationPlusPopulaire(List<PropositionDetermination> propositions) {
List<MoyenneVote> pairesVotes = new ArrayList<MoyenneVote>();
for (PropositionDetermination proposition : propositions) {
pairesVotes.add(calculerVoteDetermination(proposition));
}
java.util.Collections.sort(pairesVotes);
return pairesVotes;
}
public static MoyenneVote calculerVoteDetermination(PropositionDetermination propositionDetermination) {
List<VoteDetermination> votes = propositionDetermination.getVotesDeterminations();
int scoreVote = 0;
if(votes.size() > 0) {
for (VoteDetermination vote : votes) {
scoreVote += vote.getVote();
}
scoreVote = (scoreVote*100)/votes.size();
} else {
scoreVote = -1;
}
return new MoyenneVote(scoreVote, propositionDetermination);
}
}
/trunk/src/org/tela_botanica/del/client/Del.java
New file
0,0 → 1,17
package org.tela_botanica.del.client;
 
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
import org.tela_botanica.del.client.gestionhistorique.GestionnaireHistorique;
 
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.History;
 
public class Del implements EntryPoint {
 
@Override
public void onModuleLoad() {
History.addValueChangeHandler(new GestionnaireHistorique());
History.newItem(ConstantesNavigation.PAGE_PRINCIPALE, true);
History.fireCurrentHistoryState();
}
}
/trunk/src/org/tela_botanica/del/client/gestionhistorique/ConstantesNavigation.java
New file
0,0 → 1,16
package org.tela_botanica.del.client.gestionhistorique;
 
public class ConstantesNavigation {
 
public static final String PAGE_PRINCIPALE = "page_principale";
 
public static final String PAGE_RECHERCHE_IMAGES = "page_recherche_images";
public static final String PAGE_RESULTAT_RECHERCHE_IMAGES = "page_recherche_images_resulat";
 
public static final String PAGE_RECHERCHE_OBSERVATIONS = "page_recherche_observations";
 
public static final String PAGE_VALIDATION = "page_validation";
 
public static final String PAGE_COMPARAISON_EFLORE = "page_comparaison_eflore";
}
/trunk/src/org/tela_botanica/del/client/gestionhistorique/GestionnaireHistorique.java
New file
0,0 → 1,48
package org.tela_botanica.del.client.gestionhistorique;
 
import org.tela_botanica.del.client.vues.comparaisoneflore.ComparaisonEflorePresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.DeterminationPresenteur;
import org.tela_botanica.del.client.vues.rechercheimages.RechercheImagePresenteur;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.ResultatRechercheImagePresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.RechercheObservationsPresenteur;
import org.tela_botanica.del.client.vues.vueinitiale.PresenteurInitial;
 
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.ui.RootPanel;
 
/**
* @author Benjamin
*
*/
public class GestionnaireHistorique implements ValueChangeHandler<String> {
 
/**
* Évènement lorsque l'historique change. L'action par défaut affiche la
* page d'accueil.
* */
public void onValueChange(ValueChangeEvent<String> event) {
 
if (event.getValue().equals(ConstantesNavigation.PAGE_PRINCIPALE)) {
RootPanel.get().clear();
new PresenteurInitial().go(RootPanel.get());
} else if (event.getValue().equals(ConstantesNavigation.PAGE_RECHERCHE_IMAGES)) {
RootPanel.get().clear();
new RechercheImagePresenteur().go(RootPanel.get());
} else if (event.getValue().equals(ConstantesNavigation.PAGE_RESULTAT_RECHERCHE_IMAGES)) {
RootPanel.get().clear();
RechercheImagePresenteur presenteur = new RechercheImagePresenteur();
presenteur.go(RootPanel.get());
new ResultatRechercheImagePresenteur().go(presenteur.getVue().getPanneauResultats());
} else if (event.getValue().equals(ConstantesNavigation.PAGE_VALIDATION)) {
RootPanel.get().clear();
new DeterminationPresenteur().go(RootPanel.get());
} else if (event.getValue().equals(ConstantesNavigation.PAGE_COMPARAISON_EFLORE)) {
RootPanel.get().clear();
new ComparaisonEflorePresenteur().go(RootPanel.get());
} else if (event.getValue().equals(ConstantesNavigation.PAGE_RECHERCHE_OBSERVATIONS)) {
RootPanel.get().clear();
new RechercheObservationsPresenteur().go(RootPanel.get());
}
}
}
/trunk/src/org/tela_botanica/del/client/composants/validation/NumericFormValidator.java
New file
0,0 → 1,28
package org.tela_botanica.del.client.composants.validation;
 
import org.tela_botanica.del.client.i18n.I18n;
 
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.TextBox;
 
public class NumericFormValidator extends AbstractTextFieldValidator {
 
public NumericFormValidator(TextBox textBox) {
super(textBox);
}
 
@Override
public boolean validate() {
try{
Integer.parseInt(getTextBox().getText());
getTextBox().removeStyleName(getStyleErreur());
return true;
} catch (Exception e) {
getTextBox().addStyleName(getStyleErreur());
return false;
}
}
 
}
/trunk/src/org/tela_botanica/del/client/composants/validation/AbstractFormValidator.java
New file
0,0 → 1,7
package org.tela_botanica.del.client.composants.validation;
 
public abstract class AbstractFormValidator {
 
public abstract boolean validate();
 
}
/trunk/src/org/tela_botanica/del/client/composants/validation/FloatFormValidator.java
New file
0,0 → 1,26
package org.tela_botanica.del.client.composants.validation;
 
import org.tela_botanica.del.client.i18n.I18n;
 
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.TextBox;
 
public class FloatFormValidator extends AbstractTextFieldValidator {
 
public FloatFormValidator(TextBox textBox) {
super(textBox);
}
 
@Override
public boolean validate() {
try {
Float.parseFloat(getTextBox().getText());
getTextBox().removeStyleName(getStyleErreur());
return true;
} catch (Exception e) {
getTextBox().addStyleName(getStyleErreur());
return false;
}
}
 
}
/trunk/src/org/tela_botanica/del/client/composants/validation/AbstractTextFieldValidator.java
New file
0,0 → 1,36
package org.tela_botanica.del.client.composants.validation;
 
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.TextBox;
 
public abstract class AbstractTextFieldValidator extends AbstractFormValidator{
 
private TextBox textBox;
protected String styleErreur = "erreurFormTexte";
 
public AbstractTextFieldValidator(TextBox textBox) {
this.textBox = textBox;
}
public AbstractTextFieldValidator(TextBox textBox, String styleErreur) {
this.textBox = textBox;
this.styleErreur = styleErreur;
}
 
public TextBox getTextBox() {
return textBox;
}
 
public void setTextBox(TextBox textBox) {
this.textBox = textBox;
}
public String getStyleErreur() {
return styleErreur;
}
 
public void setStyleErreur(String styleErreur) {
this.styleErreur = styleErreur;
}
 
}
/trunk/src/org/tela_botanica/del/client/composants/validation/DoubleFormValidator.java
New file
0,0 → 1,27
package org.tela_botanica.del.client.composants.validation;
 
import org.tela_botanica.del.client.i18n.I18n;
 
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.TextBox;
 
 
public class DoubleFormValidator extends AbstractTextFieldValidator {
 
public DoubleFormValidator(TextBox textBox) {
super(textBox);
}
 
@Override
public boolean validate() {
try {
Double.parseDouble(getTextBox().getText());
getTextBox().removeStyleName(getStyleErreur());
return true;
} catch (Exception e) {
getTextBox().addStyleName(getStyleErreur());
return false;
}
}
 
}
/trunk/src/org/tela_botanica/del/client/composants/validation/FourCharactersFormValidator.java
New file
0,0 → 1,26
package org.tela_botanica.del.client.composants.validation;
 
import org.tela_botanica.del.client.i18n.I18n;
 
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.TextBox;
 
public class FourCharactersFormValidator extends AbstractTextFieldValidator {
 
public FourCharactersFormValidator(TextBox textBox) {
super(textBox);
// TODO Auto-generated constructor stub
}
 
@Override
public boolean validate() {
if(getTextBox().getText().length()>=4){
getTextBox().removeStyleName(getStyleErreur());
return true;
} else {
getTextBox().addStyleName(getStyleErreur());
return false;
}
}
 
}
/trunk/src/org/tela_botanica/del/client/composants/validation/TextNotNullFormValidator.java
New file
0,0 → 1,25
package org.tela_botanica.del.client.composants.validation;
 
import org.tela_botanica.del.client.i18n.I18n;
 
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.TextBox;
 
public class TextNotNullFormValidator extends AbstractTextFieldValidator {
public TextNotNullFormValidator(TextBox textBox) {
super(textBox);
}
 
@Override
public boolean validate() {
if (getTextBox().getText().length() >= 0 && !getTextBox().getText().equals("")) {
getTextBox().removeStyleName(getStyleErreur());
return true;
} else {
getTextBox().addStyleName(getStyleErreur());
return false;
}
}
 
}
/trunk/src/org/tela_botanica/del/client/composants/presenteur/Presenteur.java
New file
0,0 → 1,70
package org.tela_botanica.del.client.composants.presenteur;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.RootPanel;
 
public abstract class Presenteur {
 
private Composite vue;
private Panel overlay;
private Panel overlayContenu;
 
// Constructeur
public Presenteur(Composite vue) {
this.vue = vue;
 
}
 
// Afficheur
public void go() {
go(null);
}
 
public abstract void go(HasWidgets composite);
 
// Gestion des évènements
protected abstract void handleEvents();
 
protected Composite getVue() {
return this.vue;
}
 
public void ouvrirFenetreModale(Presenteur presenteurModal) {
 
overlay = new HTMLPanel("");
overlay.setStyleName("overlay");
overlay.setVisible(false);
RootPanel.get().add(overlay);
 
overlayContenu = new HTMLPanel("");
overlayContenu.setStyleName("overlayContenu");
 
Button boutonFermer = new Button("Fermer");
boutonFermer.setStyleName("fermerOverlay");
boutonFermer.addClickHandler(new ClickHandler() {
 
public void onClick(ClickEvent event) {
fermerFenetreModale();
}
});
 
presenteurModal.go(overlayContenu);
 
RootPanel.get().add(overlayContenu);
overlayContenu.setVisible(true);
 
overlayContenu.add(boutonFermer);
overlay.setVisible(true);
}
 
public void fermerFenetreModale() {
RootPanel.get().remove(overlay);
RootPanel.get().remove(overlayContenu);
}
}
/trunk/src/org/tela_botanica/del/client/flecheGauche.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/src/org/tela_botanica/del/client/flecheGauche.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/src/org/tela_botanica/del/client/modeles/Image.java
New file
0,0 → 1,68
package org.tela_botanica.del.client.modeles;
 
import java.util.ArrayList;
import java.util.List;
 
public class Image {
 
private String idImage;
 
private Observation observation;
 
private String url;
 
private String urlFormat;
 
private String miniature;
 
public String getUrl() {
return url;
}
 
public String getMiniature() {
return miniature;
}
 
public String getUrlFormat(String format) {
return urlFormat.replaceAll("%s%", format);
}
 
public void setUrlFormat(String urlFormat) {
this.urlFormat = urlFormat;
}
 
public void setUrl(String url) {
this.url = url;
}
 
public void setMiniature(String url) {
miniature = url;
}
 
public String getIdImage() {
return idImage;
}
 
public void setIdImage(String idImage) {
this.idImage = idImage;
}
 
private List<VoteProtocole> voteProtocoles = new ArrayList<VoteProtocole>();
 
public List<VoteProtocole> getVoteProtocoles() {
return voteProtocoles;
}
 
public void setVoteProtocoles(List<VoteProtocole> voteProtocoles) {
this.voteProtocoles = voteProtocoles;
}
 
public Observation getObservation() {
return observation;
}
 
public void setObservation(Observation observation) {
this.observation = observation;
}
 
}
/trunk/src/org/tela_botanica/del/client/modeles/Commentaire.java
New file
0,0 → 1,60
package org.tela_botanica.del.client.modeles;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
public class Commentaire {
 
private String auteur;
private Date date;
private String commentaire;
private List<Commentaire> listeCommentaires = new ArrayList<Commentaire>();
public Commentaire(String auteur, Date date, String commentaire) {
super();
this.auteur = auteur;
this.date = date;
this.commentaire = commentaire;
}
 
public String getAuteur() {
return auteur;
}
 
public void setAuteur(String auteur) {
this.auteur = auteur;
}
 
public Date getDate() {
return date;
}
 
public void setDate(Date date) {
this.date = date;
}
 
public String getCommentaire() {
return commentaire;
}
 
public void setCommentaire(String commentaire) {
this.commentaire = commentaire;
}
public List<Commentaire> getListeCommentaires() {
return listeCommentaires;
}
public void setListeCommentaires(ArrayList<Commentaire> listeCommentaires) {
this.listeCommentaires = listeCommentaires;
}
public void ajouterCommentaire(Commentaire commentaire) {
this.listeCommentaires.add(commentaire);
}
}
/trunk/src/org/tela_botanica/del/client/modeles/VoteProtocole.java
New file
0,0 → 1,19
package org.tela_botanica.del.client.modeles;
 
import java.io.Serializable;
import java.util.Date;
 
public class VoteProtocole extends Vote implements Serializable {
 
private static final long serialVersionUID = -1017065180398557172L;
 
private Protocole protocol;
 
public Protocole getProtocol() {
return protocol;
}
 
public void setProtocol(Protocole protocol) {
this.protocol = protocol;
}
}
/trunk/src/org/tela_botanica/del/client/modeles/Protocole.java
New file
0,0 → 1,29
package org.tela_botanica.del.client.modeles;
 
public class Protocole {
 
private int id;
 
private String nom;
public static String ESTHETISME="Esthetisme";
public static String IDENTIFICATION_AUTOMATIQUE="Identification automatique";
 
public int getId() {
return id;
}
 
public void setId(int id) {
this.id = id;
}
 
public String getNom() {
return nom;
}
 
public void setNom(String nom) {
this.nom = nom;
}
 
}
/trunk/src/org/tela_botanica/del/client/modeles/MoyenneVote.java
New file
0,0 → 1,51
package org.tela_botanica.del.client.modeles;
 
public class MoyenneVote implements Comparable<MoyenneVote> {
/**
* Pourcentage de personne ayant voté pour la propostion,
* un score de -1 indique qu'aucun vote n'a été effectué;
*/
private int score = -1;
private String intituleAssocie;
private PropositionDetermination propositionAssociee;
public MoyenneVote(int score, PropositionDetermination propositionAssociee) {
this.score = score;
this.intituleAssocie = propositionAssociee.getEspece();
this.propositionAssociee = propositionAssociee;
}
 
public int getScore() {
return score;
}
 
public void setScore(int score) {
this.score = score;
}
 
public String getIntituleAssocie() {
return intituleAssocie;
}
 
public void setIntituleAssocie(String intituleAssocie) {
this.intituleAssocie = intituleAssocie;
}
public void setPropositionAssociee(PropositionDetermination propositionDetermination) {
this.propositionAssociee = propositionDetermination;
}
public PropositionDetermination getPropositionAssociee() {
return this.propositionAssociee;
}
 
@Override
public int compareTo(MoyenneVote mv) {
if (mv.getScore() > this.score) return 1;
else if(mv.getScore() == this.score) return 0;
else return -1;
}
}
/trunk/src/org/tela_botanica/del/client/modeles/PropositionDetermination.java
New file
0,0 → 1,78
package org.tela_botanica.del.client.modeles;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
 
public class PropositionDetermination implements Serializable {
 
private static final long serialVersionUID = 840032625524143547L;
 
private String id;
private ArrayList<Commentaire> commentaires = new ArrayList<Commentaire>();
private String espece;
private ArrayList<VoteDetermination> votesDeterminations = new ArrayList<VoteDetermination>();
 
private String contributeur;
 
private Date date;
 
public void ajouterVoteDetermination(VoteDetermination vd) {
votesDeterminations.add(vd);
}
 
public String getContributeur() {
return contributeur;
}
 
public void setContributeur(String contributeur) {
this.contributeur = contributeur;
}
 
public String getId() {
return id;
}
 
public void setId(String id) {
this.id = id;
}
 
public Date getDate() {
return date;
}
 
public void setDate(Date date) {
this.date = date;
}
 
public ArrayList<Commentaire> getCommentaires() {
return commentaires;
}
 
public void setCommentaires(ArrayList<Commentaire> commentaires) {
this.commentaires = commentaires;
}
public void ajouterCommentaire(Commentaire commentaire) {
this.commentaires.add(commentaire);
}
 
public String getEspece() {
return espece;
}
 
public void setEspece(String espece) {
this.espece = espece;
}
 
public ArrayList<VoteDetermination> getVotesDeterminations() {
return votesDeterminations;
}
 
public void setVotesDeterminations(ArrayList<VoteDetermination> votesDeterminations) {
this.votesDeterminations = votesDeterminations;
}
}
/trunk/src/org/tela_botanica/del/client/modeles/Observation.java
New file
0,0 → 1,128
package org.tela_botanica.del.client.modeles;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
 
public class Observation implements Serializable {
 
private static final long serialVersionUID = 840032625524143547L;
 
private String auteur;
 
private String species;
 
private String nomRetenu;
 
private String famille;
 
private String localite;
 
private String date;
 
private String numNomenclatural;
 
private List<String> motsClefs = new ArrayList<String>();
 
private List<PropositionDetermination> propositionsDetermination = new ArrayList<PropositionDetermination>();
 
private List<Image> images = new ArrayList<Image>();
 
public String getAuteur() {
return auteur;
}
 
public void setAuteur(String auteur) {
this.auteur = auteur;
}
 
public String getSpecies() {
return species;
}
 
public void setSpecies(String species) {
this.species = species;
}
 
public String getNomRetenu() {
return nomRetenu;
}
 
public void setNomRetenu(String commonName) {
this.nomRetenu = commonName;
}
 
public String getFamille() {
return famille;
}
 
public void setFamille(String famille) {
this.famille = famille;
}
 
public String getLocalite() {
return localite;
}
 
public void setLocalite(String localite) {
this.localite = localite;
}
 
public String getDate() {
return date;
}
 
public void setDate(String date) {
this.date = date;
}
 
public String getNumNomenclatural() {
return numNomenclatural;
}
 
public void setNumNomenclatural(String numNomenclatural) {
this.numNomenclatural = numNomenclatural;
}
 
public List<PropositionDetermination> getPropositionsDetermination() {
return propositionsDetermination;
}
 
public void setImageCelValidationDatas(List<PropositionDetermination> propositionsDetermination) {
this.propositionsDetermination = propositionsDetermination;
}
 
public List<String> getMotsClefs() {
return motsClefs;
}
 
public void setMotsClefs(List<String> motsClefs) {
this.motsClefs = motsClefs;
}
 
public void addImageCelValidationData(PropositionDetermination observationValidation) {
propositionsDetermination.add(observationValidation);
}
 
public ArrayList<String> getPropositionsTaxonsData() {
 
ArrayList<String> propositionsTaxonDatas = new ArrayList<String>();
for (PropositionDetermination observationValidation : propositionsDetermination) {
String espece = observationValidation.getEspece();
if (espece != "" && !propositionsTaxonDatas.contains(espece)) {
propositionsTaxonDatas.add(observationValidation.getEspece());
}
}
 
return propositionsTaxonDatas;
}
 
public List<Image> getImages() {
return images;
}
 
public void setImages(List<Image> images) {
this.images = images;
}
 
}
/trunk/src/org/tela_botanica/del/client/modeles/Vote.java
New file
0,0 → 1,45
package org.tela_botanica.del.client.modeles;
 
import java.util.Date;
 
public class Vote {
private String id;
private int vote;
private String contributeur;
private Date date;
 
public Vote() {
}
 
public String getId() {
return id;
}
 
public void setId(String id) {
this.id = id;
}
 
public int getVote() {
return vote;
}
 
public void setVote(int vote) {
this.vote = vote;
}
 
public String getContributeur() {
return contributeur;
}
 
public void setContributeur(String contributeur) {
this.contributeur = contributeur;
}
 
public Date getDate() {
return date;
}
 
public void setDate(Date date) {
this.date = date;
}
}
/trunk/src/org/tela_botanica/del/client/modeles/VoteDetermination.java
New file
0,0 → 1,19
package org.tela_botanica.del.client.modeles;
 
import java.util.Date;
 
public class VoteDetermination extends Vote {
 
private static final long serialVersionUID = -1017065180398557172L;
private PropositionDetermination propositionDetermination;
 
public PropositionDetermination getPropositionDetermination() {
return propositionDetermination;
}
 
public void setPropositionDetermination(
PropositionDetermination propositionDetermination) {
this.propositionDetermination = propositionDetermination;
}
}
/trunk/src/org/tela_botanica/del/client/pagination/PaginationVue.ui.xml
New file
0,0 → 1,11
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default">
<ui:style src="pagination.css" />
 
<ui:with field='res' type='org.tela_botanica.del.client.Ressources'/>
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<g:HorizontalPanel styleName="{style.pagination}">
<g:HorizontalPanel ui:field="zoneLiens"></g:HorizontalPanel>
<g:ListBox ui:field="nbElements" styleName="{style.selecteurElements}"></g:ListBox>
</g:HorizontalPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/pagination/PaginationPresenteur.java
New file
0,0 → 1,180
package org.tela_botanica.del.client.pagination;
 
import java.util.Iterator;
import java.util.Vector;
 
import org.tela_botanica.del.client.cache.CacheClient;
 
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
 
public abstract class PaginationPresenteur {
 
// Singleton
private static PaginationPresenteur presenteur;
 
private final PaginationVue vue;
private int nbElementsTotal = 0;
private int nbPage;
private Vector<Button> liens;
 
public PaginationPresenteur(int nbElements) {
presenteur = this;
this.nbElementsTotal = nbElements;
actualiserNbPage();
vue = new PaginationVue();
setPas(CacheClient.getInstance().getPasPageRechercheImage());
}
 
private void setBoutonActif() {
Iterator<Button> it = liens.iterator();
while (it.hasNext()) {
Button boutonCourant = it.next();
if (boutonCourant.getText().equals(String.valueOf(CacheClient.getInstance().getNumPageRechercheImage()))) {
boutonCourant.setStyleName("actif");
} else {
boutonCourant.setStyleName("inactif");
}
}
}
 
private void actualiserNbPage() {
Double a = Math.ceil((double) nbElementsTotal / (double) CacheClient.getInstance().getPasPageRechercheImage());
this.nbPage = a.intValue();
}
 
public void setPas(int pas) {
CacheClient.getInstance().setPasPageRechercheImage(pas);
actualiserNbPage();
creerLiens();
changerPage(CacheClient.getInstance().getPasPageRechercheImage() * CacheClient.getInstance().getNumPageRechercheImage(), CacheClient.getInstance().getPasPageRechercheImage() * (CacheClient.getInstance().getNumPageRechercheImage() + 1));
}
 
public void creerLiens() {
HorizontalPanel zoneLiens = vue.getZoneLiens();
zoneLiens.clear();
liens = new Vector<Button>();
Button precedent = new Button();
precedent.setText("<");
precedent.addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
pagePrecedente();
}
});
 
liens.add(precedent);
vue.getZoneLiens().add(precedent);
 
// TODO : gérer le nombre de pages excessives
for (int i = 0; i < nbPage; i++) {
Button bouton = new Button();
bouton.setText(String.valueOf(i));
liens.add(bouton);
zoneLiens.add(bouton);
}
 
Button suivant = new Button();
suivant.setText(">");
suivant.addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
pageSuivante();
}
});
 
liens.add(suivant);
vue.getZoneLiens().add(suivant);
 
handleEvents();
setBoutonActif();
}
 
public void initNbElements() {
 
ListBox nbElements = vue.getNbElements();
for (int i = 0; i < 20; i += 5) {
int valeur = i;
if (i == 0) {
valeur = 1;
}
 
nbElements.addItem(String.valueOf(valeur));
}
nbElements.setSelectedIndex(CacheClient.getInstance().getPasPageRechercheImage() / 5);
nbElements.addChangeHandler(new ChangeHandler() {
 
@Override
public void onChange(ChangeEvent event) {
ListBox nbElements = (ListBox) event.getSource();
int index = nbElements.getSelectedIndex();
setPas(Integer.parseInt(nbElements.getValue(index)));
}
 
});
}
 
public void go(HasWidgets container) {
initNbElements();
creerLiens();
container.add(vue);
 
}
 
public void handleEvents() {
Iterator<Button> iterator = liens.iterator();
while (iterator.hasNext()) {
Button bouton = iterator.next();
 
bouton.addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
Button bouton = (Button) event.getSource();
CacheClient.getInstance().setNumPageRechercheImage(Integer.parseInt(bouton.getText()));
int debut = Integer.parseInt(bouton.getText()) * CacheClient.getInstance().getPasPageRechercheImage();
int fin = (debut + CacheClient.getInstance().getPasPageRechercheImage());
setBoutonActif();
changerPage(debut, fin);
 
}
});
 
}
}
 
public void pageSuivante() {
if (CacheClient.getInstance().getNumPageRechercheImage() < nbPage - 1) {
CacheClient.getInstance().setNumPageRechercheImage(CacheClient.getInstance().getNumPageRechercheImage() + 1);
int debut = CacheClient.getInstance().getNumPageRechercheImage() * CacheClient.getInstance().getPasPageRechercheImage();
int fin = debut + CacheClient.getInstance().getPasPageRechercheImage();
changerPage(debut, fin);
}
setBoutonActif();
}
 
public void pagePrecedente() {
 
if (CacheClient.getInstance().getNumPageRechercheImage() > 0) {
CacheClient.getInstance().setNumPageRechercheImage(CacheClient.getInstance().getNumPageRechercheImage() - 1);
int debut = CacheClient.getInstance().getNumPageRechercheImage() * CacheClient.getInstance().getPasPageRechercheImage();
int fin = debut + CacheClient.getInstance().getPasPageRechercheImage();
changerPage(debut, fin);
}
setBoutonActif();
}
 
public abstract void changerPage(int debut, int fin);
 
public PaginationPresenteur getInstance() {
return presenteur;
}
}
/trunk/src/org/tela_botanica/del/client/pagination/PaginationVue.java
New file
0,0 → 1,37
package org.tela_botanica.del.client.pagination;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Widget;
 
public class PaginationVue extends Composite {
 
@UiField
HorizontalPanel zoneLiens;
 
@UiField
ListBox nbElements;
 
// Annotation can be used to change the name of the associated xml file
// @UiTemplate("PaginationVue.ui.xml")
interface MyUiBinder extends UiBinder<Widget, PaginationVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
public PaginationVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
public HorizontalPanel getZoneLiens() {
return this.zoneLiens;
}
 
public ListBox getNbElements() {
return nbElements;
}
}
/trunk/src/org/tela_botanica/del/client/pagination/pagination.css
New file
0,0 → 1,5
.pagination {width:100%;}
.selecteurElements {float:right}
.pagination button {border:none; border-right:solid 1px #DDD; cursor:pointer}
.pagination button:hover {background:#8EB533}
select {background:white}
/trunk/src/org/tela_botanica/del/test/TestMoyenneVote.java
New file
0,0 → 1,95
package org.tela_botanica.del.test;
 
import static org.junit.Assert.assertTrue;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
import org.junit.Test;
import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
 
public class TestMoyenneVote {
 
@Test
public void testCalculVote() {
 
VoteDetermination voteDetermination = new VoteDetermination();
voteDetermination.setVote(1);
voteDetermination.setDate(new Date());
voteDetermination.setContributeur("benjamin");
 
PropositionDetermination propositionDetermination = new PropositionDetermination();
propositionDetermination.setEspece("Iris lutescens subsp. lutescens");
propositionDetermination.setContributeur("contributeur test");
propositionDetermination.setId("1");
propositionDetermination.ajouterVoteDetermination(voteDetermination);
 
MoyenneVote moyenneVote = CalculVoteDeterminationService
.calculerVoteDetermination(propositionDetermination);
 
assertTrue(moyenneVote.getScore() == 100);
 
}
@Test
public void testCalculMoyenneVote() {
 
VoteDetermination voteDetermination1 = new VoteDetermination();
voteDetermination1.setVote(1);
voteDetermination1.setDate(new Date());
voteDetermination1.setContributeur("benjamin");
VoteDetermination voteDetermination2 = new VoteDetermination();
voteDetermination2.setVote(1);
voteDetermination2.setDate(new Date());
voteDetermination2.setContributeur("aurelien");
VoteDetermination voteDetermination3 = new VoteDetermination();
voteDetermination3.setVote(0);
voteDetermination3.setDate(new Date());
voteDetermination3.setContributeur("benjamin");
VoteDetermination voteDetermination4 = new VoteDetermination();
voteDetermination3.setVote(0);
voteDetermination3.setDate(new Date());
voteDetermination3.setContributeur("benjamin");
VoteDetermination voteDetermination5 = new VoteDetermination();
voteDetermination4.setVote(1);
voteDetermination4.setDate(new Date());
voteDetermination4.setContributeur("benjamin");
 
PropositionDetermination propositionDetermination = new PropositionDetermination();
propositionDetermination.setEspece("Iris lutescens subsp. lutescens");
propositionDetermination.setContributeur("contributeur test");
propositionDetermination.setId("1");
propositionDetermination.ajouterVoteDetermination(voteDetermination1);
propositionDetermination.ajouterVoteDetermination(voteDetermination2);
propositionDetermination.ajouterVoteDetermination(voteDetermination3);
propositionDetermination.ajouterVoteDetermination(voteDetermination4);
PropositionDetermination propositionDetermination2 = new PropositionDetermination();
propositionDetermination2.setEspece("Iris urticans");
propositionDetermination2.setContributeur("contributeur test2");
propositionDetermination2.setId("2");
propositionDetermination2.ajouterVoteDetermination(voteDetermination1);
propositionDetermination2.ajouterVoteDetermination(voteDetermination2);
propositionDetermination2.ajouterVoteDetermination(voteDetermination3);
propositionDetermination2.ajouterVoteDetermination(voteDetermination5);
List<PropositionDetermination> listePropositions = new ArrayList<PropositionDetermination>();
listePropositions.add(propositionDetermination2);
listePropositions.add(propositionDetermination);
 
List<MoyenneVote> listeMoyenneVote = CalculVoteDeterminationService
.calculerVoteDeterminationPlusPopulaire(listePropositions);
 
// le premier vote est sensé être celui qui possède le plus gros score
assertTrue(listeMoyenneVote.get(0).getIntituleAssocie().equals("Iris urticans"));
}
 
}
/trunk/src/org/tela_botanica/del/Del.gwt.xml
New file
0,0 → 1,28
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to="del">
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User' />
<inherits name='org.cobogw.gwt.user.User' />
 
<!-- Inherit the default GWT style sheet. You can change -->
<!-- the theme of your GWT application by uncommenting -->
<!-- any one of the following lines. -->
<inherits name='com.google.gwt.user.theme.standard.Standard' />
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
 
<!-- Other module inherits -->
<inherits name="com.google.gwt.activity.Activity" />
<inherits name="com.google.gwt.place.Place" />
 
<!-- Specify the app entry point class. -->
<entry-point class='org.tela_botanica.del.client.Del' />
 
<!-- UIBinder allows to design GWT UI's declarative via XML. -->
<inherits name='com.google.gwt.uibinder.UiBinder' />
<!-- Specify the paths for translatable code -->
<source path='client' />
<source path='shared' />
 
</module>