Subversion Repositories eFlore/Applications.del

Compare Revisions

Problem with comparison.

Ignore whitespace Rev HEAD → Rev 141

/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();
}
/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/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,69
#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
 
#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
/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
--- tela_botanica/del/client/i18n/Vocabulary_en.properties (revision 0)
+++ tela_botanica/del/client/i18n/Vocabulary_en.properties (revision 141)
@@ -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,539
package org.tela_botanica.del.client.i18n;
 
/**
* Interface to represent the constants contained in resource bundle:
* '/home/benjamin/Documents/dev/workspaces/exchangeformat/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 "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();
}
/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/flecheDroite.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/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
/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/vues/plateformedetermination/formulaireproposition/FormulairePropositionVue.java
New file
0,0 → 1,71
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 TextBox propositionTaxon = new TextBox();
@UiField(provided = true)
public ListBox pourcentageConfiance = new ListBox();
@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 chargerPourcentagesConfiance(ArrayList<String> pourcentagesConfiance) {
pourcentageConfiance.clear();
for(Iterator<String> it = pourcentagesConfiance.iterator(); it.hasNext();) {
pourcentageConfiance.addItem(it.next());
}
}
 
public TextBox getNomPrenom() {
return nomPrenom;
}
 
public TextBox getPropositionTaxon() {
return propositionTaxon;
}
 
public ListBox getPourcentageConfiance() {
return pourcentageConfiance;
}
 
public TextArea getCommentaires() {
return commentaires;
}
 
public Button getBoutonValidationProposition() {
return boutonValidationProposition;
}
}
/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}
/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionVue.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'
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:Label text="{constants.fiabilite}" styleName="sousTitre"/>
<g:Label text="{constants.infoFiabilite}" styleName="petit"/>
<g:ListBox ui:field="pourcentageConfiance" />
</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>
/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionPresenteur.java
New file
0,0 → 1,81
package org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.Observable;
import java.util.Observer;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.validation.NumericFormValidator;
import org.tela_botanica.del.client.composants.validation.TextNotNullFormValidator;
import org.tela_botanica.del.client.exceptions.ExceptionClient;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
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.core.client.GWT;
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.HTML;
import com.google.gwt.user.client.ui.HasWidgets;
 
public class FormulairePropositionPresenteur {
 
private FormulairePropositionVue formulairePropositionVue = new FormulairePropositionVue();
 
public void go(HasWidgets composite) {
 
formulairePropositionVue.chargerPourcentagesConfiance(MockDatasource.getInstance().getPourcentagesConfiance());
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);
}
}
});
}
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().getCurrentObservation().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());
propositionAjoutee.setPourcentageConfiance(formulairePropositionVue.getPourcentageConfiance().getValue(formulairePropositionVue.getPourcentageConfiance().getSelectedIndex()));
return propositionAjoutee;
}
}
/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/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>
/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/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="barreRepartition" styleName="plein"/>
<g:VerticalPanel ui:field="formulaireRechercheEflore"/>
</g:VerticalPanel>
<g:VerticalPanel styleName="{style.zoneVote}">
<g:VerticalPanel ui:field="vote" styleName="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>
/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>
/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.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Protocole;
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<PropositionDetermination> validationDatas;
 
public VoteProtocolePresenteur(Protocole protocole, List<PropositionDetermination> 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());
 
}
 
}
/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;
}
 
}
/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>
/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);
}
});
}
}
/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;
}
}
/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}
/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>
/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.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Protocole;
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<PropositionDetermination> validationDatas) {
view = new MoyenneVoteProtocoleVue(protocole, validationDatas);
}
 
public void go(HasWidgets container) {
container.add(view);
new MonVoteProtocolePresenteur(protocole).go(view.getMonVote());
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/moyenne/MoyenneVoteProtocoleVue.java
New file
0,0 → 1,59
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.PropositionDetermination;
import org.tela_botanica.del.client.modeles.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.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<PropositionDetermination> validationDatas) {
initWidget(uiBinder.createAndBindUi(this));
 
nomProtocole.setText(protocole.getNom());
 
int meanVote = 0;
int nbVote = 0;
for (PropositionDetermination 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;
}
}
/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}
/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>
/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.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Protocole;
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().getCurrentObservation().getIdImage();
 
Protocole protocoleEsthetisme = validationService.getProtocole(Protocole.ESTHETISME);
List<PropositionDetermination> observationValidationsEsthetisme = validationService.getValidationDataByImageAndProtocol(idImageCourante, Protocole.ESTHETISME);
new MoyenneVoteProtocolePresenteur(protocoleEsthetisme, observationValidationsEsthetisme).go(vue.getPanneauVotes());
 
Protocole protocoleIdentification = validationService.getProtocole(Protocole.IDENTIFICATION_AUTOMATIQUE);
List<PropositionDetermination> observationValidationsIdentification = validationService.getValidationDataByImageAndProtocol(idImageCourante, Protocole.IDENTIFICATION_AUTOMATIQUE);
new MoyenneVoteProtocolePresenteur(protocoleIdentification, observationValidationsIdentification).go(vue.getPanneauVotes());
}
}
/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;
}
 
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/barrerepartition/BarreRepartitionVoteVue.java
New file
0,0 → 1,36
package org.tela_botanica.del.client.vues.plateformedetermination.vote.barrerepartition;
 
import org.tela_botanica.del.client.vues.plateformedetermination.vote.EnsembleVotesVue;
 
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 BarreRepartitionVoteVue extends Composite {
interface MyUiBinder extends UiBinder<Widget, BarreRepartitionVoteVue> {}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
private int pourcentage = 0;
@UiField(provided = true)
public HTML barreRepartitionHtmlBrut = new HTML("<div class=\"barreRepartition\"></div>");
public BarreRepartitionVoteVue() {
afficherVotes(70);
initWidget(uiBinder.createAndBindUi(this));
}
public void afficherVotes(int pourcentage) {
this.pourcentage = pourcentage;
String chaineHtml = "<div class=\"barreRepartition\">"+
"<div style=\"width:"+pourcentage+"%\" class=\"elementBarreRepartition voteOui\"></div>"+
"</div>";
barreRepartitionHtmlBrut = new HTML(chaineHtml);
}
 
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/barrerepartition/barreRepartitionVue.css
--- tela_botanica/del/client/vues/plateformedetermination/vote/barrerepartition/BarreRepartitionVoteVue.ui.xml (revision 0)
+++ tela_botanica/del/client/vues/plateformedetermination/vote/barrerepartition/BarreRepartitionVoteVue.ui.xml (revision 141)
@@ -0,0 +1,6 @@
+<!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:HTML ui:field="barreRepartitionHtmlBrut" />
+</ui:UiBinder>
\ No newline at end of file
/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/barrerepartition/BarreRepartitionVotePresenteur.java
New file
0,0 → 1,32
package org.tela_botanica.del.client.vues.plateformedetermination.vote.barrerepartition;
 
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.modeles.Protocole;
import org.tela_botanica.del.client.utils.MockDatasource;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.EnsembleVotesVue;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.moyenne.MoyenneVoteProtocolePresenteur;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class BarreRepartitionVotePresenteur {
private BarreRepartitionVoteVue vue = new BarreRepartitionVoteVue();
 
private MockDatasource validationService = MockDatasource.getInstance();
 
public void go(HasWidgets container) {
container.add(vue);
afficherVotes();
}
 
private void afficherVotes() {
vue.afficherVotes(70);
}
public BarreRepartitionVoteVue getBarreRepartitionVoteVue() {
return vue;
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationPresenteur.java
New file
0,0 → 1,31
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.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();
 
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());
new BarreRepartitionVotePresenteur().go(determinationVue.getBarreRepartition());
 
composite.add(determinationVue);
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/DeterminationVue.java
New file
0,0 → 1,48
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.HasWidgets;
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;
}
}
/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>
/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/detail/DetailImageObservationVue.java
New file
0,0 → 1,38
package org.tela_botanica.del.client.vues.plateformedetermination.detail;
 
import org.tela_botanica.del.client.modeles.Observation;
 
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(Observation o) {
imageObservation.setUrl(o.getUrl());
nomObservateur.setText(o.getAuteur());
nomRetenu.setText(o.getNomRetenu());
famille.setText(o.getFamille());
localite.setText(o.getLocalite());
dateObservation.setText(o.getDate());
}
}
/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 {}
/src/org/tela_botanica/del/client/vues/plateformedetermination/forum/ForumPresenteur.java
New file
0,0 → 1,43
package org.tela_botanica.del.client.vues.plateformedetermination.forum;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.PropositionDetermination;
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 List<PropositionDetermination> determinations;
 
public void go(HasWidgets composite) {
 
CacheClient.getInstance().getCurrentObservation().addObserver(this);
chargerCommentaires();
composite.add(forumVue);
}
 
private void chargerCommentaires() {
determinations = CacheClient.getInstance().getCurrentObservation().getImageCelValidationDatas();
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,78
package org.tela_botanica.del.client.vues.plateformedetermination.forum;
 
import java.util.ArrayList;
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.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<PropositionDetermination> 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 (PropositionDetermination observationDetermination : determinations) {
ligne += "<tr>"+
"<td>"+observationDetermination.getEspece()+"</td>"+
"<td>"+observationDetermination.getContributeur()+"</td>"+
"<td>"+observationDetermination.getPourcentageConfiance()+"</td>"+
"<td>"+formaterDatePourForum(observationDetermination.getDate())+"</td>"+
"<td>"+creerListeCommentaireRecursive(observationDetermination.getCommentaires())+"</td>"+
"</tr>";
}
ligne += "</table>";
htmlTableau.setHTML(ligne);
}
private String creerListeCommentaireRecursive(ArrayList<Commentaire> commentaires) {
String commentairesHtml = "<ul class=\"liste_commentaire\">";
for (Commentaire commentaire : commentaires) {
commentairesHtml += "<li class=\"commentaire\">";
commentairesHtml += "<div class=\"commentaire_texte\">"+commentaire.getCommentaire()+"</div>";
commentairesHtml += "<span class=\"commentaire_auteur\">"+commentaire.getAuteur()+"</span>";
commentairesHtml += "<span class=\"commentaire_date\">"+formaterDatePourForum(commentaire.getDate())+"</span>";
if(commentaire.getListeCommentaires().size() != 0) {
commentairesHtml += creerListeCommentaireRecursive(commentaire.getListeCommentaires());
}
commentairesHtml += "</li>";
}
return commentairesHtml;
}
private String formaterDatePourForum(Date date) {
return DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT).format(date);
}
 
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/forum/forum.css
New file
0,0 → 1,0
.table {border:solid 1px #DDD}
/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:HTML ui:field='htmlTableau' styleName="{style.table}" />
</g:VerticalPanel>
</ui:UiBinder>
/src/org/tela_botanica/del/client/vues/plateformedetermination/determinationVue.css
New file
0,0 → 1,4
.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%}
.zoneDetailImage {border:#DDD solid 1px; -moz-border-radius:10px 0 0 10px; padding:20px; height:100%}
.zoneImage {margin-bottom:10px}
/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.getAjoutValidation().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,124
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, ajoutValidation;
 
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;
}
 
public Label getAjoutValidation() {
return ajoutValidation;
}
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/observationRecherche.css
New file
0,0 → 1,2
.observationsRecherche {width:50%; margin:0 auto;}
 
/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/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/ObservationRechercheVue.ui.xml
New file
0,0 → 1,16
<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="observationRecherche.css" />
<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:FlexTable ui:field="imageTable"/>
<g:VerticalPanel ui:field="panneauPagination"/>
</g:HTMLPanel>
</ui:UiBinder>
/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationRecherchePresenteur.java
New file
0,0 → 1,127
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.pagination.PaginationPresenteur;
import org.tela_botanica.del.client.utils.KeyboardKeyListener;
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;
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.getBoutonChercher().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) {
 
new PaginationPresenteur(nbImages) {
 
@Override
public void changerPage(int debut, int fin) {
ObservationRecherchePresenteur.getInstance().showImagePanels(debut, fin);
}
}.go(vue.getPanneauPagination());
/*
* 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/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/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/observation.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;*/}
/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationRechercheVue.java
New file
0,0 → 1,147
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 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.FlexTable;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
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 ObservationRechercheVue extends Composite {
 
private final VerticalPanel mainPanel = new VerticalPanel();
private final Panel panneauChargement = new FlowPanel();
private final Panel taxaPanel = new FlowPanel();
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();
 
// Annotation can be used to change the name of the associated xml file
// @UiTemplate("ObservationRechercheVue.ui.xml")
interface MyUiBinder extends UiBinder<Widget, ObservationRechercheVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField
TextBox nomEspece;
 
@UiField
Panel panneauPagination;
 
@UiField
Button boutonChercher;
 
@UiField
FlexTable imageTable;
 
// Constructeur
protected ObservationRechercheVue() {
 
initWidget(uiBinder.createAndBindUi(this));
nomEspece.setFocus(true);
}
 
/**
* 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 nomEspece;
}
 
public Panel getPanel() {
return mainPanel;
}
 
public List<Panel> getPanneauxImages() {
return panneauxImages;
}
public Button getBoutonChercher() {
return boutonChercher;
}
}
/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: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>
/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}
/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>
/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/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/Del.java
New file
0,0 → 1,22
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
// CacheClient.getInstance().setCurrentObservation(MockDatasource.getInstance().getObservationCourante());
// History.newItem(ConstantesNavigation.PAGE_COMPARAISON_EFLORE, true);
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,38
package org.tela_botanica.del.client.gestionhistorique;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.utils.MockDatasource;
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.plateformedetermination.vote.EnsembleVotesPresenteur;
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)) {
RootPanel.get().clear();
new ComparaisonEflorePresenteur().go(RootPanel.get());
}
}
}
/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;
}
}
 
}
/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;
}
}
 
}
/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();
 
}
/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;
}
}
 
}
/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;
}
 
}
/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;
}
}
 
}
/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;
}
}
 
}
/src/org/tela_botanica/del/client/flecheGauche.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/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
/src/org/tela_botanica/del/client/modeles/Observation.java
New file
0,0 → 1,152
package org.tela_botanica.del.client.modeles;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
 
import org.tela_botanica.del.client.utils.GwtObservable;
 
public class Observation extends GwtObservable 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<PropositionDetermination> imageCelValidationDatas;
 
private List<VoteProtocole> voteProtocoles;
 
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<PropositionDetermination> getImageCelValidationDatas() {
return imageCelValidationDatas;
}
 
public void setImageCelValidationDatas(List<PropositionDetermination> imageCelValidationDatas) {
this.imageCelValidationDatas = imageCelValidationDatas;
}
 
public List<String> getMotsClefs() {
return motsClefs;
}
 
public void setMotsClefs(List<String> motsClefs) {
this.motsClefs = motsClefs;
}
 
public List<VoteProtocole> getVoteProtocoles() {
return voteProtocoles;
}
 
public void setVoteProtocoles(List<VoteProtocole> voteProtocoles) {
this.voteProtocoles = voteProtocoles;
}
 
public void addImageCelValidationData(PropositionDetermination observationValidation) {
imageCelValidationDatas.add(observationValidation);
setChanged();
notifyObservers();
}
 
public ArrayList<String> getPropositionsTaxonsData() {
 
ArrayList<String> propositionsTaxonDatas = new ArrayList<String>();
for (PropositionDetermination observationValidation : imageCelValidationDatas) {
String espece = observationValidation.getEspece();
if (espece != "" && !propositionsTaxonDatas.contains(espece)) {
propositionsTaxonDatas.add(observationValidation.getEspece());
}
}
 
return propositionsTaxonDatas;
}
 
}
/src/org/tela_botanica/del/client/modeles/VoteDetermination.java
New file
0,0 → 1,58
package org.tela_botanica.del.client.modeles;
 
import java.util.Date;
 
public class VoteDetermination {
 
private static final long serialVersionUID = -1017065180398557172L;
 
private String id;
 
private String idImage;
 
private int vote;
 
private String contributeur;
 
private Date date;
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;
}
}
/src/org/tela_botanica/del/client/modeles/Commentaire.java
New file
0,0 → 1,61
package org.tela_botanica.del.client.modeles;
 
import java.util.ArrayList;
import java.util.Date;
 
import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;
 
public class Commentaire {
 
private String auteur;
private Date date;
private String commentaire;
private ArrayList<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 ArrayList<Commentaire> getListeCommentaires() {
return listeCommentaires;
}
public void setListeCommentaires(ArrayList<Commentaire> listeCommentaires) {
this.listeCommentaires = listeCommentaires;
}
public void ajouterCommentaire(Commentaire commentaire) {
this.listeCommentaires.add(commentaire);
}
}
/src/org/tela_botanica/del/client/modeles/VoteProtocole.java
New file
0,0 → 1,73
package org.tela_botanica.del.client.modeles;
 
import java.io.Serializable;
import java.util.Date;
 
public class VoteProtocole implements Serializable {
 
/**
*
*/
private static final long serialVersionUID = -1017065180398557172L;
 
private String id;
 
private String idImage;
 
private int vote;
 
private String contributeur;
 
private Date date;
 
private Protocole 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 Protocole getProtocol() {
return protocol;
}
 
public void setProtocol(Protocole protocol) {
this.protocol = protocol;
}
 
}
/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;
}
 
}
/src/org/tela_botanica/del/client/modeles/PropositionDetermination.java
New file
0,0 → 1,97
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 String idImage;
private ArrayList<Commentaire> commentaires = new ArrayList<Commentaire>();
private String pourcentageConfiance;
private String espece;
 
private int vote;
private ArrayList<VoteDetermination> votesDeterminations = new ArrayList<VoteDetermination>();
 
private String contributeur;
 
private Date date;
 
public int getVotePondere() {
vote = 50;
return vote;
}
 
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 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 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 getPourcentageConfiance() {
return pourcentageConfiance;
}
 
public void setPourcentageConfiance(String pourcentageConfiance) {
this.pourcentageConfiance = pourcentageConfiance;
}
 
public String getEspece() {
return espece;
}
 
public void setEspece(String espece) {
this.espece = espece;
}
}
/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}
/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>
/src/org/tela_botanica/del/client/pagination/PaginationPresenteur.java
New file
0,0 → 1,184
package org.tela_botanica.del.client.pagination;
 
import java.util.Iterator;
import java.util.Vector;
 
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;
private int pageActuelle = 0;
private int pas;
 
public PaginationPresenteur(int nbElements) {
presenteur = this;
this.nbElementsTotal = nbElements;
actualiserNbPage();
vue = new PaginationVue();
setPas(10);
}
 
private void setBoutonActif() {
Iterator<Button> it = liens.iterator();
while (it.hasNext()) {
Button boutonCourant = it.next();
if (boutonCourant.getText().equals(String.valueOf(pageActuelle))) {
boutonCourant.setStyleName("actif");
} else {
boutonCourant.setStyleName("inactif");
}
}
}
 
private void actualiserNbPage() {
Double a = Math.ceil((double) nbElementsTotal / (double) pas);
this.nbPage = a.intValue();
}
 
public void setPageActuelle(int pageActuelle) {
this.pageActuelle = pageActuelle;
}
 
public void setPas(int pas) {
this.pas = pas;
actualiserNbPage();
creerLiens();
changerPage(pas * pageActuelle, pas * (pageActuelle + 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(pas / 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();
pageActuelle = Integer.parseInt(bouton.getText());
int debut = Integer.parseInt(bouton.getText()) * pas;
int fin = (debut + pas);
setBoutonActif();
changerPage(debut, fin);
 
}
});
 
}
}
 
public void pageSuivante() {
if (pageActuelle < nbPage - 1) {
pageActuelle++;
int debut = pageActuelle * pas;
int fin = debut + pas;
changerPage(debut, fin);
}
setBoutonActif();
}
 
public void pagePrecedente() {
 
if (pageActuelle > 0) {
pageActuelle--;
int debut = pageActuelle * pas;
int fin = debut + pas;
changerPage(debut, fin);
}
setBoutonActif();
}
 
public abstract void changerPage(int debut, int fin);
 
public PaginationPresenteur getInstance() {
return presenteur;
}
}
/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;
}
}
/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/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/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/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/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,218
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.cache.CacheClient;
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.Observation;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Protocole;
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 extends GwtObservable {
 
static MockDatasource instance;
 
List<Observation> observations = new ArrayList<Observation>();
 
List<PropositionDetermination> propositionDeterminationDatas = new ArrayList<PropositionDetermination>();
 
ArrayList<String> propositionsTaxonDatas = new ArrayList<String>();
 
List<Protocole> protocoles = new ArrayList<Protocole>();
 
ArrayList<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);
 
PropositionDetermination propositionDeterminationData = new PropositionDetermination();
propositionDeterminationData.setEspece("Iris lutescens subsp. lutescens");
propositionDeterminationData.setContributeur("contributeur test");
propositionDeterminationData.setId("1");
propositionDeterminationData.setIdImage("id image 1");
propositionDeterminationData.setPourcentageConfiance(I18n.getVocabulary().confiance_simple_suggestion());
propositionDeterminationData.setDate(new Date());
propositionDeterminationDatas.add(propositionDeterminationData);
 
PropositionDetermination propositionDeterminationData2 = new PropositionDetermination();
propositionDeterminationData2.setContributeur("contributeur test 2");
propositionDeterminationData2.setEspece("Lavatera arborea L.");
propositionDeterminationData2.setId("2");
propositionDeterminationData2.setIdImage("id image 1");
propositionDeterminationData2.setPourcentageConfiance(I18n.getVocabulary().confiance_sur_cent());
propositionDeterminationData2.setDate(new Date());
propositionDeterminationDatas.add(propositionDeterminationData2);
Commentaire commentaire1 = new Commentaire("Léo Ferré", new Date(), "Avec le temps...");
 
PropositionDetermination propositionDeterminationData3 = new PropositionDetermination();
propositionDeterminationData3.setEspece("Acer monsp. L.");
propositionDeterminationData3.setContributeur("Léo Ferré");
propositionDeterminationData3.ajouterCommentaire(commentaire1);
propositionDeterminationData3.setId("1");
propositionDeterminationData3.setIdImage("id image 1");
propositionDeterminationData3.setPourcentageConfiance(I18n.getVocabulary().confiance_sur_cent());
propositionDeterminationData3.setDate(new Date());
propositionDeterminationDatas.add(propositionDeterminationData3);
Commentaire commentaire2 = new Commentaire("Pierre Desproges", new Date(), "Public chéri mon amour !");
 
PropositionDetermination propositionDeterminationData4 = new PropositionDetermination();
propositionDeterminationData4.setEspece("Acer aceras aus.");
propositionDeterminationData4.setContributeur("Pierre Desproges");
propositionDeterminationData4.ajouterCommentaire(commentaire2);
propositionDeterminationData4.setId("2");
propositionDeterminationData4.setIdImage("id image 1");
propositionDeterminationData4.setPourcentageConfiance(I18n.getVocabulary().confiance_sur_cent());
propositionDeterminationData4.setDate(new Date());
propositionDeterminationDatas.add(propositionDeterminationData4);
 
Commentaire commentaire3 = new Commentaire("Louis Aragon", new Date(), "Tout est affaire de décor");
Commentaire commentaire4 = new Commentaire("Gregoire Duché", new Date(), "Grrrrrr");
Commentaire commentaire5 = new Commentaire("Jean-Pascal Milcent", new Date(), "De l'ordre, de l'ordre et encore de l'ordre");
commentaire4.ajouterCommentaire(commentaire5);
Commentaire commentaire6 = new Commentaire("Aurélien Peronnet", new Date(), "J'aime faire du bruit en machant mes chewing gums");
commentaire4.ajouterCommentaire(commentaire6);
PropositionDetermination propositionDeterminationData5 = new PropositionDetermination();
propositionDeterminationData5.setEspece("Acer monsp subsp. monsp.");
propositionDeterminationData5.setContributeur("Louis Aragon");
propositionDeterminationData5.ajouterCommentaire(commentaire3);
propositionDeterminationData5.ajouterCommentaire(commentaire4);
propositionDeterminationData5.setId("2");
propositionDeterminationData5.setIdImage("id image 1");
propositionDeterminationData5.setPourcentageConfiance(I18n.getVocabulary().confiance_probable());
propositionDeterminationData5.setDate(new Date());
propositionDeterminationDatas.add(propositionDeterminationData5);
 
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(auteurObs.get(auteur));
observation.setMotsClefs(motsClefs);
observation.setImageCelValidationDatas(propositionDeterminationDatas);
 
observations.add(observation);
}
 
pourcentagesConfiance.add(I18n.getVocabulary().confiance_simple_suggestion());
pourcentagesConfiance.add(I18n.getVocabulary().confiance_probable());
pourcentagesConfiance.add(I18n.getVocabulary().confiance_sur_cent());
}
 
public List<Observation> getObservations() {
 
return observations;
}
 
public List<PropositionDetermination> getValidationData(String idImage) {
return propositionDeterminationDatas;
}
 
public List<PropositionDetermination> getValidationDataByImageAndProtocol(String idImage, String protocolName) {
List<PropositionDetermination> validations = new ArrayList<PropositionDetermination>();
for (PropositionDetermination propositionDetermination : propositionDeterminationDatas) {
/*if (propositionDetermination.getProtocol().getNom().equals(protocolName)) {
validations.add(propositionDetermination);
}*/
}
return validations;
}
 
public Observation getObservationCourante() {
return observations.get(0);
}
 
public List<Observation> getObservationsEfloreParTaxon(String nomTaxon) {
return observations;
}
 
public Protocole getProtocole(String nomProtocole) {
for (Protocole protocole : protocoles) {
if (protocole.getNom().equals(nomProtocole)) {
return protocole;
}
}
return null;
}
 
public ArrayList<String> getPourcentagesConfiance() {
return pourcentagesConfiance;
}
 
public void saveVote(VoteProtocole voteProtocole) {
CacheClient.getInstance().getCurrentObservation().getVoteProtocoles().add(voteProtocole);
}
 
public void saveValidationData(PropositionDetermination validationData) throws ExceptionClient {
propositionDeterminationDatas.add(validationData);
}
 
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/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/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/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>