Subversion Repositories eFlore/Applications.del

Compare Revisions

Problem with comparison.

Ignore whitespace Rev HEAD → Rev 100

/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("scroll-arrow-left.gif")
ImageResource arrowLeft();
@Source("scroll-arrow-right.gif")
ImageResource arrowRight();
}
/src/org/tela_botanica/del/client/i18n/Messages.properties
New file
0,0 → 1,0
rechercher_taxon=Rechercher le taxon {0}
/src/org/tela_botanica/del/client/i18n/Vocabulary.properties
New file
0,0 → 1,45
#vocabulaire partagé
oui=oui
non=non
accepter=Valider
annuler=Annuler
chargement=Chargement
ok=ok
 
 
#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
 
#ecran determination
proposer_sa_determination=Proposer sa détermination
contributeur=Contributeur
fiabilite=Fiabilite
commentaire=Commentaire
autres_informations=Autres informations
choisir_un_taxon=Choisir un taxon
autre=autre
 
#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
/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);
}
 
}
/src/org/tela_botanica/del/client/i18n/Messages_en.properties
--- i18n/Vocabulary_en.properties (revision 0)
+++ i18n/Vocabulary_en.properties (revision 100)
@@ -0,0 +1,3 @@
+#sample constant property to be translated in language specific versions of this property file
+
+
/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();
}
/src/org/tela_botanica/del/client/i18n/Vocabulary.java
New file
0,0 → 1,341
package org.tela_botanica.del.client.i18n;
 
/**
* Interface to represent the constants contained in resource bundle:
* '/home/aurelien/web/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 "Auteur".
*
* @return translated "Auteur"
*/
@DefaultStringValue("Auteur")
@Key("auteur")
String auteur();
 
/**
* Translated "autre".
*
* @return translated "autre"
*/
@DefaultStringValue("autre")
@Key("autre")
String autre();
 
/**
* Translated "Autres informations ".
*
* @return translated "Autres informations "
*/
@DefaultStringValue("Autres informations ")
@Key("autres_informations")
String autres_informations();
 
/**
* 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 "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 "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 "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 sa détermination".
*
* @return translated "Proposer sa détermination"
*/
@DefaultStringValue("Proposer sa 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 "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 "Transmis le".
*
* @return translated "Transmis le"
*/
@DefaultStringValue("Transmis le")
@Key("transmis_le")
String transmis_le();
 
/**
* Translated "Valide par".
*
* @return translated "Valide par"
*/
@DefaultStringValue("Valide par")
@Key("valide_par")
String valide_par();
}
/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);
}
 
}
/src/org/tela_botanica/del/client/logo.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/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
/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;
}
 
}
/src/org/tela_botanica/del/client/scroll-arrow-left.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/src/org/tela_botanica/del/client/scroll-arrow-left.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionVue.ui.xml
New file
0,0 → 1,21
<!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"/>
 
<g:VerticalPanel>
<g:HTML HTML="{constants.proposer_sa_determination}"></g:HTML>
<g:FlowPanel>
<g:TextBox ui:field="nomPrenom" />
<g:ListBox ui:field="choixProposition" />
<g:TextBox ui:field="autreProposition" />
<g:TextBox ui:field="pourcentageConfiance" />
<g:TextArea ui:field="commentaires" />
</g:FlowPanel>
<g:Button text="{constants.ok}" ui:field="boutonValidationProposition" />
</g:VerticalPanel>
 
</ui:UiBinder>
/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionPresenteur.java
New file
0,0 → 1,62
package org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition;
 
import java.util.ArrayList;
import java.util.Date;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.exceptions.ExceptionClient;
import org.tela_botanica.del.client.modeles.ObservationValidation;
import org.tela_botanica.del.client.utils.GwtObservable;
import org.tela_botanica.del.client.utils.GwtObserver;
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.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.user.client.ui.HasWidgets;
 
public class FormulairePropositionPresenteur {
 
private final MockDatasource validationService = MockDatasource.getInstance();
private ArrayList<String> propositionsTaxons;
 
private FormulairePropositionVue formulairePropositionVue = new FormulairePropositionVue();
 
public void go(HasWidgets composite) {
 
propositionsTaxons = validationService.getPropositionsTaxonsData(CacheClient.getInstance().getCurrentObservation().getIdImage());
 
formulairePropositionVue.chargerPropositionsTaxons(propositionsTaxons);
composite.add(formulairePropositionVue);
gererEvenements();
}
 
private void gererEvenements() {
formulairePropositionVue.getBoutonValidationProposition().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
ObservationValidation propositionAjoutee = new ObservationValidation();
propositionAjoutee.setId(CacheClient.getInstance().getCurrentObservation().getIdImage());
propositionAjoutee.setCommentaire(formulairePropositionVue.getCommentaires().getText());
propositionAjoutee.setContributeur(formulairePropositionVue.getNomPrenom().getText());
propositionAjoutee.setDate(new Date());
if (formulairePropositionVue.getAutreProposition().getText() != "") {
propositionAjoutee.setEspece(formulairePropositionVue.getAutreProposition().getText());
} else {
propositionAjoutee.setEspece(formulairePropositionVue.getChoixProposition().getItemText(formulairePropositionVue.getChoixProposition().getSelectedIndex()));
}
propositionAjoutee.setPourcentageConfiance(Integer.parseInt(formulairePropositionVue.getPourcentageConfiance().getText()));
try {
validationService.saveValidationData(propositionAjoutee);
} catch (ExceptionClient e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionVue.java
New file
0,0 → 1,75
package org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.del.client.utils.MockDatasource;
 
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 ListBox choixProposition = new ListBox();
@UiField(provided = true)
public TextBox autreProposition = new TextBox();
@UiField(provided = true)
public TextBox pourcentageConfiance = 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 void chargerPropositionsTaxons(ArrayList<String> propositionsTaxons) {
for(Iterator<String> it = propositionsTaxons.iterator(); it.hasNext();) {
choixProposition.addItem(it.next());
}
}
 
public TextBox getNomPrenom() {
return nomPrenom;
}
 
public ListBox getChoixProposition() {
return choixProposition;
}
 
public TextBox getAutreProposition() {
return autreProposition;
}
 
public TextBox getPourcentageConfiance() {
return pourcentageConfiance;
}
 
public TextArea getCommentaires() {
return commentaires;
}
 
public Button getBoutonValidationProposition() {
return boutonValidationProposition;
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/formulairerechercheeflore/FormulaireRechercheEfloreVue.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"/>
 
<g:VerticalPanel>
<g:TextBox ui:field="formulaireRechercheObservationEflore" />
<g:Button text="{constants.ok}" ui:field="boutonValidationRechercheObservation" />
</g:VerticalPanel>
 
</ui:UiBinder>
/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);
}
});
}
 
}
/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;
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationVue.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'
xmlns:forum="urn:import:org.tela_botanica.del.client.vues.plateformedetermination.forum">
 
 
<g:VerticalPanel>
<g:VerticalPanel ui:field="detailImageObservation"></g:VerticalPanel>
<g:VerticalPanel ui:field="forum"></g:VerticalPanel>
<g:VerticalPanel ui:field="formulaireProposition"></g:VerticalPanel>
<g:VerticalPanel ui:field="formulaireRechercheEflore"></g:VerticalPanel>
</g:VerticalPanel>
 
</ui:UiBinder>
/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationPresenteur.java
New file
0,0 → 1,28
package org.tela_botanica.del.client.vues.plateformedetermination;
 
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.formulaireproposition.FormulairePropositionVue;
import org.tela_botanica.del.client.vues.plateformedetermination.formulairerechercheeflore.FormulaireRechercheEflorePresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.forum.ForumPresenteur;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class DeterminationPresenteur {
DeterminationVue determinationVue = new DeterminationVue();
public DeterminationPresenteur() {
 
}
public void go(HasWidgets composite) {
new DetailImageObservationPresenteur().go(determinationVue.getDetailImageObservation());
new ForumPresenteur().go(determinationVue.getForum());
new FormulairePropositionPresenteur().go(determinationVue.getFormulaireProposition());
new FormulaireRechercheEflorePresenteur().go(determinationVue.getFormulaireProposition());
composite.add(determinationVue);
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationVue.java
New file
0,0 → 1,46
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(provided = true)
VerticalPanel forum = new VerticalPanel();
@UiField(provided = true)
VerticalPanel detailImageObservation = new VerticalPanel();
@UiField(provided = true)
VerticalPanel formulaireProposition = new VerticalPanel();
@UiField(provided = true)
VerticalPanel formulaireRechercheEflore = new VerticalPanel();
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;
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/detail/DetailImageObservationVue.java
New file
0,0 → 1,41
package org.tela_botanica.del.client.vues.plateformedetermination.detail;
 
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.Observation;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
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.HasWidgets;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Widget;
 
public class DetailImageObservationVue extends Composite {
@UiField(provided = true)
public Image imageObservation = new Image();
@UiField(provided = true)
public HTML detailObservation = new HTML();
private static DetailImageObservationUIiBinder uiBinder = GWT.create(DetailImageObservationUIiBinder.class);
interface DetailImageObservationUIiBinder extends UiBinder<Widget, DetailImageObservationVue>{};
public DetailImageObservationVue() {
initWidget(uiBinder.createAndBindUi(this));
}
public void chargerInformationsObservation(Observation o) {
imageObservation.setUrl(o.getUrl());
detailObservation.setHTML("<ul>"+
"<li> "+I18n.getVocabulary().nom_retenu()+" : "+o.getNomRetenu()+"</li>"+
"<li> "+I18n.getVocabulary().localite()+" : "+o.getLocalite()+"</li>"+
"<li> "+I18n.getVocabulary().auteur()+" : "+o.getAuteur()+"</li>"+
"<li> "+I18n.getVocabulary().date_observation()+" : "+o.getDate()+"</li>"+
"<li> "+I18n.getVocabulary().autres_informations()+" : "+o.toString()+"</li>"+
"</ul>");
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/detail/DetailImageObservationVue.ui.xml
New file
0,0 → 1,11
<!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'>
 
<g:HorizontalPanel>
<g:Image ui:field="imageObservation"></g:Image>
<g:HTML ui:field="detailObservation"></g:HTML>
</g:HorizontalPanel>
 
</ui:UiBinder>
/src/org/tela_botanica/del/client/vues/plateformedetermination/detail/DetailImageObservationPresenteur.java
New file
0,0 → 1,26
package org.tela_botanica.del.client.vues.plateformedetermination.detail;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.utils.MockDatasource;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Widget;
 
public class DetailImageObservationPresenteur {
private final MockDatasource validationService = MockDatasource.getInstance();
private DetailImageObservationVue detailImageObservationVue = new DetailImageObservationVue();
public void go(HasWidgets composite) {
detailImageObservationVue.chargerInformationsObservation(CacheClient.getInstance().getCurrentObservation());
composite.add(detailImageObservationVue);
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/forum/ForumVue.ui.xml
New file
0,0 → 1,9
<!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">
<g:HTML ui:field='htmlTableau' />
 
</ui:UiBinder>
/src/org/tela_botanica/del/client/vues/plateformedetermination/forum/ForumPresenteur.java
New file
0,0 → 1,45
package org.tela_botanica.del.client.vues.plateformedetermination.forum;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.ObservationValidation;
import org.tela_botanica.del.client.utils.GwtObservable;
import org.tela_botanica.del.client.utils.GwtObserver;
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.utils.MockDatasource;
 
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.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Widget;
 
public class ForumPresenteur implements GwtObserver {
 
private ForumVue forumVue = new ForumVue();
 
private final MockDatasource validationService = MockDatasource.getInstance();
private List<ObservationValidation> determinations;
 
public void go(HasWidgets composite) {
 
validationService.addObserver(this);
chargerCommentaires();
composite.add(forumVue);
}
 
private void chargerCommentaires() {
 
determinations = validationService.getValidationData(CacheClient.getInstance().getCurrentObservation().getIdImage());
forumVue.chargerObservations(determinations);
}
@Override
public void update(GwtObservable observable, Object data) {
chargerCommentaires();
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/forum/ForumVue.java
New file
0,0 → 1,51
package org.tela_botanica.del.client.vues.plateformedetermination.forum;
 
import java.util.List;
 
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.ObservationValidation;
 
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.Widget;
 
public class ForumVue extends Composite {
private static ForumUIiBinder uiBinder = GWT.create(ForumUIiBinder.class);
interface ForumUIiBinder extends UiBinder<Widget, ForumVue>{};
@UiField(provided = true)
HTML htmlTableau = new HTML();
public ForumVue() {
initWidget(uiBinder.createAndBindUi(this));
}
public void chargerObservations(List<ObservationValidation> determinations) {
String ligne = "<table>"+
"<tr>"+
"<th> "+I18n.getVocabulary().nom()+" </th>"+
"<th> "+I18n.getVocabulary().contributeur()+" </th>"+
"<th> "+I18n.getVocabulary().fiabilite()+" </th>"+
"<th> "+I18n.getVocabulary().date()+" </th>"+
"<th> "+I18n.getVocabulary().commentaire()+" </th>"+
"</tr>";
for (ObservationValidation observationDetermination : determinations) {
ligne += "<tr>"+
"<td>"+observationDetermination.getEspece()+"</td>"+
"<td>"+observationDetermination.getContributeur()+"</td>"+
"<td>"+observationDetermination.getPourcentageConfiance()+"%</td>"+
"<td>"+observationDetermination.getDate()+"</td>"+
"<td>"+observationDetermination.getCommentaire()+"</td>"+
"</tr>";
}
ligne += "</table>";
htmlTableau.setHTML(ligne);
}
 
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationRecherchePresenteur.java
New file
0,0 → 1,122
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.utils.KeyboardKeyListener;
import org.tela_botanica.del.client.utils.MockDatasource;
import org.tela_botanica.del.client.vues.rechercheobservations.pagination.NumeroPagePresenteur;
 
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.Panel;
 
public class ObservationRecherchePresenteur {
 
private final MockDatasource observationService = MockDatasource.getInstance();
private final ObservationRechercheVue vue = new ObservationRechercheVue();
private static ObservationRecherchePresenteur instance;
private List<ObservationPresenteur> observationPresenteurs = new ArrayList<ObservationPresenteur>();
private List<Observation> observations;
 
public ObservationRecherchePresenteur() {
instance = this;
}
 
public void go(HasWidgets composite) {
composite.add(vue);
gererEvenements();
}
 
@SuppressWarnings("deprecation")
public void gererEvenements() {
// FIXME : temporaire, juste pour débug
chargerObservations();
 
vue.getLabelChercher().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
vue.startChargement();
chargerObservations();
}
});
 
// TODO : remplacer par KeyUp, KeyDown ... etc.
vue.getTextBox().addKeyboardListener(new KeyboardKeyListener() {
 
@Override
public void onEnterKeyUp() {
chargerObservations();
}
});
 
}
 
private void chargerObservations() {
 
observations = observationService.getObservations();
 
// 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(observations);
 
Iterator<Panel> panelIterator = vue.getPanneauxImages().iterator();
for (Observation observation : observations) {
Panel imagePanel = panelIterator.next();
ObservationPresenteur observationPresenteur = new ObservationPresenteur(observation);
observationPresenteur.go(imagePanel);
observationPresenteurs.add(observationPresenteur);
}
 
vue.afficherPanneauxImage(0, vue.getNbImagesPerPage());
createPaginationWidget(observations.size());
 
vue.stopChargement();
 
}
public void fermerTousPanneauxDetailsObservations(){
for(ObservationPresenteur observationPresenteur: observationPresenteurs){
if(observationPresenteur.isDetailsOpen()){
observationPresenteur.cacherDetails();
}
}
}
 
private void createPaginationWidget(int nbImages) {
 
int nbPages = nbImages / vue.getNbImagesPerPage();
if (nbImages % vue.getNbImagesPerPage() == 0) {
nbPages--;
}
for (int i = 0; i <= nbPages; i++) {
new NumeroPagePresenteur(i + 1).go(vue.getPanneauPagination());
}
}
 
public void showImagePanels(int first, int last) {
vue.afficherPanneauxImage(first, last);
}
 
public static ObservationRecherchePresenteur getInstance() {
return instance;
}
 
public ObservationRechercheVue getView() {
return vue;
}
 
public List<Observation> getObservations() {
return observations;
}
 
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/detail/ObservationDetailVue.java
New file
0,0 → 1,30
package org.tela_botanica.del.client.vues.rechercheobservations.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;
}
 
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/detail/ObservationDetailPresenteur.java
New file
0,0 → 1,22
package org.tela_botanica.del.client.vues.rechercheobservations.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);
}
 
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/observation.css
New file
0,0 → 1,9
.observations {border: solid 1px #DDD; padding:10px; width:150px; height:230px; -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 }
 
.petit {font-size:11px; color:#AAA}
.espece {font-size:12px; font-weight:bold; color:#454341}
 
.zonePlus {position:absolute; margin-top:65px;}
.voter {/*position:absolute; margin-top:65px; margin-left:20px;*/}
/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationRechercheVue.java
New file
0,0 → 1,148
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import java.util.ArrayList;
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Observation;
 
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.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
 
public class ObservationRechercheVue extends Composite {
 
private final VerticalPanel mainPanel = new VerticalPanel();
private final Panel panneauChargement = new FlowPanel();
private final Panel taxaPanel = new FlowPanel();
private final FlexTable imageTable = new FlexTable();
private final Panel panneauPagination = new HorizontalPanel();
private final List<Panel> panneauxImages = new ArrayList<Panel>();
private final HTML labelChargement = new HTML("<img src='img/wait.gif' />Contact du serveur du CEL...");
private final HTML labelChercher = new HTML("<img src='img/search_icon.gif' />Search &nbsp;&nbsp; taxon:");
private int nbCol = 5;
private final int nbImagesPerPage = 10;
private int numImage = 0;
private final TextBox textBox = new TextBox();
 
// Constructeur
protected ObservationRechercheVue() {
 
textBox.setText("apifera");
textBox.setFocus(true);
 
mainPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
mainPanel.setSize("100%", "100%");
 
Panel textBoxPanel = new HorizontalPanel();
textBoxPanel.add(labelChercher);
textBoxPanel.add(textBox);
 
Panel searchPanel = new VerticalPanel();
searchPanel.add(new HTML("Rechercher une image"));
searchPanel.add(textBoxPanel);
searchPanel.add(new HTML("Entrez un nom de genre ou d'esp&egrave;ce, un nom de commune, un num&eacute;ro de departement, l'email d'un utilisateur ou un mot-clef"));
 
panneauChargement.add(labelChargement);
panneauChargement.setVisible(false);
 
mainPanel.add(panneauChargement);
 
taxaPanel.add(imageTable);
 
mainPanel.add(searchPanel);
mainPanel.add(panneauPagination);
mainPanel.add(taxaPanel);
 
initWidget(mainPanel);
}
 
/**
* 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<Observation> observations) {
 
for (int i = 0; i < observations.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 HTML getLabelChercher() {
return labelChercher;
}
 
public Panel getPanneauPagination() {
return panneauPagination;
}
 
public int getNbImagesPerPage() {
return nbImagesPerPage;
}
 
public TextBox getTextBox() {
return textBox;
}
 
public Panel getPanel() {
return mainPanel;
}
 
public List<Panel> getPanneauxImages() {
return panneauxImages;
}
 
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationVue.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="observation.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:VerticalPanel>
<g:HorizontalPanel ui:field="voter"/>
<g:VerticalPanel>
<g:Label ui:field="nomAuteur" styleName="{style.petit}">Auteur</g:Label>
<g:Label ui:field="nomEspece" styleName="{style.espece}">Nom</g:Label>
</g:VerticalPanel>
</g:HTMLPanel>
</ui:UiBinder>
/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationPresenteur.java
New file
0,0 → 1,100
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.ObservationValidation;
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.rechercheobservations.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 ObservationPresenteur {
 
private final MockDatasource validationService = MockDatasource.getInstance();
private ObservationVue vue = new ObservationVue();
private final Observation observation;
private boolean detailsOpen = false;
 
public ObservationPresenteur(Observation observation) {
this.observation = observation;
}
 
public void go(HasWidgets composite) {
composite.add(vue);
vue.loadImage(observation);
loadValidationData();
handleEvents();
 
}
 
private void loadValidationData() {
 
List<ObservationValidation> observationValidationDatas = validationService.getValidationData(observation.getIdImage());
observation.setImageCelValidationDatas(observationValidationDatas);
new MoyenneVotePresenteur(observationValidationDatas).go(vue.getVoter());
vue.showValidationData(observationValidationDatas);
 
}
 
private void handleEvents() {
 
vue.getEnSavoirPlus().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
if (!detailsOpen) {
afficherDetails();
} else {
cacherDetails();
}
}
});
 
vue.getImagePrincipale().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
}
});
}
 
public void cacherDetails() {
VerticalPanel zoneCache = vue.getZoneCache();
Label enSavoirPlus = vue.getEnSavoirPlus();
 
zoneCache.setVisible(false);
enSavoirPlus.setStyleName("boutonPlus");
detailsOpen=false;
}
public void afficherDetails() {
ObservationRecherchePresenteur.getInstance().fermerTousPanneauxDetailsObservations();
VerticalPanel zoneCache = vue.getZoneCache();
Label enSavoirPlus = vue.getEnSavoirPlus();
 
zoneCache.setVisible(true);
enSavoirPlus.setStyleName("boutonMoins");
detailsOpen=true;
}
 
public boolean isDetailsOpen() {
return detailsOpen;
}
 
public ObservationVue getVue() {
return vue;
}
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/pagination/NumeroPagePresenteur.java
New file
0,0 → 1,51
package org.tela_botanica.del.client.vues.rechercheobservations.pagination;
 
import org.tela_botanica.del.client.vues.rechercheobservations.ObservationRecherchePresenteur;
 
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 NumeroPagePresenteur {
 
private final NumeroPageVue view;
 
private int nbPage = 1;
 
public NumeroPagePresenteur(int nbPage) {
this.nbPage = nbPage;
view = new NumeroPageVue(nbPage);
}
 
public void go(HasWidgets container) {
container.add(view);
handleEvents();
}
 
public void handleEvents() {
view.getNbPageHtml().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
 
int firstImage;
int lastImage;
 
int nbImagePerPage = ObservationRecherchePresenteur.getInstance()
.getView().getNbImagesPerPage();
 
if (nbPage == 1) {
firstImage = 0;
} else {
firstImage = ((nbPage - 1) * nbImagePerPage);
}
 
lastImage = (nbPage - 1) * nbImagePerPage + nbImagePerPage;
 
ObservationRecherchePresenteur.getInstance().showImagePanels(firstImage,
lastImage);
 
}
});
}
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/pagination/NumeroPageVue.java
New file
0,0 → 1,21
package org.tela_botanica.del.client.vues.rechercheobservations.pagination;
 
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
 
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
 
public class NumeroPageVue extends Composite {
 
private final HTML nbPageHtml = new HTML();
 
public NumeroPageVue(int nbPage) {
nbPageHtml.setHTML("<h2><a href='#"+ConstantesNavigation.PAGE_PRINCIPALE+"'>" + nbPage + "&nbsp;</a></h2>");
initWidget(nbPageHtml);
}
 
public HTML getNbPageHtml() {
return nbPageHtml;
}
 
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationVue.java
New file
0,0 → 1,121
package org.tela_botanica.del.client.vues.rechercheobservations;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.ObservationValidation;
 
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 ObservationVue extends Composite {
 
// Annotation can be used to change the name of the associated xml file
// @UiTemplate("ObservationVue.ui.xml")
interface MyUiBinder extends UiBinder<Widget, ObservationVue> {
}
 
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;
 
public ObservationVue() {
// sets listBox
initWidget(uiBinder.createAndBindUi(this));
}
 
protected void loadImage(Observation observation) {
enSavoirPlus.setStyleName("boutonPlus");
zoneCache.setVisible(false);
nomEspece.setText(observation.getSpecies());
nomAuteur.setText(observation.getAuteur());
imagePrincipale.setUrl(observation.getUrl());
nomObservateur.setText(observation.getAuteur());
nomRetenu.setText(observation.getNomRetenu());
dateObservation.setText(observation.getDate());
famille.setText(observation.getFamille());
localite.setText(observation.getLocalite());
 
 
}
 
protected void showValidationData(List<ObservationValidation> validationDatas) {
/*
* if (validationDatas == null || validationDatas.size() == 0) {
* flowPanel.add(noValidationDataHtml); }
* flowPanel.add(proposeValidationDataHtml);
*/
 
}
 
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;
}
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/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>
/src/org/tela_botanica/del/client/vues/rechercheobservations/vote/MoyenneVotePresenteur.java
New file
0,0 → 1,20
package org.tela_botanica.del.client.vues.rechercheobservations.vote;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.ObservationValidation;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class MoyenneVotePresenteur {
 
private MoyenneVoteVue view;
 
public MoyenneVotePresenteur(List<ObservationValidation> validationDatas) {
view = new MoyenneVoteVue(validationDatas);
}
 
public void go(HasWidgets container) {
container.add(view);
}
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/vote/MoyenneVoteVue.java
New file
0,0 → 1,54
package org.tela_botanica.del.client.vues.rechercheobservations.vote;
 
import java.util.List;
 
import org.cobogw.gwt.user.client.ui.Rating;
import org.tela_botanica.del.client.modeles.ObservationValidation;
 
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.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;
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);
 
private Panel mainPanel = new VerticalPanel();
 
@UiField
FocusPanel voter;
 
@UiField
Label nbVotes;
 
protected MoyenneVoteVue(List<ObservationValidation> validationDatas) {
initWidget(uiBinder.createAndBindUi(this));
 
int meanVote = 0;
int nbVote = 0;
for (ObservationValidation 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()));
 
}
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/vote/DetailVotePresenteur.java
New file
0,0 → 1,20
package org.tela_botanica.del.client.vues.rechercheobservations.vote;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.ObservationValidation;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class DetailVotePresenteur {
 
private DetailVoteVue view;
 
public DetailVotePresenteur(List<ObservationValidation> validationDatas) {
view = new DetailVoteVue(validationDatas);
}
 
public void go(HasWidgets container) {
container.add(view);
}
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/vote/DetailVoteVue.java
New file
0,0 → 1,28
package org.tela_botanica.del.client.vues.rechercheobservations.vote;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.ObservationValidation;
 
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<ObservationValidation> validationDatas) {
 
for (ObservationValidation imageCelValidationData : validationDatas) {
 
mainPanel.add(new HTML("Vote " + imageCelValidationData.getVote()
+ " par " + imageCelValidationData.getContributeur()));
}
 
initWidget(mainPanel);
 
}
 
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/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;}
/src/org/tela_botanica/del/client/vues/comparaisoneflore/ComparaisonEfloreVue.java
New file
0,0 → 1,118
package org.tela_botanica.del.client.vues.comparaisoneflore;
 
import java.util.Date;
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.ObservationValidation;
 
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(Observation observationPrincipale) {
 
// mots clefs
String motsClefsConcatenes = "";
for (String motClef : observationPrincipale.getMotsClefs()) {
motsClefsConcatenes += motClef + ",";
}
motsClefsConcatenes = motsClefsConcatenes.subSequence(0, motsClefsConcatenes.lastIndexOf(",")).toString();
 
// validateurs
String validateursConcatenes = "";
for (ObservationValidation observationValidation : observationPrincipale.getImageCelValidationDatas()) {
validateursConcatenes += observationValidation.getContributeur() + ", ";
}
validateursConcatenes = validateursConcatenes.subSequence(0, validateursConcatenes.lastIndexOf(",")).toString();
 
// date derniere validation
Date dateDerniereValidation = null;
for (ObservationValidation observationValidation : observationPrincipale.getImageCelValidationDatas()) {
if (dateDerniereValidation == null) {
dateDerniereValidation = observationValidation.getDate();
} else if (dateDerniereValidation.before(observationValidation.getDate())) {
dateDerniereValidation = observationValidation.getDate();
}
}
 
motsClefs.setText(motsClefsConcatenes);
nomAuteur.setText(observationPrincipale.getAuteur());
imagePrincipale.setUrl(observationPrincipale.getUrl());
dateObservation.setText(observationPrincipale.getDate());
famille.setText(observationPrincipale.getFamille());
validateurs.setText(validateursConcatenes);
dateValidation.setText(DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT).format(dateDerniereValidation));
 
}
 
protected void chargerImagesEflore(List<Observation> observationsEflore, int indexImage) {
 
if (indexImage >= 0 && indexImage < observationsEflore.size()) {
currentIndexImages = indexImage;
}
 
Observation observationEflore = observationsEflore.get(currentIndexImages);
 
nomEspeceEflore.setText(observationEflore.getSpecies());
nomAuteurEflore.setText(observationEflore.getAuteur());
imageEflore.setUrl(observationEflore.getUrl());
dateObservationEflore.setText(observationEflore.getDate());
localiteEflore.setText(observationEflore.getLocalite());
 
}
 
public Image getScrollLeftImage() {
return scrollLeftImage;
}
 
public void setScrollLeftImage(Image scrollLeftImage) {
this.scrollLeftImage = scrollLeftImage;
}
 
public int getCurrentIndexImages() {
return currentIndexImages;
}
 
public Image getScrollRightImage() {
return scrollRightImage;
}
 
}
/src/org/tela_botanica/del/client/vues/comparaisoneflore/ComparaisonEfloreVue.ui.xml
New file
0,0 → 1,113
<!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" />
 
<g:HTMLPanel>
<g:VerticalPanel>
<g:HorizontalPanel>
<g:VerticalPanel>
<g:Label text="{constants.taxon_a_determiner} : " />
 
<g:HorizontalPanel>
<g:Image ui:field="imagePrincipale" />
</g:HorizontalPanel>
<g:HTML>
<br />
</g:HTML>
<g:HorizontalPanel>
<g:Label text="{constants.metadonnees_photo} : " />
</g:HorizontalPanel>
<g:HTML>
<br />
</g:HTML>
<g:HorizontalPanel>
<g:Label text="{constants.observateur} : " />
<g:HTML>&nbsp;
</g:HTML>
<g:Label ui:field="nomAuteur"></g:Label>
 
</g:HorizontalPanel>
<g:Label text="----------------" />
<g:HorizontalPanel>
<g:Label text="{constants.date_observation} : " />
<g:HTML>&nbsp;
</g:HTML>
<g:Label ui:field="dateObservation"></g:Label>
 
</g:HorizontalPanel>
<g:Label text="----------------" />
<g:HorizontalPanel>
<g:Label text="{constants.commentaires} : " />
<g:HTML>&nbsp;
</g:HTML>
<g:Label ui:field="famille"></g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.mots_clefs} : " />
<g:HTML>&nbsp;
</g:HTML>
<g:Label ui:field="motsClefs"></g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.valide_par} : " />
<g:HTML>&nbsp;
</g:HTML>
<g:Label ui:field="validateurs"></g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.date_validation} : " />
<g:HTML>&nbsp;
</g:HTML>
<g:Label ui:field="dateValidation"></g:Label>
</g:HorizontalPanel>
</g:VerticalPanel>
<g:VerticalPanel>
<g:Label text="{constants.image_eflore} : " />
<g:HorizontalPanel>
<g:Image ui:field="scrollLeftImage" resource='{res.arrowLeft}' />
<g:Image ui:field="imageEflore" />
<g:Image ui:field="scrollRightImage" resource='{res.arrowRight}' />
</g:HorizontalPanel>
<g:HTML>
<br />
</g:HTML>
<g:HorizontalPanel>
<g:Label text="{constants.metadonnees_photo} : " />
</g:HorizontalPanel>
<g:HTML>
<br />
</g:HTML>
<g:HorizontalPanel>
<g:Label text="{constants.taxon} : " />
<g:HTML>&nbsp;
</g:HTML>
<g:Label ui:field="nomEspeceEflore"></g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.localite} : " />
<g:HTML>&nbsp;
</g:HTML>
<g:Label ui:field="localiteEflore"></g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.auteur} : " />
<g:HTML>&nbsp;
</g:HTML>
<g:Label ui:field="nomAuteurEflore"></g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.transmis_le} : " />
<g:HTML>&nbsp;
</g:HTML>
<g:Label ui:field="dateObservationEflore"></g:Label>
</g:HorizontalPanel>
 
</g:VerticalPanel>
</g:HorizontalPanel>
</g:VerticalPanel>
</g:HTMLPanel>
</ui:UiBinder>
/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.Observation;
import org.tela_botanica.del.client.modeles.ObservationValidation;
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 Observation observationPrincipale;
 
private String nomTaxonComparaison;
 
private List<Observation> observationsEflore;
 
public ComparaisonEflorePresenteur() {
this.observationPrincipale = CacheClient.getInstance().getCurrentObservation();
this.nomTaxonComparaison = CacheClient.getInstance().getTaxonPourRechercheEflore();
}
 
public void go(HasWidgets composite) {
composite.add(vue);
chargerValidationObservationPrincipale();
vue.chargerImagePrincipale(observationPrincipale);
chargerObservationsEflore();
gererEvenements();
}
 
private void chargerValidationObservationPrincipale() {
List<ObservationValidation> observationValidations = validationService.getValidationData(observationPrincipale.getIdImage());
observationPrincipale.setImageCelValidationDatas(observationValidations);
}
 
private void chargerObservationsEflore() {
observationsEflore = observationService.getObservationsEfloreParTaxon(nomTaxonComparaison);
vue.chargerImagesEflore(observationsEflore, 0);
}
 
private void gererEvenements() {
vue.getScrollLeftImage().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
vue.chargerImagesEflore(observationsEflore, vue.getCurrentIndexImages() - 1);
}
});
 
vue.getScrollRightImage().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
vue.chargerImagesEflore(observationsEflore, vue.getCurrentIndexImages() + 1);
}
});
}
 
}
/src/org/tela_botanica/del/client/Del.java
New file
0,0 → 1,20
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());
 
// displays init page
History.newItem(ConstantesNavigation.PAGE_PRINCIPALE, true);
 
History.fireCurrentHistoryState();
}
}
/src/org/tela_botanica/del/client/gestionhistorique/ConstantesNavigation.java
New file
0,0 → 1,12
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 = "recherche_images_page";
public static final String PAGE_VALIDATION = "page_validation";
public static final String PAGE_COMPARAISON_EFLORE = "page_comparaison_eflore";
}
/src/org/tela_botanica/del/client/gestionhistorique/GestionnaireHistorique.java
New file
0,0 → 1,35
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.rechercheobservations.ObservationRecherchePresenteur;
 
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 ObservationRecherchePresenteur().go(RootPanel.get());
} 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)) {
new DeterminationPresenteur().go(RootPanel.get());
RootPanel.get().clear();
new ComparaisonEflorePresenteur().go(RootPanel.get());
}
}
}
/src/org/tela_botanica/del/client/modeles/Observation.java
New file
0,0 → 1,121
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 url;
 
private String idImage;
 
private String numNomenclatural;
 
private List<String> motsClefs = new ArrayList<String>();
 
private List<ObservationValidation> imageCelValidationDatas;
 
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 getUrl() {
return url;
}
 
public void setUrl(String url) {
this.url = url;
}
 
public String getNumNomenclatural() {
return numNomenclatural;
}
 
public void setNumNomenclatural(String numNomenclatural) {
this.numNomenclatural = numNomenclatural;
}
 
public String getIdImage() {
return idImage;
}
 
public void setIdImage(String idImage) {
this.idImage = idImage;
}
 
public List<ObservationValidation> getImageCelValidationDatas() {
return imageCelValidationDatas;
}
 
public void setImageCelValidationDatas(List<ObservationValidation> imageCelValidationDatas) {
this.imageCelValidationDatas = imageCelValidationDatas;
}
 
public List<String> getMotsClefs() {
return motsClefs;
}
 
public void setMotsClefs(List<String> motsClefs) {
this.motsClefs = motsClefs;
}
 
}
/src/org/tela_botanica/del/client/modeles/Protocol.java
New file
0,0 → 1,25
package org.tela_botanica.del.client.modeles;
 
public class Protocol {
private int id;
private String name;
 
public int getId() {
return id;
}
 
public void setId(int id) {
this.id = id;
}
 
public String getName() {
return name;
}
 
public void setName(String name) {
this.name = name;
}
 
}
/src/org/tela_botanica/del/client/modeles/ObservationValidation.java
New file
0,0 → 1,100
package org.tela_botanica.del.client.modeles;
 
import java.io.Serializable;
import java.util.Date;
 
public class ObservationValidation implements Serializable {
 
private static final long serialVersionUID = 840032625524143547L;
 
private String id;
 
private String idImage;
private String commentaire;
private int pourcentageConfiance;
private String espece;
 
private int vote;
 
private String contributeur;
 
private Date date;
private Protocol protocol;
 
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 String getId() {
return id;
}
 
public void setId(String id) {
this.id = id;
}
 
public String getIdImage() {
return idImage;
}
 
public void setIdImage(String idImage) {
this.idImage = idImage;
}
 
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 int getPourcentageConfiance() {
return pourcentageConfiance;
}
 
public void setPourcentageConfiance(int pourcentageConfiance) {
this.pourcentageConfiance = pourcentageConfiance;
}
 
public String getEspece() {
return espece;
}
 
public void setEspece(String espece) {
this.espece = espece;
}
 
public Protocol getProtocol() {
return protocol;
}
 
public void setProtocol(Protocol protocol) {
this.protocol = protocol;
}
 
}
/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);
}
/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.Observation;
 
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 Observation observation;
 
public EvenementValidation(Observation observation) {
this.observation = observation;
}
 
@Override
protected void dispatch(GestionnaireEvenementValidation handler) {
handler.onValidationImage(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementValidation> getAssociatedType() {
return TYPE;
}
 
public Observation getImageCel() {
return observation;
}
 
}
/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);
}
/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;
}
 
}
/src/org/tela_botanica/del/client/navigation/evenement/BusEvenementiel.java
New file
0,0 → 1,61
package org.tela_botanica.del.client.navigation.evenement;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
import org.tela_botanica.del.client.modeles.Observation;
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.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) {
doValidationObservation(event.getImageCel());
}
});
 
addHandler(EvenementComparaisonEflore.TYPE, new GestionnaireEvenementComparaisonEflore() {
 
@Override
public void onComparaisonEflore(EvenementComparaisonEflore event) {
doComparaisonAvecEflore(event.getTaxonDemande());
}
});
}
 
private void doValidationObservation(Observation observation) {
CacheClient.getInstance().setCurrentObservation(observation);
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();
}
 
}
/src/org/tela_botanica/del/client/utils/GwtObserver.java
New file
0,0 → 1,23
package org.tela_botanica.del.client.utils;
 
/**
* {@code Observer} is the interface to be implemented by objects that receive
* notification of updates on an {@code Observable} object.
*
* @see GwtObservable
*/
public interface GwtObserver {
 
/**
* This method is called if the specified {@code Observable} object's
* {@code notifyObservers} method is called (because the {@code Observable}
* object has been updated.
*
* @param observable
* the {@link GwtObservable} object.
* @param data
* the data passed to
* {@link GwtObservable#notifyObservers(Object)}.
*/
void update(GwtObservable observable, Object data);
}
/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();
 
}
/src/org/tela_botanica/del/client/utils/MockDatasource.java
New file
0,0 → 1,183
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.modeles.Observation;
import org.tela_botanica.del.client.modeles.ObservationValidation;
import org.tela_botanica.del.client.modeles.Protocol;
 
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
 
public class MockDatasource extends GwtObservable {
 
static MockDatasource instance;
 
List<Observation> observations = new ArrayList<Observation>();
 
List<ObservationValidation> observationValidationDatas = new ArrayList<ObservationValidation>();
 
ArrayList<String> propositionsTaxonDatas = 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();
 
for (int i = 0; i < 20; i++) {
 
Observation observation = new Observation();
String auteur = auteurs.next();
observation.setAuteur(auteur);
observation.setSpecies(auteurObs.get(auteur));
 
int numobs = 44120 + i;
observation.setUrl("http://www.tela-botanica.org/appli:cel-img:0000" + String.valueOf(numobs) + "CRS.jpg");
observation.setNumNomenclatural("num nomenclatural " + i);
observation.setIdImage("id image " + i);
observation.setDate(DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT).format(new Date()));
observation.setFamille("famille " + i);
observation.setLocalite("localite " + i);
observation.setNomRetenu("nom retenu " + i);
observation.setMotsClefs(motsClefs);
 
observations.add(observation);
}
 
Protocol protocol1 = new Protocol();
protocol1.setName("Esthetisme");
protocol1.setId(1);
 
Protocol protocol2 = new Protocol();
protocol2.setName("Identification automatique");
protocol2.setId(2);
 
ObservationValidation observationValidationData = new ObservationValidation();
observationValidationData.setEspece("Espece 1");
observationValidationData.setContributeur("contributeur test");
observationValidationData.setId("1");
observationValidationData.setIdImage("id image 1");
observationValidationData.setVote(4);
observationValidationData.setPourcentageConfiance(90);
observationValidationData.setDate(new Date());
observationValidationData.setProtocol(protocol1);
observationValidationDatas.add(observationValidationData);
 
ObservationValidation observationValidationData2 = new ObservationValidation();
observationValidationData2.setContributeur("contributeur test 2");
observationValidationData2.setId("2");
observationValidationData2.setIdImage("id image 1");
observationValidationData2.setVote(2);
observationValidationData2.setPourcentageConfiance(50);
observationValidationData2.setDate(new Date());
observationValidationData2.setProtocol(protocol2);
observationValidationDatas.add(observationValidationData2);
 
ObservationValidation observationValidationData3 = new ObservationValidation();
observationValidationData3.setEspece("Acer monsp. L.");
observationValidationData3.setContributeur("Léo Ferré");
observationValidationData3.setCommentaire("Avec le temps...");
observationValidationData3.setId("1");
observationValidationData3.setIdImage("id image 1");
observationValidationData2.setVote(3);
observationValidationData3.setPourcentageConfiance(90);
observationValidationData3.setDate(new Date());
observationValidationDatas.add(observationValidationData3);
 
ObservationValidation observationValidationData4 = new ObservationValidation();
observationValidationData4.setEspece("Acer aceras aus.");
observationValidationData4.setContributeur("Pierre Desproges");
observationValidationData4.setCommentaire("Public chéri mon amour !");
observationValidationData4.setId("2");
observationValidationData4.setIdImage("id image 1");
observationValidationData2.setVote(1);
observationValidationData4.setPourcentageConfiance(30);
observationValidationData4.setDate(new Date());
observationValidationDatas.add(observationValidationData4);
 
ObservationValidation observationValidationData5 = new ObservationValidation();
observationValidationData5.setEspece("Acer monsp subsp. monsp.");
observationValidationData5.setContributeur("Louis Aragon");
observationValidationData5.setCommentaire("Tout est affaire de décor");
observationValidationData5.setId("2");
observationValidationData5.setIdImage("id image 1");
observationValidationData2.setVote(2);
observationValidationData5.setPourcentageConfiance(50);
observationValidationData5.setDate(new Date());
observationValidationDatas.add(observationValidationData5);
 
propositionsTaxonDatas.add("Acer monsp. L.");
propositionsTaxonDatas.add("Acer aceras aus.");
propositionsTaxonDatas.add("Acer monsp subsp. monsp.");
propositionsTaxonDatas.add("Acer australis L.");
}
 
public List<Observation> getObservations() {
 
return observations;
}
 
public List<ObservationValidation> getValidationData(String idImage) {
 
return observationValidationDatas;
}
 
public ArrayList<String> getPropositionsTaxonsData(String idImage) {
 
return propositionsTaxonDatas;
}
 
public Observation getObservationCourante() {
return observations.get(0);
}
 
public List<Observation> getObservationsEfloreParTaxon(String nomTaxon) {
return observations;
}
 
public void saveValidationData(ObservationValidation validationData) throws ExceptionClient {
observationValidationDatas.add(validationData);
 
setChanged();
notifyObservers();
}
 
public static MockDatasource getInstance() {
if (instance == null) {
instance = new MockDatasource();
}
return instance;
}
 
}
/src/org/tela_botanica/del/client/utils/GwtObservable.java
New file
0,0 → 1,125
package org.tela_botanica.del.client.utils;
 
import java.util.ArrayList;
import java.util.List;
 
public class GwtObservable {
List<GwtObserver> observers = new ArrayList<GwtObserver>();
 
boolean changed = false;
 
/**
* Constructs a new {@code Observable} object.
*/
public GwtObservable() {
super();
}
 
/**
* Adds the specified observer to the list of observers. If it is already
* registered, it is not added a second time.
*
* @param observer
* the Observer to add.
*/
public void addObserver(GwtObserver observer) {
if (observer == null) {
throw new NullPointerException();
}
synchronized (this) {
if (!observers.contains(observer))
observers.add(observer);
}
}
 
/**
* Clears the changed flag for this {@code Observable}. After calling
* {@code clearChanged()}, {@code hasChanged()} will return {@code false}.
*/
protected void clearChanged() {
changed = false;
}
 
/**
* Returns the number of observers registered to this {@code Observable}.
*
* @return the number of observers.
*/
public int countObservers() {
return observers.size();
}
 
/**
* Removes the specified observer from the list of observers. Passing null
* won't do anything.
*
* @param observer
* the observer to remove.
*/
public synchronized void deleteObserver(GwtObserver observer) {
observers.remove(observer);
}
 
/**
* Removes all observers from the list of observers.
*/
public synchronized void deleteObservers() {
observers.clear();
}
 
/**
* Returns the changed flag for this {@code Observable}.
*
* @return {@code true} when the changed flag for this {@code Observable} is
* set, {@code false} otherwise.
*/
public boolean hasChanged() {
return changed;
}
 
/**
* If {@code hasChanged()} returns {@code true}, calls the {@code update()}
* method for every observer in the list of observers using null as the
* argument. Afterwards, calls {@code clearChanged()}.
* <p>
* Equivalent to calling {@code notifyObservers(null)}.
*/
public void notifyObservers() {
notifyObservers(null);
}
 
/**
* If {@code hasChanged()} returns {@code true}, calls the {@code update()}
* method for every Observer in the list of observers using the specified
* argument. Afterwards calls {@code clearChanged()}.
*
* @param data
* the argument passed to {@code update()}.
*/
public void notifyObservers(Object data) {
int size = 0;
GwtObserver[] arrays = null;
synchronized (this) {
if (hasChanged()) {
clearChanged();
size = observers.size();
arrays = new GwtObserver[size];
observers.toArray(arrays);
}
}
if (arrays != null) {
for (GwtObserver observer : arrays) {
observer.update(this, data);
}
}
}
 
/**
* Sets the changed flag for this {@code Observable}. After calling
* {@code setChanged()}, {@code hasChanged()} will return {@code true}.
*/
protected void setChanged() {
changed = true;
}
 
}
/src/org/tela_botanica/del/client/cache/CacheClient.java
New file
0,0 → 1,40
package org.tela_botanica.del.client.cache;
 
import org.tela_botanica.del.client.modeles.Observation;
 
public class CacheClient {
 
private Observation currentObservation;
private String taxonPourRechercheEflore;
 
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;
}
 
}
/src/org/tela_botanica/del/client/scroll-arrow-right.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/src/org/tela_botanica/del/client/scroll-arrow-right.gif
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property