/trunk/src/org/tela_botanica/del/client/navigation/evenement/validationobservationpictoflora/GestionnaireEvenementValidationPictoflora.java |
---|
New file |
0,0 → 1,8 |
package org.tela_botanica.del.client.navigation.evenement.validationobservationpictoflora; |
import com.google.gwt.event.shared.EventHandler; |
public interface GestionnaireEvenementValidationPictoflora extends EventHandler { |
public void onValidationObservation(EvenementValidationPictoflora event); |
} |
/trunk/src/org/tela_botanica/del/client/navigation/evenement/validationobservationpictoflora/EvenementValidationPictoflora.java |
---|
New file |
0,0 → 1,31 |
package org.tela_botanica.del.client.navigation.evenement.validationobservationpictoflora; |
import org.tela_botanica.del.client.modeles.Observation; |
import com.google.gwt.core.shared.GWT; |
import com.google.gwt.event.shared.GwtEvent; |
public class EvenementValidationPictoflora extends GwtEvent<GestionnaireEvenementValidationPictoflora> { |
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementValidationPictoflora> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementValidationPictoflora>(); |
private final Observation observation; |
public EvenementValidationPictoflora(Observation observation) { |
this.observation = observation; |
} |
@Override |
protected void dispatch(GestionnaireEvenementValidationPictoflora handler) { |
handler.onValidationObservation(this); |
} |
@Override |
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementValidationPictoflora> getAssociatedType() { |
return TYPE; |
} |
public Observation getObservation() { |
return observation; |
} |
} |
/trunk/src/org/tela_botanica/del/client/navigation/evenement/BusEvenementiel.java |
---|
11,7 → 11,10 |
import org.tela_botanica.del.client.navigation.evenement.rechercheobservation.GestionnaireEvenementRechercheObservation; |
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation; |
import org.tela_botanica.del.client.navigation.evenement.validationobservation.GestionnaireEvenementValidation; |
import org.tela_botanica.del.client.navigation.evenement.validationobservationpictoflora.EvenementValidationPictoflora; |
import org.tela_botanica.del.client.navigation.evenement.validationobservationpictoflora.GestionnaireEvenementValidationPictoflora; |
import com.google.gwt.core.shared.GWT; |
import com.google.gwt.event.shared.HandlerManager; |
import com.google.gwt.user.client.History; |
43,7 → 46,17 |
cache.setPageCourante(ConstantesNavigation.PAGE_VALIDATION); |
} |
}); |
addHandler(EvenementValidationPictoflora.TYPE, new GestionnaireEvenementValidationPictoflora() { |
@Override |
public void onValidationObservation(EvenementValidationPictoflora event) { |
GWT.log("onvalpf"); |
doValidationObservationPictoflora(event.getObservation()); |
cache.setPageCourante(ConstantesNavigation.PAGE_VALIDATION_PICTOFLORA); |
} |
}); |
addHandler(EvenementComparaisonEflore.TYPE, new GestionnaireEvenementComparaisonEflore() { |
@Override |
77,6 → 90,11 |
CacheClient.getInstance().setObservationCourante(observation); |
History.newItem(ConstantesNavigation.PAGE_VALIDATION + "~" + observation.getId(), true); |
} |
private void doValidationObservationPictoflora(Observation observation) { |
CacheClient.getInstance().setObservationCourante(observation); |
History.newItem(ConstantesNavigation.PAGE_VALIDATION_PICTOFLORA + "~" + observation.getId(), true); |
} |
private void doComparaisonAvecEflore(String taxon) { |
History.newItem(ConstantesNavigation.PAGE_COMPARAISON_EFLORE, true); |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplanteVue.ui.xml |
---|
New file |
0,0 → 1,37 |
<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:generateLocales="default"> |
<ui:with field='res' |
type='org.tela_botanica.del.client.resources.Ressources' /> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="MoteurIdentiplante.css" /> |
<g:HTMLPanel styleName="limiteMax"> |
<g:HTMLPanel> |
<g:HTML styleName="{style.chapeau}"><ui:msg key="chapeauObservation">Cet espace vous permet d'échanger sur la détermination d'espèces. |
Vous ne parvenez pas à déterminer une plante ? Soumettez-la aux membres du réseau. |
Vous avez relevé des erreurs dans les images soumises par le réseau ? Postez un commentaire ou proposez une nouvelle détermination.</ui:msg></g:HTML> |
<g:Label ui:field="ajouterObservation" text="{constants.ajouterObservation}" title="{constants.legendeAjouterObservation}" styleName="acceder-outil {style.lienProposerObservation}"/> |
<g:Anchor target="_blank" href="{constants.lienAideIdentiplante}" ui:field="aide" text="{constants.accesAide}" title="{constants.legendeAjouterObservation}" styleName="acceder-aide {style.lienAide}"/> |
<g:HTMLPanel ui:field="zonePartageUrl"></g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="limiteMax importance1"> |
<g:Label text="{constants.rechercherObservation}" styleName="titre {style.titreRechercheObs}" /> |
<g:Label text="{constants.entrerMotClef}" styleName="gris {style.entrerMotClef}" /> |
<g:HTMLPanel ui:field="zoneRecherche" /> |
<g:HorizontalPanel styleName="{style.zoneStatut}"> |
<g:Label>Filtrer par statut : </g:Label> |
<g:CheckBox ui:field="radioTout" text="Tout" name="statut" checked="true" formValue="tout"></g:CheckBox> |
<g:CheckBox ui:field="radioDeterminer" text="à déterminer" name="statut" formValue="adeterminer"></g:CheckBox> |
<g:CheckBox ui:field="radioDiscussion" text="en discussion" name="statut" formValue="endiscussion"></g:CheckBox> |
</g:HorizontalPanel> |
</g:HTMLPanel> |
<g:HTMLPanel> |
<g:HTMLPanel ui:field="zoneResultats" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplantePresenteur.java |
---|
New file |
0,0 → 1,104 |
package org.tela_botanica.del.client.vues.identiplante.moteur; |
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur; |
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue; |
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur; |
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.config.Config; |
import org.tela_botanica.del.client.modeles.ModeRecherche; |
import org.tela_botanica.del.client.services.rest.ObservationService; |
import org.tela_botanica.del.client.services.rest.ObservationServiceConcret; |
import org.tela_botanica.del.client.vues.identiplante.resultats.ResultatsIdentiplantePresenteur; |
import org.tela_botanica.del.client.vues.identiplante.resultats.ResultatsIdentiplanteVue; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.Panel; |
public class MoteurIdentiplantePresenteur extends Presenteur { |
public interface Vue extends IsWidget { |
public HasWidgets getZoneRecherche(); |
public HasWidgets getZoneResultats(); |
HasClickHandlers getLienAjoutObservation(); |
public String getValeurRadioStatut(); |
public HasClickHandlers getRadioADeterminer(); |
public HasClickHandlers getRadioEnDiscussion(); |
public void decocherRadioTout(); |
public Panel getZonePartageUrl(); |
} |
private Vue vue; |
public MoteurIdentiplantePresenteur(ObservationService serviceObs, Vue vue) { |
this.vue = vue; |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
ajouterMoteurRechercheAvancee(); |
PartageUrlPresenteur presenteurPartageUrl = new PartageUrlPresenteur(new PartageUrlVue()); |
presenteurPartageUrl.go(vue.getZonePartageUrl()); |
gererEvenements(); |
} |
protected void ajouterMoteurRechercheAvancee() { |
MoteurRecherchePresenteur presenteur = new MoteurRecherchePresenteur(new MoteurRechercheVue("") { |
}, ModeRecherche.MODE_OBSERVATION) { |
@Override |
public void lancerRecherche() { |
chercherObservations(); |
} |
}; |
presenteur.go(vue.getZoneRecherche()); |
} |
public void chercherObservations() { |
vue.getZoneResultats().clear(); |
new ResultatsIdentiplantePresenteur(new ObservationServiceConcret(), new ResultatsIdentiplanteVue(), vue.getValeurRadioStatut()).go(vue.getZoneResultats()); |
} |
protected void gererEvenements() { |
vue.getLienAjoutObservation().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("applisaisie"), "Saisie d'une nouvelle observation", null); |
} |
}); |
vue.getRadioADeterminer().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
vue.decocherRadioTout(); |
} |
}); |
vue.getRadioEnDiscussion().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
vue.decocherRadioTout(); |
} |
}); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplanteVue.java |
---|
New file |
0,0 → 1,88 |
package org.tela_botanica.del.client.vues.identiplante.moteur; |
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur; |
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue; |
import org.tela_botanica.del.client.i18n.I18n; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.uibinder.client.UiBinder; |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.ui.CheckBox; |
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.Label; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.RadioButton; |
import com.google.gwt.user.client.ui.Widget; |
public class MoteurIdentiplanteVue extends Composite implements MoteurIdentiplantePresenteur.Vue { |
// Gestion d'UiBinder |
interface Binder extends UiBinder<Widget, MoteurIdentiplanteVue> { |
} |
private static Binder binder = GWT.create(Binder.class); |
@UiField |
Panel zoneRecherche, zoneResultats, zonePartageUrl; |
@UiField |
Label ajouterObservation; |
@UiField |
CheckBox radioTout, radioDeterminer, radioDiscussion; |
public HasWidgets getZoneRecherche() { |
return zoneRecherche; |
} |
public Panel getZonePartageUrl() { |
return zonePartageUrl; |
} |
// Constructeur de la vue |
public MoteurIdentiplanteVue() { |
initWidget(binder.createAndBindUi(this)); |
} |
public Panel getZoneResultats() { |
return zoneResultats; |
} |
@Override |
public HasClickHandlers getLienAjoutObservation() { |
return ajouterObservation; |
} |
public String getValeurRadioStatut() { |
String valeurStatut = ""; |
if (radioDeterminer.getValue()) { |
valeurStatut += radioDeterminer.getFormValue() + ";"; |
} |
if (radioDiscussion.getValue()) { |
valeurStatut += radioDiscussion.getFormValue() + ";"; |
} |
return valeurStatut; |
} |
@Override |
public HasClickHandlers getRadioADeterminer() { |
return radioDeterminer; |
} |
@Override |
public HasClickHandlers getRadioEnDiscussion() { |
return radioDiscussion; |
} |
@Override |
public void decocherRadioTout() { |
radioTout.setChecked(false); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplanteVueBinderImplGenMessages.properties |
---|
New file |
0,0 → 1,12 |
# Generated from org.tela_botanica.del.client.vues.rechercheobservations.moteur.MoteurRechercheObservationsVueBinderImplGenMessages |
# for locale fr |
chapeauObservation=<ul class="traitTela">\ |
<li>Cet espace vous permet d''échanger sur la détermination d''espèces.</li> \ |
<li>Vous ne parvenez pas à déterminer une plante ? <br />Soumettez-la aux membres du réseau.</li> \ |
<li>Vous avez relevé des erreurs dans les images soumises par le réseau ? <br />Postez un commentaire ou proposez une nouvelle détermination.</li> \ |
</ul> |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplante.css |
---|
New file |
0,0 → 1,39 |
.entrerMotClef { |
margin-bottom: 10px; |
font-size:12px |
} |
.lienProposerObservation { |
margin-left:65px; |
margin-top:10px; |
margin-bottom:10px; |
} |
.chapeau { |
min-height:70px; |
} |
.zoneStatut { |
margin-top:; |
} |
.zoneStatut span { |
padding-right:10px; |
} |
.zoneStatut label { |
padding-left:2px; |
} |
.titreRechercheObs { |
margin-top:5px; |
} |
.lienAide { |
margin-right:70px; |
padding:4px 15px; |
margin-top:9px; |
float:right; |
color:white; |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/determinationVue.css |
---|
New file |
0,0 → 1,107 |
.pageDetermination { |
margin-top:70px; |
} |
.metadonnees { |
margin-bottom:10px; |
margin-top:10px; |
display:inline-block; |
} |
.zoneVote { |
margin-left: 5px; |
height: 100%; |
display:inline-block; |
vertical-align:top; |
border-left: solid 1px #DDD; |
border-right: solid 1px #DDD; |
padding-left: 10px; |
padding-right:10px; |
text-align:left; |
} |
.taxonPlusProbable { |
float: left; |
} |
.zoneBarreRepartition { |
border: solid 1px #DDD; |
padding: 15px; |
} |
.zoneDetailImage { |
height: 100%; |
width: 255px; |
display:inline-block; |
vertical-align:top; |
text-align:left; |
clear: left; |
} |
.zoneImage { |
margin-bottom: 10px; |
margin-right: 15px |
} |
.zoneImage div { |
clear: left; |
padding-top: 5px; |
} |
.zoneImage div img { |
float: left; |
padding: 0 5px 0 0; |
} |
.boutonProposer { |
float: left; |
padding: 5px; |
cursor: pointer; |
background:#8EB533; |
border:none; |
margin-right:10px; |
margin-top:10px; |
} |
.zoneOutils { |
width: 15%; |
padding-left:10px; |
display:inline-block; |
vertical-align:top; |
text-align:left; |
} |
.boutons { |
margin-bottom:15px; |
} |
.lienProposerObservation { |
margin-left: 575px; |
} |
.nomTaxonProbable{ |
padding-left:3px; |
} |
.taxonProbable { |
background: none repeat scroll 0 0 #F8F8C3; |
clear: left; |
font-size: 15px; |
margin-bottom: 5px; |
padding: 13px 9px; |
} |
.voteProtocole div { |
margin-bottom:10px; |
} |
.voteProtocole div div { |
margin-bottom:0px; |
border:solid 0px red |
} |
.autreOutils { |
margin-top:15px; |
} |
.zonerss { |
margin-top:5px; |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/IdentiplanteDeterminationVue.ui.xml |
---|
New file |
0,0 → 1,53 |
<!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.composants.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/> |
<ui:style src="determinationVue.css" /> |
<g:HTMLPanel styleName="{style.pageDetermination}"> |
<g:HTMLPanel styleName="limiteMax"> |
<g:Hyperlink ui:field="lienRetour" styleName="lien">Retour</g:Hyperlink> |
<g:HTMLPanel ui:field="metadonnees" styleName="{style.metadonnees}"/> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="contenuCentre"> |
<g:HTMLPanel styleName="{style.zoneDetailImage}"> |
<g:VerticalPanel ui:field="detailImageObservation" styleName="{style.zoneImage}"/> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.zoneVote}"> |
<g:Label styleName="titre" text="{constants.titreDetermination}" /> |
<g:HTMLPanel styleName="nettoyage {style.boutons}"> |
<g:Button text="{constants.proposerSaDetermination}" ui:field="boutonAjoutProposition" styleName="bouton" /> |
<g:Button text="{constants.ajouterCommentaire}" ui:field="boutonAjoutCommentaire" styleName="bouton" /> |
<g:HTMLPanel ui:field="zoneRss" styleName="droite {style.zonerss}"></g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.taxonProbable}"> |
<g:Label styleName="gauche" text="{constants.determinationPlusProbable}" /> |
<g:Label ui:field="nomTaxonProbable" styleName="gauche gras {style.nomTaxonProbable}"/> |
<g:HTML><br /></g:HTML> |
</g:HTMLPanel> |
<g:VerticalPanel ui:field="forum" /> |
<g:HTMLPanel styleName="nettoyage {style.boutons}"> |
<g:Button text="{constants.proposerSaDetermination}" ui:field="boutonAjoutPropositionBas" styleName="bouton" /> |
<g:Button text="{constants.ajouterCommentaire}" ui:field="boutonAjoutCommentaireBas" styleName="bouton" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.zoneOutils}"> |
<g:Label text="Pour vous aider : " styleName="titre3"></g:Label> |
<g:VerticalPanel ui:field="formulaireRechercheEflore"/> |
<g:Label styleName="{style.autreOutils} sousTitre">Vérifier sa détermination</g:Label> |
<g:Label styleName="lienListe labelLien" ui:field="lienEflore">eFlore</g:Label> |
<g:Label styleName="{style.autreOutils} sousTitre">Autres outils en ligne</g:Label> |
<g:Label styleName="lienListe labelLien" ui:field="lienOuvrages">Flores numérisées</g:Label> |
<g:Label styleName="lienListe labelLien" ui:field="lienBonnier">Flore Bonnier interactive</g:Label> |
<g:Label styleName="lienListe labelLien" ui:field="lienCles">Clés de détermination</g:Label> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/IdentiplanteDeterminationPresenteur.java |
---|
New file |
0,0 → 1,254 |
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination; |
import java.util.List; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue; |
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionPresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionVue; |
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesEnLigneVue; |
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur; |
import org.tela_botanica.del.client.composants.observations.ObservationImagesPresenteur; |
import org.tela_botanica.del.client.composants.observations.ObservationImagesVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.composants.rss.RssPresenteur; |
import org.tela_botanica.del.client.composants.rss.RssVue; |
import org.tela_botanica.del.client.config.Config; |
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation; |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.ModeRecherche; |
import org.tela_botanica.del.client.modeles.MoyenneVote; |
import org.tela_botanica.del.client.modeles.Observation; |
import org.tela_botanica.del.client.modeles.ObservationServiceResultat; |
import org.tela_botanica.del.client.modeles.VoteDetermination; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation; |
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation; |
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination; |
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination; |
import org.tela_botanica.del.client.services.CalculVoteDeterminationService; |
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret; |
import org.tela_botanica.del.client.services.rest.ObservationService; |
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret; |
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback; |
import org.tela_botanica.del.client.utils.URLUtils; |
import org.tela_botanica.del.client.composants.formulairerechercheeflore.FormulaireRechercheEflorePresenteur; |
import org.tela_botanica.del.client.composants.forum.ForumPresenteur; |
import org.tela_botanica.del.client.composants.forum.ForumVue; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.Button; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.Panel; |
public class IdentiplanteDeterminationPresenteur extends Presenteur { |
/** |
* Vue de l'interface de détermination |
* */ |
public interface Vue extends IsWidget { |
public Panel getForum(); |
public Panel getDetailImageObservation(); |
public Panel getFormulaireRechercheEflore(); |
public Button getBoutonAjoutProposition(); |
public Button getBoutonAjoutCommentaire(); |
public Button getBoutonAjoutPropositionBas(); |
public Button getBoutonAjoutCommentaireBas(); |
public HasWidgets getMetadonnees(); |
public void afficherNomTaxonProbable(String nomTaxon); |
public HasClickHandlers getLienOuvrages(); |
public HasClickHandlers getLienBonnier(); |
public HasClickHandlers getLienCles(); |
public HasClickHandlers getLienEflore(); |
public HasWidgets getZoneRss(); |
} |
private Vue vue; |
private FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur; |
// Déclaration des services à utiliser |
private ObservationService observationService; |
private CacheClient cache = CacheClient.getInstance(); |
public IdentiplanteDeterminationPresenteur(Vue vue, ObservationService observationService) { |
this.vue = vue; |
this.observationService = observationService; |
} |
public void go(final HasWidgets composite) { |
// TODO afficher une icone de chargement si le chargement devient trop |
// long |
// car tout l'écran est asynchrone ici |
String observationId = URLUtils.getURLSpecialParameterValue(); |
observationService.getObservation(observationId, new ObservationsCallback() { |
@Override |
public void surRetour(ObservationServiceResultat objetRetour) { |
afficherRss(cache.getObservationCourante()); |
// trouve l'image courante si elle n'est pas deja en cache |
List<Image> listeImages = cache.getObservationCourante().getImages(); |
if (listeImages.size() > 0) { |
CacheClient.getInstance().setImageCourante(listeImages.get(0)); |
} else { |
CacheClient.getInstance().setImageCourante(null); |
} |
new MetadonneesPresenteur(new MetadonneesEnLigneVue(), cache.getObservationCourante(), ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonnees()); |
new ObservationImagesPresenteur(new ObservationImagesVue(), cache.getObservationCourante(), CacheClient.getInstance().getImageCourante(), ConstantesNavigation.PAGE_VALIDATION_PICTOFLORA).go(vue.getDetailImageObservation()); |
new ForumPresenteur(new ForumVue()).go(vue.getForum()); |
new FormulaireRechercheEflorePresenteur().go(vue.getFormulaireRechercheEflore()); |
calculerEtAfficherVoteDeterminationPlusPopulaire(); |
composite.add(vue.asWidget()); |
} |
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
} |
}); |
gererEvenements(); |
} |
public void afficherRss(Observation observation) { |
new RssPresenteur(new RssVue(), observation, "Suivre cette observation").go(vue.getZoneRss()); |
} |
private void calculerEtAfficherVoteDeterminationPlusPopulaire() { |
Observation observation = cache.getObservationCourante(); |
String nomTaxon = observation.getNomRetenu(); |
List<MoyenneVote> votesOrdonnes = CalculVoteDeterminationService.calculerVoteDeterminationPlusPopulaire(cache.getObservationCourante().getPropositionDeterminations()); |
if (votesOrdonnes.size() > 0) { |
nomTaxon = votesOrdonnes.get(0).getIntituleAssocie(); |
} |
vue.afficherNomTaxonProbable(nomTaxon); |
} |
public void gererEvenements() { |
BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() { |
@Override |
public void onVoteDetermination(VoteDetermination event) { |
calculerEtAfficherVoteDeterminationPlusPopulaire(); |
} |
}); |
ClickHandler clicAjoutProposition = new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue(), new PropositionDeterminationServiceConcret())); |
} |
}; |
vue.getBoutonAjoutProposition().addClickHandler(clicAjoutProposition); |
vue.getBoutonAjoutPropositionBas().addClickHandler(clicAjoutProposition); |
ClickHandler clicAjoutCommentaire = new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(cache.getObservationCourante(), new CommentaireServiceConcret(), new FormulaireCommentaireVue()); |
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur); |
} |
}; |
vue.getBoutonAjoutCommentaire().addClickHandler(clicAjoutCommentaire); |
vue.getBoutonAjoutCommentaireBas().addClickHandler(clicAjoutCommentaire); |
BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() { |
@Override |
public void onAjoutDetermination(EvenementAjoutDetermination event) { |
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) { |
fenetreOverlaySimplePresenteur.fermerFenetreModale(); |
} |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() { |
@Override |
public void onAjoutCommentaire(EvenementAjoutCommentaire event) { |
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) { |
fenetreOverlaySimplePresenteur.fermerFenetreModale(); |
} |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() { |
@Override |
public void onChangementImage(EvenementChangementImageValidation event) { |
vue.getDetailImageObservation().clear(); |
new ObservationImagesPresenteur(new ObservationImagesVue(), cache.getObservationCourante(), CacheClient.getInstance().getImageCourante(), ConstantesNavigation.PAGE_VALIDATION_PICTOFLORA).go(vue.getDetailImageObservation()); |
} |
}); |
vue.getLienOuvrages().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("ouvragesFlore"), "Flores numérisées", null); |
} |
}); |
vue.getLienBonnier().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("bonnierPda"), "Flore Bonnier PDA", null); |
} |
}); |
vue.getLienCles().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("clesDetermination"), "Clés de determination", null); |
} |
}); |
vue.getLienEflore().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("eflore"), "eFlore", null); |
} |
}); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/detail/detailObservation.css |
---|
New file |
0,0 → 1,27 |
.detailObservation { |
font-size: 11px; |
position: absolute; |
padding: 5px; |
color: white; |
background: #333; |
opacity: 0.8; |
margin-top: -80px; |
width: 230px; |
} |
.observateur td { |
font-size: 11px; |
white-space: nowrap |
} |
.date { |
} |
.nomRetenu { |
font-weight: bold |
} |
.dateObservation { |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/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> |
<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> - </g:HTML><g:Label ui:field="localite" /><g:HTML> - </g:HTML><g:Label ui:field="dateObservation" /> |
</g:HorizontalPanel> |
<g:HorizontalPanel> |
<!-- <g:Label text="{constants.nom_retenu} : "/> --> |
<g:Label ui:field="nomRetenu" styleName="{style.nomRetenu}"/> |
</g:HorizontalPanel> |
<g:HorizontalPanel styleName="{style.date}"> |
<!-- <g:Label text="{constants.date_observation} : "/> --> |
</g:HorizontalPanel> |
<g:HorizontalPanel> |
<!-- <g:Label text="{constants.famille} : "/> --> |
<g:HorizontalPanel><g:Label ui:field="famille" /></g:HorizontalPanel> |
</g:HorizontalPanel> |
<g:HorizontalPanel> |
<!-- <g:Label text="{constants.localite} : "/> --> |
</g:HorizontalPanel> |
</g:VerticalPanel> |
</g:VerticalPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/detail/DetailImageObservationPresenteur.java |
---|
New file |
0,0 → 1,24 |
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination.detail; |
import org.tela_botanica.del.client.cache.CacheClient; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class DetailImageObservationPresenteur { |
public interface Vue extends IsWidget { |
public void chargerInformationsObservation(org.tela_botanica.del.client.modeles.Image image); |
} |
private Vue vue; |
public DetailImageObservationPresenteur(Vue vue) { |
this.vue = vue; |
} |
public void go(HasWidgets composite) { |
vue.chargerInformationsObservation(CacheClient.getInstance().getImageCourante()); |
composite.add(vue.asWidget()); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/detail/DetailImageObservationVue.java |
---|
New file |
0,0 → 1,38 |
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination.detail; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.uibinder.client.UiBinder; |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.Image; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.Widget; |
public class DetailImageObservationVue extends Composite implements DetailImageObservationPresenteur.Vue { |
@UiField |
protected Image imageObservation; |
@UiField |
protected Label nomObservateur, nomRetenu, dateObservation, famille, localite; |
private static DetailImageObservationUIiBinder uiBinder = GWT.create(DetailImageObservationUIiBinder.class); |
interface DetailImageObservationUIiBinder extends UiBinder<Widget, DetailImageObservationVue> { |
}; |
public DetailImageObservationVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
public void chargerInformationsObservation(org.tela_botanica.del.client.modeles.Image image) { |
imageObservation.setUrl(image.getUrl()); |
nomObservateur.setText(image.getObservation().getAuteur()); |
nomRetenu.setText(image.getObservation().getNomRetenu()); |
famille.setText(image.getObservation().getFamille()); |
localite.setText(image.getObservation().getLocalite()); |
dateObservation.setText(image.getObservation().getDateReleve()); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/IdentiplanteDeterminationVue.java |
---|
New file |
0,0 → 1,106 |
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination; |
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
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.HTMLPanel; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.Hyperlink; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class IdentiplanteDeterminationVue extends Composite implements IdentiplanteDeterminationPresenteur.Vue { |
@UiField |
Panel forum, detailImageObservation, formulaireRechercheEflore, zoneRss; |
@UiField |
Label nomTaxonProbable, lienOuvrages, lienEflore, lienBonnier, lienCles; |
@UiField |
Hyperlink lienRetour; |
@UiField |
Button boutonAjoutProposition, boutonAjoutPropositionBas, boutonAjoutCommentaire, boutonAjoutCommentaireBas; |
@UiField |
Panel metadonnees; |
interface DeterminationUIiBinder extends UiBinder<Widget, IdentiplanteDeterminationVue> { |
}; |
private static DeterminationUIiBinder uiBinder = GWT.create(DeterminationUIiBinder.class); |
public IdentiplanteDeterminationVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
lienRetour.setTargetHistoryToken(ConstantesNavigation.HOME); |
} |
public Panel getForum() { |
return forum; |
} |
public Panel getDetailImageObservation() { |
return detailImageObservation; |
} |
public Panel getFormulaireRechercheEflore() { |
return formulaireRechercheEflore; |
} |
public Button getBoutonAjoutProposition() { |
return boutonAjoutProposition; |
} |
public Button getBoutonAjoutPropositionBas() { |
return boutonAjoutPropositionBas; |
} |
public Panel getMetadonnees() { |
return metadonnees; |
} |
@Override |
public void afficherNomTaxonProbable(String nomTaxon) { |
this.nomTaxonProbable.setText(nomTaxon); |
} |
public Button getBoutonAjoutCommentaire() { |
return boutonAjoutCommentaire; |
} |
public Button getBoutonAjoutCommentaireBas() { |
return boutonAjoutCommentaireBas; |
} |
@Override |
public HasClickHandlers getLienOuvrages() { |
return lienOuvrages; |
} |
@Override |
public HasClickHandlers getLienBonnier() { |
return lienBonnier; |
} |
@Override |
public HasClickHandlers getLienCles() { |
return lienCles; |
} |
@Override |
public HasClickHandlers getLienEflore() { |
return lienEflore; |
} |
public HasWidgets getZoneRss() { |
return zoneRss; |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/ligneProtocole/ligneProtocole.css |
---|
New file |
0,0 → 1,7 |
.nomProtocole { |
font-size: 11px; |
overflow: hidden; |
text-overflow: ellipsis; |
width: 87px; |
margin-bottom:15px; |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/ligneProtocole/LigneProtocoleVue.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' |
xmlns:forum="urn:import:org.tela_botanica.del.client.composants.forum"> |
<ui:style src="ligneProtocole.css" /> |
<g:HorizontalPanel styleName="vote"> |
<g:HTMLPanel ui:field="zoneVote" /> |
</g:HorizontalPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/ligneProtocole/LigneProtocolePresenteur.java |
---|
New file |
0,0 → 1,59 |
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination.ligneProtocole; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVotePresenteur; |
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVoteVue; |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.Protocole; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation; |
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation; |
import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class LigneProtocolePresenteur extends Presenteur { |
public interface Vue extends IsWidget { |
HasWidgets getZoneVote(); |
} |
private Vue vue; |
private Protocole protocole; |
public LigneProtocolePresenteur(Protocole protocole, Vue vue) { |
this.vue = vue; |
this.protocole = protocole; |
chargerValeursProtocolePourImageCourante(); |
} |
public void chargerValeursProtocolePourImageCourante(){ |
vue.getZoneVote().clear(); |
Image imageCourante = CacheClient.getInstance().getImageCourante(); |
MoyenneVotePresenteur votePresenteur = new MoyenneVotePresenteur(imageCourante, protocole, new MoyenneVoteVue(), new VoteProtocoleServiceConcret()); |
votePresenteur.go(vue.getZoneVote()); |
} |
public Vue getVue() { |
return vue; |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
gererEvenements(); |
} |
@Override |
protected void gererEvenements() { |
BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() { |
@Override |
public void onChangementImage(EvenementChangementImageValidation event) { |
chargerValeursProtocolePourImageCourante(); |
} |
}); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/ligneProtocole/LigneProtocoleVue.java |
---|
New file |
0,0 → 1,30 |
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination.ligneProtocole; |
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.Label; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class LigneProtocoleVue extends Composite implements LigneProtocolePresenteur.Vue { |
@UiField |
Panel zoneVote; |
interface LigneProtocoleUIiBinder extends UiBinder<Widget, LigneProtocoleVue> { |
}; |
private static LigneProtocoleUIiBinder uiBinder = GWT.create(LigneProtocoleUIiBinder.class); |
public LigneProtocoleVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
@Override |
public HasWidgets getZoneVote() { |
return this.zoneVote; |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/ResultatsIdentiplante.css |
---|
New file |
0,0 → 1,48 |
.zoneObservation { |
width: 100%; |
clear: left; |
margin-top: 10px; |
} |
.barreNavigation { |
margin-top: 0; |
padding-bottom: 20px; |
} |
.votes { |
padding-left: 10px; |
cursor: pointer; |
} |
.date { |
padding-left: 10px; |
cursor: pointer; |
} |
.zoneTri { |
padding-left: 10px; |
} |
.boutonTriAsc, .boutonTriDesc { |
border:none; |
cursor:pointer; |
} |
.boutonTriAsc:hover, .boutonTriDesc:hover { |
border-bottom:dotted 1px #8EB533 |
} |
.boutonTriAsc { |
height: 19px; |
background: url(./img/fleche-haut.png) no-repeat |
} |
.boutonTriDesc { |
height: 19px; |
background: url(./img/fleche-bas.png) no-repeat |
} |
.aucunResultat{ |
text-align: left; |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observations/observation.css |
---|
New file |
0,0 → 1,114 |
.observation { |
width:480px; |
padding:10px; |
border: solid 1px #DDD; |
} |
.titrePropositions { |
margin-top:-0px; |
margin-right:30px; |
background:none; |
} |
.listePropositions { |
background: none repeat scroll 0 0 #FAFAF0; |
border-color: #DDDDDD; |
border-radius: 0 10px 10px 0; |
border-style: solid; |
border-width: 1px 1px 1px 0; |
box-shadow: 2px 2px 2px #DDDDDD; |
min-height: 230px; |
margin-top: 7px; |
padding: 10px 10px 10px 16px; |
width:470px; |
} |
.nomEspece { |
padding:7px; |
font-size:15px; |
font-weight:bold; |
background:rgba(100,100,100,0.5); |
color:white; |
cursor:pointer; |
position:absolute; |
width:236px; |
} |
.nomEspece:hover { |
background:#8EB533; |
} |
.colonneImages { |
min-width:260px; |
} |
.description { |
border: solid 1px #EEE; |
border-width: 0 1px 0 0; |
width: 270px; |
padding: 10px; |
margin: 0 1px 5px 0; |
height: 150px |
} |
.determination { |
padding: 10px; |
margin: 0 1px 5px 0; |
height: 150px |
} |
.photoPrincipale { |
height: 20px; |
float: left; |
padding: 5px; |
margin-bottom: 15px; |
cursor: pointer |
} |
.panneauDeterminations { |
text-align: right |
} |
.lienDetermination { |
text-align: center; |
padding: 5px; |
color: blue; |
cursor: pointer; |
float: right; |
margin: 5px; |
text-decoration: underline; |
} |
.miniatures img { |
height: 30px |
} |
.metadonnees { |
} |
.boutonDetermination { |
background: url("./img/add.png") no-repeat scroll 5px 7px #DDDDDD; |
border: 1px solid #AAAAAA; |
cursor: pointer; |
float: right; |
margin-bottom: 5px; |
margin-right: 5px; |
margin-top: 10px; |
padding: 5px 5px 5px 25px; |
} |
.ligneObservation { |
margin-bottom: 10px; |
} |
.boutonDetermination:hover { |
background-color: #AAA |
} |
.accesOutil { |
margin-top: 15px; |
} |
.ajouterProposition { |
margin-top:10px; |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observations/ObservationVue.ui.xml |
---|
New file |
0,0 → 1,41 |
<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.resources.Ressources' /> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="observation.css" /> |
<g:HTMLPanel styleName="{style.ligneObservation} limiteMin limiteMax"> |
<g:HTMLPanel styleName="droite {style.listePropositions}"> |
<g:HTMLPanel styleName="{style.panneauDeterminations}"> |
<g:Label styleName="titre2 {style.titrePropositions}">Proposition des membres du réseau</g:Label> |
<g:HTMLPanel ui:field="determinationsPanel" /> |
<g:HTMLPanel styleName="nettoyage"> |
<g:Button ui:field="boutonAjoutProposition" styleName="bouton-petit {style.ajouterProposition}" |
text="{constants.proposerSaDetermination}" /> |
<g:Button ui:field="boutonAjoutCommentaire" styleName="bouton-petit" |
text="{constants.ajouterCommentaire}" /> |
<g:Button ui:field="boutonPlusDeDetails" styleName="bouton-petit {style.ajouterProposition}" |
text="Voir tous les commentaires" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="ligne ombre-faible arrondi {style.observation}"> |
<g:HTMLPanel styleName="colonne {style.colonneImages}"> |
<g:Label ui:field="nomEspece" styleName="{style.nomEspece}"></g:Label> |
<g:HTMLPanel ui:field="imagesPanel" /> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="colonne"> |
<g:HTMLPanel ui:field="metadonnees" styleName="{style.metadonnees}" /> |
</g:HTMLPanel> |
<g:HTML> |
<br class="nettoyage" /> |
</g:HTML> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observations/ObservationPresenteur.java |
---|
New file |
0,0 → 1,147 |
package org.tela_botanica.del.client.vues.identiplante.resultats.observations; |
import java.util.List; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur; |
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesVue; |
import org.tela_botanica.del.client.composants.observations.ObservationImagesPresenteur; |
import org.tela_botanica.del.client.composants.observations.ObservationImagesVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.ModeRecherche; |
import org.tela_botanica.del.client.modeles.Observation; |
import org.tela_botanica.del.client.modeles.PropositionDetermination; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue; |
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionPresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionVue; |
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation; |
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret; |
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret; |
import org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations.ObservationDeterminationPresenteur; |
import org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations.ObservationDeterminationVue; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class ObservationPresenteur extends Presenteur { |
public interface Vue extends IsWidget { |
public HasClickHandlers getBoutonAjoutProposition(); |
public HasWidgets getDeterminationsPanel(); |
public HasWidgets getImagesPanel(); |
public HasWidgets getMetadonneesPanel(); |
public HasClickHandlers getNomEspece(); |
public void setNomEspece(String nomEspece); |
public HasClickHandlers getBoutonAjoutCommentaire(); |
public HasClickHandlers getBoutonPlusDeDetails(); |
} |
private Vue vue; |
private Observation observation; |
private Image imagePrincipale; |
private ObservationDeterminationPresenteur observationDeterminationPresenteur; |
private FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur; |
public ObservationPresenteur(Vue vue, Observation observation, Image imagePrincipale) { |
this.observation = observation; |
this.vue = vue; |
this.imagePrincipale=imagePrincipale; |
chargerObservation(); |
} |
public void chargerObservation() { |
new ObservationImagesPresenteur(new ObservationImagesVue(), observation, imagePrincipale, ConstantesNavigation.PAGE_RECHERCHE_OBSERVATIONS).go(vue.getImagesPanel()); |
new MetadonneesPresenteur(new MetadonneesVue(), observation, ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonneesPanel()); |
observationDeterminationPresenteur = new ObservationDeterminationPresenteur(new ObservationDeterminationVue(), observation.getPropositionDeterminations()); |
observationDeterminationPresenteur.go(vue.getDeterminationsPanel()); |
vue.setNomEspece(observation.getNomRetenu()); |
gererEvenements(); |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
} |
protected void gererEvenements() { |
BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() { |
@Override |
public void onAjoutDetermination(EvenementAjoutDetermination event) { |
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) { |
fenetreOverlaySimplePresenteur.fermerFenetreModale(); |
ajouterPropositionDetermination(event.getPropositionDetermination()); |
} |
} |
}); |
vue.getBoutonAjoutProposition().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
List<Image> images = observation.getImages(); |
if (images.size() > 0) { |
CacheClient.getInstance().setImageCourante(images.get(0)); |
} else { |
CacheClient.getInstance().setImageCourante(null); |
} |
CacheClient.getInstance().setObservationCourante(observation); |
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue(), new PropositionDeterminationServiceConcret())); |
} |
}); |
ClickHandler versDetails = new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation)); |
} |
}; |
vue.getNomEspece().addClickHandler(versDetails); |
vue.getBoutonPlusDeDetails().addClickHandler(versDetails); |
vue.getBoutonAjoutCommentaire().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(observation, new CommentaireServiceConcret(), new FormulaireCommentaireVue()); |
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur); |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() { |
@Override |
public void onAjoutCommentaire(EvenementAjoutCommentaire event) { |
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) { |
fenetreOverlaySimplePresenteur.fermerFenetreModale(); |
} |
} |
}); |
} |
private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) { |
observationDeterminationPresenteur.setPropositions(observation.getPropositionDeterminations()); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observations/ObservationVue.java |
---|
New file |
0,0 → 1,76 |
package org.tela_botanica.del.client.vues.identiplante.resultats.observations; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.uibinder.client.UiBinder; |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.ui.Button; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class ObservationVue extends Composite implements ObservationPresenteur.Vue { |
// Gestion d'UiBinder |
interface Binder extends UiBinder<Widget, ObservationVue> { |
} |
private static Binder binder = GWT.create(Binder.class); |
@UiField |
Button boutonAjoutProposition, boutonAjoutCommentaire, boutonPlusDeDetails; |
@UiField |
Panel determinationsPanel, imagesPanel, metadonnees; |
@UiField Label nomEspece; |
public ObservationVue() { |
initWidget(binder.createAndBindUi(this)); |
} |
@Override |
public HasClickHandlers getBoutonAjoutProposition() { |
return boutonAjoutProposition; |
} |
@Override |
public HasClickHandlers getBoutonAjoutCommentaire() { |
return boutonAjoutCommentaire; |
} |
@Override |
public HasClickHandlers getBoutonPlusDeDetails() { |
return boutonPlusDeDetails; |
} |
public Panel getDeterminationsPanel() { |
return determinationsPanel; |
} |
public void setDeterminationsPanel(Panel determinationsPanel) { |
this.determinationsPanel = determinationsPanel; |
} |
public Panel getImagesPanel() { |
return imagesPanel; |
} |
public Panel getMetadonneesPanel() { |
return metadonnees; |
} |
@Override |
public HasClickHandlers getNomEspece() { |
return nomEspece; |
} |
@Override |
public void setNomEspece(String nomEspece) { |
this.nomEspece.setText(nomEspece); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/votes/DetailVoteObservationVue.java |
---|
New file |
0,0 → 1,40 |
package org.tela_botanica.del.client.vues.identiplante.resultats.votes; |
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.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class DetailVoteObservationVue extends Composite implements DetailVoteObservationPresenteur.Vue { |
interface Binder extends UiBinder<Widget, DetailVoteObservationVue> {} |
private static Binder binder = GWT.create(Binder.class); |
protected @UiField Panel zoneCertitude, zoneCommentaires, zoneNomEspece, zoneVoter; |
public DetailVoteObservationVue() { |
initWidget(binder.createAndBindUi(this)); |
} |
public HasWidgets getZoneCertitude() { |
return zoneCertitude; |
} |
public HasWidgets getZoneCommentaires() { |
return zoneCommentaires; |
} |
public HasWidgets getZoneNomEspece() { |
return zoneNomEspece; |
} |
public HasWidgets getZoneVoter() { |
return zoneVoter; |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/votes/DetailVoteObservationVue.ui.xml |
---|
New file |
0,0 → 1,12 |
<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.resources.Ressources'/> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/> |
<g:HTMLPanel> |
<g:HTMLPanel ui:field="zoneCertitude" /> |
<g:HTMLPanel ui:field="zoneCommentaires" /> |
<g:HTMLPanel ui:field="zoneNomEspece" /> |
<g:HTMLPanel ui:field="zoneVoter" /> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/votes/DetailVoteObservationPresenteur.java |
---|
New file |
0,0 → 1,41 |
package org.tela_botanica.del.client.vues.identiplante.resultats.votes; |
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVotePresenteur; |
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVoteVue; |
import org.tela_botanica.del.client.modeles.MoyenneVote; |
import org.tela_botanica.del.client.modeles.PropositionDetermination; |
import org.tela_botanica.del.client.services.CalculVoteDeterminationService; |
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class DetailVoteObservationPresenteur { |
public interface Vue extends IsWidget { |
public HasWidgets getZoneCertitude(); |
public HasWidgets getZoneCommentaires(); |
public HasWidgets getZoneNomEspece(); |
public HasWidgets getZoneVoter(); |
} |
private Vue vue; |
private PropositionDetermination proposition; |
public DetailVoteObservationPresenteur(Vue vue, PropositionDetermination proposition) { |
this.vue = vue; |
this.proposition = proposition; |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
BarreRepartitionVotePresenteur presenteurVote = new BarreRepartitionVotePresenteur(new BarreRepartitionVoteVue(), new VoteDeterminationServiceConcret()); |
MoyenneVote moyenne = CalculVoteDeterminationService.calculerVoteDetermination(proposition); |
presenteurVote.afficherVotes(moyenne); |
presenteurVote.go(vue.getZoneCertitude()); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/ObservationDeterminationVue.java |
---|
New file |
0,0 → 1,74 |
package org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations; |
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.HTMLPanel; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.Widget; |
public class ObservationDeterminationVue extends Composite implements ObservationDeterminationPresenteur.Vue { |
// Gestion d'UiBinder |
interface Binder extends UiBinder<Widget, ObservationDeterminationVue> { |
} |
private static Binder binder = GWT.create(Binder.class); |
@UiField |
protected HTMLPanel zoneRss, tableauPropositions, tableauPropositionOriginale, zonePropositions; |
public HTMLPanel getTableauPropositions() { |
return tableauPropositions; |
} |
public ObservationDeterminationVue() { |
initWidget(binder.createAndBindUi(this)); |
} |
@Override |
public int getIndexLigneProposition(LignePropositionVue lignePropositionVue) { |
return tableauPropositions.getWidgetIndex(lignePropositionVue); |
} |
@Override |
public void setNbVotes(int index, int nbVotes) { |
// cette conversion ne devrait jamais poser de problème, car le tableau |
// ne doit contenir que ça |
LignePropositionVue lignePropositionVue = (LignePropositionVue) tableauPropositions.getWidget(index); |
lignePropositionVue.setNbVotes(nbVotes); |
} |
@Override |
public void setNbCommentaires(int index, int nbCommentaires) { |
// cette conversion ne devrait jamais poser de problème, car le tableau |
// ne doit contenir que ça |
LignePropositionVue lignePropositionVue = (LignePropositionVue) tableauPropositions.getWidget(index); |
lignePropositionVue.setNbVotes(nbCommentaires); |
} |
@Override |
public void viderTableau() { |
tableauPropositions.clear(); |
} |
@Override |
public HasWidgets getTableauPropositionOriginale() { |
return tableauPropositionOriginale; |
} |
public void masquerPropositions() { |
this.zonePropositions.setVisible(false); |
} |
@Override |
public void viderTableauPropositionOriginale() { |
tableauPropositionOriginale.clear(); |
} |
public HasWidgets getZoneRss() { |
return zoneRss; |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/LignePropositionVue.ui.xml |
---|
New file |
0,0 → 1,19 |
<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.resources.Ressources' /> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="observationdetermination.css" /> |
<g:HTMLPanel styleName="{style.ligneProposition}"> |
<g:HTMLPanel ui:field="conteneurPanneauDeterminations" /> |
<g:FocusPanel ui:field="conteneurPanneauVotes" styleName="{style.nombreVotes}"> |
<g:HTML ui:field="nbVotesHtml" styleName="{style.infobulle}"/> |
</g:FocusPanel> |
<g:FocusPanel ui:field="conteneurPanneauCommentaires" styleName="{style.commentaires}"> |
<g:HTML ui:field="nbCommentairesHtml" styleName="{style.infobulle} {style.infobulleCommentaire}"/> |
</g:FocusPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/LignePropositionPresenteur.java |
---|
New file |
0,0 → 1,105 |
package org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations; |
import org.tela_botanica.del.client.composants.commentaires.DetailCommentairePresenteur; |
import org.tela_botanica.del.client.composants.commentaires.DetailCommentaireVue; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur; |
import org.tela_botanica.del.client.composants.votes.details.DetailListeVotesDeterminationPresenteur; |
import org.tela_botanica.del.client.composants.votes.details.DetailListeVotesDeterminationVue; |
import org.tela_botanica.del.client.modeles.PropositionDetermination; |
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class LignePropositionPresenteur { |
private int nbCommentaires, nbVotes; |
public abstract interface Vue extends IsWidget { |
public HasClickHandlers getZoneNbVotes(); |
public HasClickHandlers getZoneNbCommentaires(); |
public void setNbVotes(int nbVotes); |
public void setNbCommentaires(int nbCommentaires); |
public void enleverLienCommentaires(); |
public void enleverLienVotes(); |
public void ajouterLienVotes(); |
} |
private Vue vue; |
private PropositionDetermination propositionDetermination; |
public LignePropositionPresenteur(Vue vue, |
PropositionDetermination propositionDetermination) { |
this.vue = vue; |
this.propositionDetermination = propositionDetermination; |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
chargerPropositionDetermination(); |
gererEvenements(); |
} |
public void chargerPropositionDetermination() { |
this.nbCommentaires = propositionDetermination.getTotalCommentaires(); |
this.nbVotes = propositionDetermination.getVotesDeterminations().size(); |
vue.setNbCommentaires(nbCommentaires); |
vue.setNbVotes(nbVotes); |
} |
public void gererEvenements() { |
if (nbVotes > 0) { |
vue.getZoneNbVotes().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
if (nbVotes > 0) { |
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur( |
new FenetreOverlayDefilanteVue()); |
DetailListeVotesDeterminationPresenteur detailListeVotesDeterminationPresenteur = new DetailListeVotesDeterminationPresenteur( |
new DetailListeVotesDeterminationVue()); |
fenetreOverlaySimplePresenteur |
.ouvrirFenetreModale(detailListeVotesDeterminationPresenteur); |
detailListeVotesDeterminationPresenteur |
.afficherVotes(propositionDetermination); |
} |
} |
}); |
vue.ajouterLienVotes(); |
} else { |
vue.enleverLienVotes(); |
} |
if (nbCommentaires > 0) { |
vue.getZoneNbCommentaires().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
if (nbCommentaires > 0) { |
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur( |
new FenetreOverlayDefilanteVue()); |
DetailCommentairePresenteur detailCommentairePresenteur = new DetailCommentairePresenteur( |
new DetailCommentaireVue(), |
new CommentaireServiceConcret(), |
propositionDetermination); |
fenetreOverlaySimplePresenteur |
.ouvrirFenetreModale(detailCommentairePresenteur); |
detailCommentairePresenteur.afficherCommentaires(); |
} |
} |
}); |
} else { |
vue.enleverLienCommentaires(); |
} |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/LignePropositionVue.java |
---|
New file |
0,0 → 1,75 |
package org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations; |
import org.tela_botanica.del.client.i18n.I18n; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.uibinder.client.UiBinder; |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.ui.ClickListener; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.FocusPanel; |
import com.google.gwt.user.client.ui.HTML; |
import com.google.gwt.user.client.ui.HTMLPanel; |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.Widget; |
public class LignePropositionVue extends Composite implements LignePropositionPresenteur.Vue { |
// Gestion d'UiBinder |
interface MyUiBinder extends UiBinder<Widget, LignePropositionVue> { |
} |
private static MyUiBinder uibinder = GWT.create(MyUiBinder.class); |
@UiField |
HTMLPanel conteneurPanneauDeterminations; |
@UiField |
FocusPanel conteneurPanneauVotes, conteneurPanneauCommentaires; |
@UiField |
HTML nbVotesHtml, nbCommentairesHtml; |
public LignePropositionVue(IsWidget panneauDeterminations) { |
initWidget(uibinder.createAndBindUi(this)); |
conteneurPanneauDeterminations.add(panneauDeterminations); |
conteneurPanneauVotes.setTitle(I18n.getVocabulary().voirDetailVotes()); |
conteneurPanneauCommentaires.setTitle(I18n.getVocabulary().voirDetailCommentaires()); |
} |
public HasClickHandlers getZoneNbVotes() { |
return conteneurPanneauVotes; |
} |
public HasClickHandlers getZoneNbCommentaires() { |
return conteneurPanneauCommentaires; |
} |
public void setNbVotes(int nbVotes) { |
nbVotesHtml.setHTML(nbVotes + ""); |
if (nbVotes == 0) { |
nbVotesHtml.setVisible(false); |
} |
} |
public void setNbCommentaires(int nbCommentaires) { |
nbCommentairesHtml.setHTML(nbCommentaires + ""); |
if (nbCommentaires == 0) { |
nbCommentairesHtml.setVisible(false); |
} |
} |
public void enleverLienCommentaires() { |
conteneurPanneauCommentaires.setVisible(false); |
} |
public void enleverLienVotes() { |
nbVotesHtml.setVisible(false); |
conteneurPanneauVotes.removeStyleName("nombreVotes"); |
} |
public void ajouterLienVotes() { |
nbVotesHtml.setVisible(true); |
conteneurPanneauVotes.addStyleName("nombreVotes"); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/observationdetermination.css |
---|
New file |
0,0 → 1,90 |
.determinationOriginale { |
padding-top:3px; |
} |
.determInitiale, .especesProposees { |
padding-left:10px; |
} |
.headerTableau { |
display:inline; |
} |
.gauche { |
float:left; |
} |
.milieu { |
margin:0 0 0 115px; |
float:left |
} |
.droite { |
float:right; |
} |
.determination { |
margin: -23px 1px 5px 0; |
} |
.especesProposees { |
margin-top:15px; |
} |
.determination>div { |
margin-top: 2px; |
margin-bottom: 30px; |
} |
.ligneProposition { |
clear:both; |
} |
.ligneProposition>div { |
display: block; |
float: left; |
margin-right: 5px; |
} |
.nombreVotes { |
width:15px; |
height:16px; |
padding-left: 10px; |
margin-top:1px; |
} |
.commentaires { |
background: url("./img/comment.png") no-repeat scroll 0 0 transparent; |
cursor: pointer; |
height: 20px; |
padding-left: 20px; |
margin-left:13px; |
} |
.infobulle { |
background: none repeat scroll 0 0 #1A5AC3; |
color: white; |
font-size: 11px; |
height: 11px; |
line-height: 0.9; |
margin-left: 2px; |
margin-top: 8px; |
min-width: 7px; |
padding: 1px; |
position: absolute; |
} |
.infobulleCommentaire { |
margin-left:-9px; |
} |
.zonePropositions { |
height:130px; |
text-align:left; |
margin-top:60px; |
} |
.rss { |
position:absolute; |
margin-top:-25px; |
margin-left:446px; |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/ObservationDeterminationVue.ui.xml |
---|
New file |
0,0 → 1,26 |
<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.resources.Ressources' /> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="observationdetermination.css" /> |
<g:HTMLPanel> |
<g:HTMLPanel ui:field="zoneRss" styleName="{style.rss}"></g:HTMLPanel> |
<g:HTMLPanel styleName="{style.determinationOriginale}"> |
<g:Label styleName="petit {style.headerTableau} {style.gauche}">Score</g:Label> |
<g:Label styleName="petit {style.headerTableau} {style.gauche} {style.determInitiale}">Détermination initiale</g:Label> |
<g:Label styleName="petit {style.headerTableau} {style.milieu}">Voter</g:Label> |
<g:Label styleName="petit {style.headerTableau} {style.droite}">Comm.</g:Label> |
<g:HTMLPanel styleName="{style.determination} {style.determinationOriginale}" ui:field="tableauPropositionOriginale" /> |
</g:HTMLPanel> |
<g:HTML><br class="nettoyage"></br></g:HTML> |
<g:HTMLPanel styleName="{style.determinationOriginale}" ui:field="zonePropositions"> |
<g:Label styleName="petit {style.headerTableau} {style.gauche}">Score</g:Label> |
<g:Label styleName="petit {style.headerTableau} {style.gauche} {style.determInitiale}">Espèces proposées</g:Label> |
<g:HTMLPanel styleName="{style.determination}" ui:field="tableauPropositions" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/observationdeterminations/ObservationDeterminationPresenteur.java |
---|
New file |
0,0 → 1,126 |
package org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations; |
import java.util.Collection; |
import java.util.Collections; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
import java.util.TreeMap; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur; |
import org.tela_botanica.del.client.composants.rss.RssPresenteur; |
import org.tela_botanica.del.client.composants.rss.RssVue; |
import org.tela_botanica.del.client.modeles.MoyenneVote; |
import org.tela_botanica.del.client.modeles.PropositionDetermination; |
import org.tela_botanica.del.client.modeles.VoteDetermination; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination; |
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination; |
import org.tela_botanica.del.client.services.CalculVoteDeterminationService; |
import org.tela_botanica.del.client.utils.ComparateurPropositionDetermination; |
import org.tela_botanica.del.client.vues.identiplante.resultats.votes.DetailVoteObservationPresenteur; |
import org.tela_botanica.del.client.vues.identiplante.resultats.votes.DetailVoteObservationVue; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HTMLPanel; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class ObservationDeterminationPresenteur { |
public abstract interface Vue extends IsWidget { |
public void viderTableau(); |
public void viderTableauPropositionOriginale(); |
public HasWidgets getTableauPropositions(); |
public HasWidgets getTableauPropositionOriginale(); |
void setNbVotes(int index, int nbVotes); |
void setNbCommentaires(int index, int nbCommentaires); |
int getIndexLigneProposition(LignePropositionVue lignePropositionVue); |
public void masquerPropositions(); |
public HasWidgets getZoneRss(); |
} |
private Vue vue; |
private List<PropositionDetermination> propositions; |
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur; |
public ObservationDeterminationPresenteur(Vue vue, List<PropositionDetermination> propositions) { |
this.propositions = propositions; |
this.vue = vue; |
} |
public void chargerPropositionOriginale(PropositionDetermination proposition) { |
vue.viderTableauPropositionOriginale(); |
// TODO: afficher nombre de votes total et mettre à jour en cas de |
// vote |
HTMLPanel panneau = new HTMLPanel(""); |
DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition); |
presenteurVote.go(panneau); |
LignePropositionVue lignePropositionVue = new LignePropositionVue(panneau); |
LignePropositionPresenteur lignePropositionPresenteur = new LignePropositionPresenteur(lignePropositionVue, proposition); |
lignePropositionPresenteur.go(vue.getTableauPropositionOriginale()); |
new RssPresenteur(new RssVue(), proposition.getObservation(), "").go(vue.getZoneRss()); |
} |
public void classerPropositions(List<PropositionDetermination> propositions) { |
Collections.sort(propositions, new ComparateurPropositionDetermination()); |
} |
public void chargerPropositions() { |
vue.viderTableau(); |
int nbPropositions = 0; |
classerPropositions(propositions); |
for (PropositionDetermination proposition : propositions) { |
if (proposition.estPropositionInitiale()) { |
this.chargerPropositionOriginale(proposition); |
} else { |
nbPropositions++; |
// TODO: afficher nombre de votes total et mettre à jour en |
// cas de |
// vote |
HTMLPanel panneau = new HTMLPanel(""); |
DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition); |
presenteurVote.go(panneau); |
LignePropositionVue lignePropositionVue = new LignePropositionVue(panneau); |
LignePropositionPresenteur lignePropositionPresenteur = new LignePropositionPresenteur(lignePropositionVue, proposition); |
lignePropositionPresenteur.go(vue.getTableauPropositions()); |
} |
} |
if (nbPropositions > 0) { |
} else { |
vue.masquerPropositions(); |
} |
BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() { |
@Override |
public void onVoteDetermination(VoteDetermination event) { |
surVoteDetermination(event); |
} |
}); |
} |
public void setPropositions(List<PropositionDetermination> propositions) { |
this.propositions = propositions; |
chargerPropositions(); |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
chargerPropositions(); |
} |
public void surVoteDetermination(VoteDetermination voteDetermination) { |
int indexProposition = propositions.indexOf(voteDetermination.getPropositionDetermination()); |
if (indexProposition != -1) { |
vue.setNbVotes(indexProposition, voteDetermination.getPropositionDetermination().getVotesDeterminations().size()); |
} |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/ResultatsIdentiplanteVue.ui.xml |
---|
New file |
0,0 → 1,31 |
<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.resources.Ressources' /> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="ResultatsIdentiplante.css" /> |
<g:HTMLPanel> |
<g:HTMLPanel styleName="{style.barreNavigation} limiteMax"> |
<g:VerticalPanel ui:field="zonePaginationHaut" styleName="gauche" /> |
<g:HTMLPanel ui:field="zoneTri" styleName="droite {style.zoneTri} petit"> |
<g:Label text="{constants.tri}" styleName="gauche"/> |
<g:HTMLPanel ui:field="triParDate" styleName="gauche"> |
<g:Label text="{constants.triParDate}" styleName="gauche {style.date}" ui:field="labelDate"/> |
<g:Button title="{constants.triParDateAscendant}" ui:field="triParDateAscendant" styleName="{style.boutonTriAsc} gauche" /> |
<g:Button title="{constants.triParDateDescendant}" ui:field="triParDateDescendant" styleName="{style.boutonTriDesc} gauche" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel> |
<g:HTMLPanel ui:field="panneauChargement"> |
<g:Image url="./img/wait.gif"></g:Image> |
</g:HTMLPanel> |
<g:Label ui:field="aucunResultat" styleName="{style.aucunResultat}" text="{constants.aucunResultat}" visible="false" /> |
<g:HTMLPanel ui:field="zoneObservations" styleName="{style.zoneObservation}" /> |
<g:VerticalPanel ui:field="zonePaginationBas" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/ResultatsIdentiplantePresenteur.java |
---|
New file |
0,0 → 1,250 |
package org.tela_botanica.del.client.vues.identiplante.resultats; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur; |
import org.tela_botanica.del.client.composants.pagination.PaginationVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.modeles.InformationsRecherche; |
import org.tela_botanica.del.client.modeles.ModeTri; |
import org.tela_botanica.del.client.modeles.Observation; |
import org.tela_botanica.del.client.modeles.ObservationServiceResultat; |
import org.tela_botanica.del.client.services.rest.ObservationService; |
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback; |
import org.tela_botanica.del.client.vues.identiplante.resultats.observations.ObservationPresenteur; |
import org.tela_botanica.del.client.vues.identiplante.resultats.observations.ObservationVue; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class ResultatsIdentiplantePresenteur extends Presenteur { |
/** |
* Interface vue : création des composants graphiques |
* */ |
public abstract interface Vue extends IsWidget { |
public HasWidgets getZoneObservations(); |
public HasWidgets getZonePaginationHaut(); |
public HasWidgets getZonePaginationBas(); |
public void startChargement(); |
public void stopChargement(); |
public void nettoyer(); |
public HasClickHandlers getTriParDateAscendant(); |
public HasClickHandlers getTriParDateDescendant(); |
public void afficherElementsAucunResultatTrouve(); |
public void afficherElementsResultatsTrouves(); |
public HasClickHandlers getLabelDate(); |
public void setModeTri(ModeTri mode); |
} |
private Vue vue; |
private ObservationService serviceObs; |
private ModeTri triCourantDate = ModeTri.TRI_DESCENDANT; |
private CacheClient cache = CacheClient.getInstance(); |
private String statut; |
/** |
* Constructeur de la classe |
* |
* @param ObservationService |
* serviceObs le service pour récupérer les observations |
* @Vue Vue l'objet implémentant l'interface |
* */ |
public ResultatsIdentiplantePresenteur(ObservationService serviceObs, Vue vue, String statut) { |
this.vue = vue; |
vue.setModeTri(triCourantDate); |
this.serviceObs = serviceObs; |
this.statut = statut; |
} |
/** |
* Lancer l'affichage de la recherche dans le composant passé en paramètre |
* |
* @param HasWidgets |
* composite le conteneur de widgets dans lequel ajouter la vue |
* */ |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
lancerRechercheEtCreerWidgetPagination(); |
gererEvenements(); |
} |
/** |
* Initier un callback pour créer le widget de pagination et afficher les |
* observations recues et lancer la recherche avec le service |
* */ |
public void lancerRechercheEtCreerWidgetPagination() { |
int debut = (cache.getPageCouranteRechercheObservations() - 1) * cache.getPasPagination(); |
int fin = cache.getPageCouranteRechercheObservations() * cache.getPasPagination(); |
ObservationsCallback callback = new ObservationsCallback() { |
@Override |
public void surRetour(ObservationServiceResultat observationsRecues) { |
creerWidgetPagination(observationsRecues.getNbTotalObservationsPourLaRecherche()); |
afficherObservations(observationsRecues); |
} |
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
} |
}; |
serviceObs.getObservations(cache.getInformationsRechercheObservation(), debut, fin, statut, callback); |
} |
/** |
* Créer les widgets de pagination en fonction du nombre d'observation |
* |
* @param int nbObservations le nombre d'observations à afficher |
* */ |
private void creerWidgetPagination(int nbObservations) { |
vue.getZonePaginationHaut().clear(); |
PaginationPresenteur paginationPresenteurHaut = creerPresenteurPagination(nbObservations); |
paginationPresenteurHaut.setGroupePagination("pagination_observations"); |
paginationPresenteurHaut.go(vue.getZonePaginationHaut()); |
vue.getZonePaginationBas().clear(); |
PaginationPresenteur paginationPresenteurBas = creerPresenteurPagination(nbObservations); |
paginationPresenteurBas.setGroupePagination("pagination_observations"); |
paginationPresenteurBas.go(vue.getZonePaginationBas()); |
} |
/** |
* Créer un présenteur du widget pagination |
* |
* @param int nbObservations le nombre total d'observation à afficher |
* */ |
private PaginationPresenteur creerPresenteurPagination(int nbObservations) { |
PaginationPresenteur presenteur = new PaginationPresenteur(new PaginationVue(), nbObservations, cache.getPasPagination(), cache.getPageCouranteRechercheObservations()) { |
@Override |
public void chargerElements(int debut, int fin) { |
chargerEtAfficherObservations(debut, fin); |
cache.setPageCouranteRechercheObservations(getPageCourante()); |
} |
@Override |
public void actualiserPasCache(int pas) { |
cache.setPasPagination(pas); |
} |
}; |
return presenteur; |
} |
/** |
* Gestion des évènements de la vue recherche Observation |
* */ |
protected void gererEvenements() { |
ClickHandler surClicDate = new ClickHandler() { |
/** |
* Gestion du clic sur l'option de tri par date d'observation Masque |
* les éléments de tri qui sont en cours et affiche les autres |
* */ |
public void onClick(ClickEvent event) { |
toggleModeTri(); |
InformationsRecherche informationsRechercheObservations = cache.getInformationsRechercheObservation(); |
informationsRechercheObservations.setTriParDate(triCourantDate); |
chercherEtAfficherObservationsPageEnCours(); |
} |
}; |
vue.getLabelDate().addClickHandler(surClicDate); |
vue.getTriParDateAscendant().addClickHandler(surClicDate); |
vue.getTriParDateDescendant().addClickHandler(surClicDate); |
} |
/** |
* Inverser le mode de tri en fonction du précédent |
* */ |
public void toggleModeTri() { |
if (triCourantDate == ModeTri.TRI_ASCENDANT) { |
triCourantDate = ModeTri.TRI_DESCENDANT; |
} else { |
triCourantDate = ModeTri.TRI_ASCENDANT; |
} |
vue.setModeTri(triCourantDate); |
} |
/** |
* Initialiser les variable de début et fin et lancer le chargement des |
* observations |
* */ |
public void chercherEtAfficherObservationsPageEnCours() { |
int debut = (cache.getPageCouranteRechercheObservations() - 1) * cache.getPasPagination(); |
int fin = (cache.getPageCouranteRechercheObservations()) * cache.getPasPagination(); |
chargerEtAfficherObservations(debut, fin); |
} |
/** |
* Lancer le service pour charger les observations entre debut et fin et les |
* afficher |
* |
* @param int debut l'entier de départ de la requete |
* @param int fin l'entier de limite de la requete |
* */ |
public void chargerEtAfficherObservations(int debut, int fin) { |
vue.startChargement(); |
vue.nettoyer(); |
ObservationsCallback surReceptionObservation = new ObservationsCallback() { |
@Override |
public void surRetour(ObservationServiceResultat observationsRecues) { |
afficherObservations(observationsRecues); |
} |
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
} |
}; |
serviceObs.getObservations(cache.getInformationsRechercheObservation(), debut, fin, statut, surReceptionObservation); |
} |
/** |
* Parcrourir les résultats de la recherche pour initier l'affichage de |
* chaque observation |
* |
* @param ObservationServiceResultat |
* resultats les résultats issus de la requête |
* */ |
private void afficherObservations(ObservationServiceResultat resultats) { |
vue.nettoyer(); |
if (resultats.getObservations() == null || resultats.getObservations().size() == 0) { |
vue.afficherElementsAucunResultatTrouve(); |
} else { |
vue.afficherElementsResultatsTrouves(); |
for (Observation observation : resultats.getObservations()) { |
ObservationPresenteur presenteur = new ObservationPresenteur(new ObservationVue(), observation, observation.getImages().get(0)); |
presenteur.go(vue.getZoneObservations()); |
} |
} |
vue.stopChargement(); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/identiplante/resultats/ResultatsIdentiplanteVue.java |
---|
New file |
0,0 → 1,118 |
package org.tela_botanica.del.client.vues.identiplante.resultats; |
import org.tela_botanica.del.client.modeles.ModeTri; |
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.HasWidgets; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class ResultatsIdentiplanteVue extends Composite implements ResultatsIdentiplantePresenteur.Vue { |
@UiField |
Panel panneauChargement; |
// Gestion d'UiBinder |
interface Binder extends UiBinder<Widget, ResultatsIdentiplanteVue> { |
} |
private static Binder binder = GWT.create(Binder.class); |
@UiField |
Panel zoneObservations, zonePaginationHaut, zonePaginationBas, zoneTri; |
@UiField |
Button triParDateAscendant, triParDateDescendant; |
@UiField |
Label aucunResultat, labelDate; |
// Constructeur de la vue |
public ResultatsIdentiplanteVue() { |
initWidget(binder.createAndBindUi(this)); |
} |
@Override |
public HasWidgets getZoneObservations() { |
return zoneObservations; |
} |
@Override |
public HasWidgets getZonePaginationHaut() { |
return zonePaginationHaut; |
} |
@Override |
public HasWidgets getZonePaginationBas() { |
return zonePaginationBas; |
} |
/** |
* Nettoie et remet à zéro les composants du panneau qui doivent l'être |
* */ |
@Override |
public void nettoyer() { |
zoneObservations.clear(); |
} |
@Override |
public void startChargement() { |
panneauChargement.setHeight(zoneObservations.getOffsetHeight() + "px"); |
panneauChargement.setVisible(true); |
} |
@Override |
public void stopChargement() { |
panneauChargement.setVisible(false); |
} |
public void afficherElementsAucunResultatTrouve() { |
nettoyer(); |
aucunResultat.setVisible(true); |
zonePaginationHaut.setVisible(false); |
zonePaginationBas.setVisible(false); |
zoneTri.setVisible(false); |
} |
public void afficherElementsResultatsTrouves() { |
aucunResultat.setVisible(false); |
zonePaginationHaut.setVisible(true); |
zonePaginationBas.setVisible(true); |
zoneTri.setVisible(true); |
} |
public Button getTriParDateAscendant() { |
return triParDateAscendant; |
} |
public Button getTriParDateDescendant() { |
return triParDateDescendant; |
} |
@Override |
public Label getLabelDate() { |
return labelDate; |
} |
/** |
* En fonction du sens du tri (ascendant ou descendant), on change l'affichage des |
* boutons de tri pour masquer que celui qui doit être cliquable. |
* @param ModeTri le mode Ascendant ou Descendant |
* */ |
public void setModeTri(ModeTri mode) { |
if (mode == ModeTri.TRI_ASCENDANT) { |
triParDateAscendant.setVisible(true); |
triParDateDescendant.setVisible(false); |
} else { |
triParDateDescendant.setVisible(true); |
triParDateAscendant.setVisible(false); |
} |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/resultats/ResultatPictofloraVue.ui.xml |
---|
New file |
0,0 → 1,44 |
<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="ResultatPictoflora.css" /> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<g:HTMLPanel styleName="{style.contenuResultat}"> |
<g:HTMLPanel styleName="{style.barreNavigation} limiteMax limiteMin"> |
<g:VerticalPanel ui:field="panneauPaginationHaut" styleName="gauche {style.paginationHaut}" /> |
<g:HTMLPanel styleName="gauche {style.protocoles}"> |
<g:ListBox ui:field="listeProtocoles" /> |
</g:HTMLPanel> |
<g:HTMLPanel ui:field="zoneTri" styleName="gauche {style.zoneTri} petit"> |
<g:Label text="{constants.tri}" styleName="gauche {style.labeltri}"/> |
<g:HTMLPanel ui:field="triParNbVotes" styleName="gauche"> |
<g:Label text="{constants.triParNbVotes}" styleName="gauche {style.votes}" ui:field="labelVote"/> |
<g:Button title="{constants.triParNbVotesAscendant}" ui:field="triParNbVotesAscendant" styleName="{style.boutonTriAsc} gauche" /> |
<g:Button title="{constants.triParNbVotesDescendant}" ui:field="triParNbVotesDescendant" styleName="{style.boutonTriDesc} gauche" /> |
</g:HTMLPanel> |
<g:HTMLPanel ui:field="triParDate" styleName="gauche"> |
<g:Label text="{constants.triParDate}" styleName="gauche {style.date}" ui:field="labelDate"/> |
<g:Button title="{constants.triParDateAscendant}" ui:field="triParDateAscendant" styleName="{style.boutonTriAsc} gauche" /> |
<g:Button title="{constants.triParDateDescendant}" ui:field="triParDateDescendant" styleName="{style.boutonTriDesc} gauche" /> |
</g:HTMLPanel> |
<g:HTMLPanel ui:field="triParNbTags" styleName="gauche"> |
<g:Label text="{constants.triParNbTags}" styleName="gauche {style.tag}" ui:field="labelTag"/> |
<g:Button title="{constants.triParNbTagsAscendant}" ui:field="triParNbTagsAscendant" styleName="{style.boutonTriAsc} gauche" /> |
<g:Button title="{constants.triParNbTagsDescendant}" ui:field="triParNbTagsDescendant" styleName="{style.boutonTriDesc} gauche" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</g:HTMLPanel> |
<g:VerticalPanel ui:field="panneauChargement"> |
<g:Image url="./img/wait.gif"></g:Image> |
</g:VerticalPanel> |
<g:Label ui:field="aucunResultat" styleName="{style.aucunResultat}" text="{constants.aucunResultat}" visible="false" /> |
<g:HTMLPanel ui:field="imageTable" styleName="{style.images}" /> |
<g:HTMLPanel styleName="nettoyage"></g:HTMLPanel> |
<g:VerticalPanel ui:field="panneauPagination" styleName="limiteMax limiteMin"/> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/resultats/ResultatPictofloraPresenteur.java |
---|
New file |
0,0 → 1,392 |
package org.tela_botanica.del.client.vues.pictoflora.resultats; |
import java.util.List; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur; |
import org.tela_botanica.del.client.composants.pagination.PaginationVue; |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.ImageServiceResultat; |
import org.tela_botanica.del.client.modeles.InformationsRecherche; |
import org.tela_botanica.del.client.modeles.ModeTri; |
import org.tela_botanica.del.client.modeles.Protocole; |
import org.tela_botanica.del.client.modeles.ProtocoleServiceResultat; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole; |
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.GestionnaireEvenementChangementProtocole; |
import org.tela_botanica.del.client.services.rest.ImageService; |
import org.tela_botanica.del.client.services.rest.ProtocoleService; |
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback; |
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback; |
import org.tela_botanica.del.client.vues.pictoflora.resultats.images.ImagePresenteur; |
import org.tela_botanica.del.client.vues.pictoflora.resultats.images.ImageVue; |
import com.google.gwt.event.dom.client.ChangeEvent; |
import com.google.gwt.event.dom.client.ChangeHandler; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasChangeHandlers; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HTMLPanel; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.ListBox; |
public class ResultatPictofloraPresenteur { |
public interface Vue extends IsWidget { |
public void startChargement(); |
public void nettoyer(); |
public void creerPanneauxObservations(int size); |
public void stopChargement(); |
public List<HasWidgets> getPanneauxImages(); |
public HasWidgets getPanneauPagination(); |
public HasWidgets getPanneauPaginationHaut(); |
public HasClickHandlers getTriParNbVotesAscendant(); |
public HasClickHandlers getTriParNbVotesDescendant(); |
public HasClickHandlers getTriParDateAscendant(); |
public HasClickHandlers getTriParDateDescendant(); |
public HasClickHandlers getTriParNbTagsAscendant(); |
public HasClickHandlers getTriParNbTagsDescendant(); |
public void afficherElementsAucunResultatTrouve(); |
public void afficherElementsResultatsTrouve(); |
public HTMLPanel getImageTable(); |
public String getNomProtocoleSelectionne(); |
public int getIdProtocoleSelectionne(); |
public void setListeProtocoles(ListBox listeProtocoles); |
public HasChangeHandlers getListeProtocoles(); |
public void ajouterProtocoles(List<Protocole> protocoles); |
public void selectionnerProtocole(int index); |
public HasClickHandlers getLabelVote(); |
public void masquerVoteAscendant(); |
public void masquerVoteDescendant(); |
public void afficherVoteAscendant(); |
public void afficherVoteDescendant(); |
public HasClickHandlers getLabelDate(); |
public HasClickHandlers getLabelTag(); |
public void masquerDateAscendant(); |
public void masquerDateDescendant(); |
public void afficherDateAscendant(); |
public void afficherDateDescendant(); |
public void masquerTagAscendant(); |
public void afficherTagDescendant(); |
public void masquerTagDescendant(); |
public void afficherTagAscendant(); |
public void mettreAJourDescriptionProtocoleCourant( |
Protocole protocoleCourant); |
} |
private Vue vue; |
private ImageService imageService; |
private final ProtocoleService protocoleService; |
private List<Protocole> protocoles; |
private ModeTri triCourantVote = ModeTri.TRI_ASCENDANT; |
private ModeTri triCourantDate = ModeTri.TRI_DESCENDANT; |
private ModeTri triCourantTag = ModeTri.TRI_DESCENDANT; |
public ResultatPictofloraPresenteur(ImageService imageService, ProtocoleService protocoleService, Vue vue) { |
this.vue = vue; |
this.imageService = imageService; |
this.protocoleService=protocoleService; |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
vue.startChargement(); |
rechercherImagesEtCreerWidgetPagination(); |
gererEvenements(); |
chargerProtocoles(); |
vue.masquerVoteDescendant(); |
vue.masquerVoteAscendant(); |
// vue.masquerDateDescendant(); |
vue.masquerDateAscendant(); |
vue.masquerTagAscendant(); |
vue.masquerTagDescendant(); |
} |
public void gererEvenements() { |
vue.getListeProtocoles().addChangeHandler(new ChangeHandler() { |
@Override |
public void onChange(ChangeEvent event) { |
surChangementProtocole(); |
} |
}); |
ClickHandler surClicTriVote = new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
surClicTriVote(); |
} |
}; |
vue.getLabelVote().addClickHandler(surClicTriVote); |
vue.getTriParNbVotesAscendant().addClickHandler(surClicTriVote); |
vue.getTriParNbVotesDescendant().addClickHandler(surClicTriVote); |
ClickHandler surClicTriDate = new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
surClicTriDate(); |
} |
}; |
vue.getLabelDate().addClickHandler(surClicTriDate); |
vue.getTriParDateAscendant().addClickHandler(surClicTriDate); |
vue.getTriParDateDescendant().addClickHandler(surClicTriDate); |
ClickHandler surClicTriTag = new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
surClicTriTag(); |
} |
}; |
vue.getLabelTag().addClickHandler(surClicTriTag); |
vue.getTriParNbTagsAscendant().addClickHandler(surClicTriTag); |
vue.getTriParNbTagsDescendant().addClickHandler(surClicTriTag); |
BusEvenementiel.getInstance().addHandler(EvenementChangementProtocole.TYPE, new GestionnaireEvenementChangementProtocole() { |
@Override |
public void onChangementProtocole(EvenementChangementProtocole event) { |
InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage(); |
if (informationsRechercheImages.getTriParNbVotes() != ModeTri.PAS_DE_TRI) { |
informationsRechercheImages.setIdProtocoleSelectionne(event.getProtocole().getId() + ""); |
chargerEtAfficherImagesPageEnCours(); |
} |
} |
}); |
} |
protected void surClicTriTag() { |
vue.masquerDateDescendant(); |
vue.masquerDateAscendant(); |
vue.masquerVoteDescendant(); |
vue.masquerVoteAscendant(); |
if (triCourantTag == ModeTri.TRI_ASCENDANT) { |
triCourantTag = ModeTri.TRI_DESCENDANT; |
vue.masquerTagAscendant(); |
vue.afficherTagDescendant(); |
} else { |
triCourantTag = ModeTri.TRI_ASCENDANT; |
vue.masquerTagDescendant(); |
vue.afficherTagAscendant(); |
} |
InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage(); |
informationsRechercheImages.setTriParNbTags(triCourantTag); |
informationsRechercheImages.setTriParDate(ModeTri.PAS_DE_TRI); |
informationsRechercheImages.setTriParNbVotes(ModeTri.PAS_DE_TRI); |
chargerEtAfficherImagesPageEnCours(); |
} |
public void surClicTriVote() { |
vue.masquerDateDescendant(); |
vue.masquerDateAscendant(); |
vue.masquerTagAscendant(); |
vue.masquerTagDescendant(); |
if (triCourantVote == ModeTri.TRI_ASCENDANT) { |
triCourantVote = ModeTri.TRI_DESCENDANT; |
vue.masquerVoteAscendant(); |
vue.afficherVoteDescendant(); |
} else { |
triCourantVote = ModeTri.TRI_ASCENDANT; |
vue.masquerVoteDescendant(); |
vue.afficherVoteAscendant(); |
} |
InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage(); |
int IdProtocole = CacheClient.getInstance().getProtocoleCourant().getId(); |
informationsRechercheImages.setTriParNbVotes(triCourantVote); |
informationsRechercheImages.setIdProtocoleSelectionne(IdProtocole + ""); |
informationsRechercheImages.setTriParDate(ModeTri.PAS_DE_TRI); |
informationsRechercheImages.setTriParNbTags(ModeTri.PAS_DE_TRI); |
chargerEtAfficherImagesPageEnCours(); |
} |
public void surClicTriDate() { |
vue.masquerVoteDescendant(); |
vue.masquerVoteAscendant(); |
if (triCourantDate == ModeTri.TRI_ASCENDANT) { |
triCourantDate = ModeTri.TRI_DESCENDANT; |
vue.masquerDateAscendant(); |
vue.afficherDateDescendant(); |
} else { |
triCourantDate = ModeTri.TRI_ASCENDANT; |
vue.masquerDateDescendant(); |
vue.afficherDateAscendant(); |
} |
InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage(); |
informationsRechercheImages.setTriParDate(triCourantDate); |
informationsRechercheImages.setTriParNbVotes(ModeTri.PAS_DE_TRI); |
informationsRechercheImages.setTriParNbTags(ModeTri.PAS_DE_TRI); |
chargerEtAfficherImagesPageEnCours(); |
} |
public void surChangementProtocole() { |
Protocole protocoleCourant = null; |
for (Protocole protocole : protocoles) { |
if (protocole.getId() == vue.getIdProtocoleSelectionne()) { |
protocoleCourant = protocole; |
} |
} |
vue.mettreAJourDescriptionProtocoleCourant(protocoleCourant); |
CacheClient.getInstance().setProtocoleCourant(protocoleCourant); |
EvenementChangementProtocole evenement = new EvenementChangementProtocole(protocoleCourant); |
BusEvenementiel.getInstance().fireEvent(evenement); |
} |
private void chargerProtocoles() { |
// test pour ne pas charger les protocoles déjà chargés |
// TODO: faire un systeme de cache gérés par les web service eux même |
if (CacheClient.getInstance().getListeProtocoles() == null) { |
protocoleService.getProtocoles(new ProtocolesCallback() { |
@Override |
public void surRetour(ProtocoleServiceResultat protocolesRecus) { |
protocoles = protocolesRecus.getProtocoles(); |
remplirListeProtocole(protocoles); |
} |
}); |
} else { |
protocoles = CacheClient.getInstance().getListeProtocoles(); |
remplirListeProtocole(CacheClient.getInstance().getListeProtocoles()); |
} |
} |
private void remplirListeProtocole(List<Protocole> protocoles) { |
vue.ajouterProtocoles(protocoles); |
if (CacheClient.getInstance().getProtocoleCourant() == null) { |
vue.selectionnerProtocole(0); |
vue.mettreAJourDescriptionProtocoleCourant(protocoles.get(0)); |
} else { |
vue.mettreAJourDescriptionProtocoleCourant(CacheClient.getInstance().getProtocoleCourant()); |
} |
} |
public void rechercherImagesEtCreerWidgetPagination() { |
// appel du service d'image pour avoir le nb total d'elements pour la |
// pagination |
ImagesParTaxonCallback callback = new ImagesParTaxonCallback() { |
@Override |
public void surRetour(ImageServiceResultat imagesRecues) { |
creerWidgetPagination(imagesRecues.getNbTotalImagesPourLaRecherche()); |
afficherImages(imagesRecues); |
} |
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
} |
}; |
final int debut = (CacheClient.getInstance().getPageCouranteRechercheImage() - 1) * CacheClient.getInstance().getPasPagination(); |
final int fin = (CacheClient.getInstance().getPageCouranteRechercheImage()) * CacheClient.getInstance().getPasPagination(); |
imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), debut, fin, callback); |
} |
private void chargerEtAfficherImages(final int premier, final int dernier) { |
vue.startChargement(); |
vue.nettoyer(); |
ImagesParTaxonCallback callback = new ImagesParTaxonCallback() { |
@Override |
public void surRetour(ImageServiceResultat imagesRecues) { |
afficherImages(imagesRecues); |
} |
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
} |
}; |
imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), premier, dernier, callback); |
} |
public void afficherImages(ImageServiceResultat imageServiceResult) { |
List<Image> images = imageServiceResult.getImages(); |
if (images == null || images.size() == 0) { |
vue.afficherElementsAucunResultatTrouve(); |
} else { |
vue.afficherElementsResultatsTrouve(); |
for (Image image : images) { |
ImagePresenteur imagePresenteur = new ImagePresenteur(image, CacheClient.getInstance().getProtocoleCourant(), new ImageVue()); |
imagePresenteur.go(vue.getImageTable()); |
} |
} |
vue.stopChargement(); |
} |
private void creerWidgetPagination(int nbImages) { |
PaginationPresenteur imagesPaginationPresenteurHaut = creerPresenteurPagination(nbImages); |
PaginationPresenteur imagesPaginationPresenteurBas = creerPresenteurPagination(nbImages); |
imagesPaginationPresenteurHaut.setGroupePagination("pagination_images"); |
imagesPaginationPresenteurBas.setGroupePagination("pagination_images"); |
imagesPaginationPresenteurHaut.go(vue.getPanneauPaginationHaut()); |
imagesPaginationPresenteurBas.go(vue.getPanneauPagination()); |
} |
public PaginationPresenteur creerPresenteurPagination(int nbImages) { |
PaginationPresenteur imagesPaginationPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance().getPageCouranteRechercheImage()) { |
@Override |
public void chargerElements(int debut, int fin) { |
chargerEtAfficherImages(debut, fin); |
CacheClient.getInstance().setPageCouranteRechercheImages(getPageCourante()); |
} |
@Override |
public void actualiserPasCache(int pas) { |
CacheClient.getInstance().setPasPagination(pas); |
} |
}; |
return imagesPaginationPresenteur; |
} |
public void chargerEtAfficherImagesPageEnCours() { |
final int debut = (CacheClient.getInstance().getPageCouranteRechercheImage() - 1) * CacheClient.getInstance().getPasPagination(); |
final int fin = (CacheClient.getInstance().getPageCouranteRechercheImage()) * CacheClient.getInstance().getPasPagination(); |
chargerEtAfficherImages(debut, fin); |
} |
public Vue getVue() { |
return vue; |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/resultats/images/ImagePresenteur.java |
---|
New file |
0,0 → 1,235 |
package org.tela_botanica.del.client.vues.pictoflora.resultats.images; |
import java.util.HashMap; |
import java.util.List; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur; |
import org.tela_botanica.del.client.composants.images.DetailImagePresenteur; |
import org.tela_botanica.del.client.composants.images.DetailImageVue; |
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur; |
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesVue; |
import org.tela_botanica.del.client.composants.motsclesimages.MotsClesImagePresenteur; |
import org.tela_botanica.del.client.composants.motsclesimages.MotsClesImageVue; |
import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImagePresenteur; |
import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImageVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.composants.votefleur.VoteFleurPresenteur; |
import org.tela_botanica.del.client.composants.votefleur.VoteFleurVue; |
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVotePresenteur; |
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVoteVue; |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.ModeRecherche; |
import org.tela_botanica.del.client.modeles.Observation; |
import org.tela_botanica.del.client.modeles.Protocole; |
import org.tela_botanica.del.client.modeles.VoteProtocole; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole; |
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.GestionnaireEvenementChangementProtocole; |
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementVoirDetailsImage; |
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.GestionnaireEvenementVoirDetailsImage; |
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation; |
import org.tela_botanica.del.client.navigation.evenement.validationobservationpictoflora.EvenementValidationPictoflora; |
import org.tela_botanica.del.client.services.rest.MotsClesService; |
import org.tela_botanica.del.client.services.rest.MotsClesServiceConcret; |
import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret; |
import org.tela_botanica.del.client.services.rest.async.ListeMotsClesImageCallBack; |
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.event.dom.client.HasClickHandlers; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.Widget; |
public class ImagePresenteur extends Presenteur { |
public interface Vue extends IsWidget { |
public abstract void loadImage(Image image); |
public abstract HasClickHandlers getImagePrincipale(); |
public IsWidget getImagePrincipaleWidget(); |
public void setUrlImagePrincipale(String url); |
public void setTitreImagePrincipale(String titre); |
public void setAltTextImagePrincipale(String altText); |
public String getUrlImagePrincipale(); |
public String getTitreImagePrincipale(); |
public String getAltTextImagePrincipale(); |
public abstract HasClickHandlers getEnSavoirPlus(); |
public abstract void cacherZoneCache(); |
public abstract void afficherZoneCache(); |
public abstract HasWidgets getZoneVoter(); |
public HasClickHandlers getNomAuteur(); |
public HasClickHandlers getNomEspece(); |
public HasWidgets getMetadonnees(); |
public HasClickHandlers getVoirMotsCles(); |
public HasWidgets getZoneMotsCles(); |
public void cacherZoneMotsCles(); |
public void afficherZoneMotsCles(); |
} |
private Vue vue; |
private final Image image; |
private boolean detailsOuverts = false; |
private Protocole protocole; |
private boolean motsClesOuverts = false; |
private MotsClesImagePresenteur motsClesImagePresenteur; |
public ImagePresenteur(Image image, Protocole protocole, Vue vue) { |
this.image = image; |
this.protocole = protocole; |
this.vue = vue; |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
vue.loadImage(image); |
new MetadonneesPresenteur(new MetadonneesVue(), image.getObservation(), ModeRecherche.MODE_IMAGE, true).go(vue.getMetadonnees()); |
motsClesImagePresenteur = new MotsClesImagePresenteur(image, new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImagePresenteur(image.getIdImage(), new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImageVue()), new MotsClesImageVue()); |
motsClesImagePresenteur.go(vue.getZoneMotsCles()); |
chargerDonneesValidation(); |
gererEvenements(); |
} |
private void chargerDonneesValidation() { |
vue.getZoneVoter().clear(); |
if (protocole != null) { |
HashMap<String, VoteProtocole> observationValidationDatas = image.getVotesProtocoles(protocole.getId()); |
if (observationValidationDatas != null) { |
new MoyenneVotePresenteur(image, protocole, new MoyenneVoteVue(), new VoteProtocoleServiceConcret()).go(vue.getZoneVoter()); |
} |
} |
} |
private void lancerEvenementValidation() { |
CacheClient.getInstance().setImageCourante(image); |
final Observation obs = image.getObservation(); |
BusEvenementiel.getInstance().fireEvent(new EvenementValidationPictoflora(obs)); |
} |
protected void gererEvenements() { |
ClickHandler zoomeur = new ClickHandler() { |
public void onClick(ClickEvent event) { |
FenetreOverlaySimplePresenteur presenteurGalerie = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
presenteurGalerie.ouvrirFenetreModaleDefilante(0, new DetailImagePresenteur(image, new DetailImageVue())); |
presenteurGalerie.afficherBoutonsSuivantsPrecedents(false); |
}}; |
vue.getImagePrincipale().addClickHandler(zoomeur); |
vue.getNomAuteur().addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
lancerEvenementValidation(); |
} |
}); |
vue.getNomEspece().addClickHandler(new ClickHandler() { |
public void onClick(ClickEvent event) { |
lancerEvenementValidation(); |
} |
}); |
vue.getEnSavoirPlus().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
BusEvenementiel.getInstance().fireEvent(new EvenementVoirDetailsImage(image)); |
} |
}); |
vue.getVoirMotsCles().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
if(!motsClesOuverts) { |
afficherPanneauMotsCles(); |
} else { |
cacherPanneauMotsCles(); |
} |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementVoirDetailsImage.TYPE, new GestionnaireEvenementVoirDetailsImage() { |
@Override |
public void onVoirDetailsImage(EvenementVoirDetailsImage event) { |
if (image.getIdImage().equals(event.getImage().getIdImage())) { |
if (!detailsOuverts) { |
afficherDetails(); |
} else { |
cacherDetails(); |
} |
} else { |
cacherDetails(); |
} |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementChangementProtocole.TYPE, new GestionnaireEvenementChangementProtocole() { |
@Override |
public void onChangementProtocole(EvenementChangementProtocole event) { |
setProtocole(event.getProtocole()); |
chargerDonneesValidation(); |
} |
}); |
} |
protected void afficherPanneauMotsCles() { |
vue.afficherZoneMotsCles(); |
motsClesOuverts = true; |
motsClesImagePresenteur.chargerMotsCles(); |
motsClesImagePresenteur.focuserChampsSaisie(); |
} |
protected void cacherPanneauMotsCles() { |
vue.cacherZoneMotsCles(); |
motsClesOuverts = false; |
} |
public void cacherDetails() { |
vue.cacherZoneCache(); |
detailsOuverts = false; |
} |
public void afficherDetails() { |
vue.afficherZoneCache(); |
detailsOuverts = true; |
} |
public boolean isDetailsOpen() { |
return detailsOuverts; |
} |
public Protocole getProtocole() { |
return protocole; |
} |
public void setProtocole(Protocole protocole) { |
this.protocole = protocole; |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/resultats/images/ImageVue.java |
---|
New file |
0,0 → 1,165 |
package org.tela_botanica.del.client.vues.pictoflora.resultats.images; |
import org.tela_botanica.del.client.i18n.I18n; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
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.HTMLPanel; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.HorizontalPanel; |
import com.google.gwt.user.client.ui.Image; |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class ImageVue extends Composite implements ImagePresenteur.Vue { |
// Annotation can be used to change the name of the associated xml file |
// @UiTemplate("ObservationVue.ui.xml") |
interface MyUiBinder extends UiBinder<Widget, ImageVue> { |
} |
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); |
@UiField |
protected HTML nomEspece, nomAuteur; |
@UiField |
protected HTMLPanel zoneVoter, zonePlus; |
@UiField |
protected HorizontalPanel voter; |
@UiField |
protected Panel zoneCache, zoneMotsCles; |
@UiField |
Image imagePrincipale; |
@UiField |
Label enSavoirPlus, voirMotsCles; |
@UiField Panel metadonnees; |
public ImageVue() { |
// sets listBox |
initWidget(uiBinder.createAndBindUi(this)); |
} |
public HasWidgets getZoneVoter() { |
return voter; |
} |
public void cacherZoneCache() { |
zoneCache.setVisible(false); |
} |
public void afficherZoneCache() { |
zoneCache.setVisible(true); |
} |
public void loadImage(org.tela_botanica.del.client.modeles.Image image) { |
zoneCache.setVisible(false); |
zoneMotsCles.setVisible(false); |
nomEspece.setHTML("<p>"+image.getObservation().getNomRetenu()+"</p>"); |
nomAuteur.setHTML("<p>"+image.getObservation().getAuteur()+"</p>"); |
imagePrincipale.setUrl(image.getUrl()); |
imagePrincipale.setTitle(I18n.getVocabulary().indicationActionClicImage()); |
imagePrincipale.setAltText(image.getObservation().getAuteur() + " - " + image.getObservation().getNomRetenu()); |
String styleZonePlus = "image_determinee"; |
if(image.estADeterminer()) { |
styleZonePlus = "image_non_determinee"; |
} |
zonePlus.setTitle(I18n.getVocabulary().voirFicheIndividu()); |
zonePlus.addStyleName(styleZonePlus); |
voirMotsCles.setTitle(I18n.getVocabulary().voirMotsCles()); |
enSavoirPlus.setTitle(I18n.getVocabulary().voirMetadonnees()); |
} |
@Override |
public HasClickHandlers getImagePrincipale() { |
return imagePrincipale; |
} |
@Override |
public IsWidget getImagePrincipaleWidget() { |
return imagePrincipale; |
} |
@Override |
public HasClickHandlers getEnSavoirPlus() { |
return enSavoirPlus; |
} |
@Override |
public HasClickHandlers getVoirMotsCles() { |
return voirMotsCles; |
} |
@Override |
public void setUrlImagePrincipale(String url) { |
imagePrincipale.setUrl(url); |
} |
@Override |
public void setTitreImagePrincipale(String titre) { |
imagePrincipale.setTitle(titre); |
} |
@Override |
public void setAltTextImagePrincipale(String altText) { |
imagePrincipale.setAltText(altText); |
} |
@Override |
public String getUrlImagePrincipale() { |
return imagePrincipale.getUrl(); |
} |
@Override |
public String getTitreImagePrincipale() { |
return imagePrincipale.getTitle(); |
} |
@Override |
public String getAltTextImagePrincipale() { |
return imagePrincipale.getAltText(); |
} |
@Override |
public HasClickHandlers getNomAuteur() { |
return nomAuteur; |
} |
@Override |
public HasClickHandlers getNomEspece() { |
return nomEspece; |
} |
public HasWidgets getMetadonnees() { |
return metadonnees; |
} |
@Override |
public void cacherZoneMotsCles() { |
zoneMotsCles.setVisible(false); |
} |
@Override |
public void afficherZoneMotsCles() { |
zoneMotsCles.setVisible(true); |
} |
@Override |
public HasWidgets getZoneMotsCles() { |
return zoneMotsCles; |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/resultats/images/image.css |
---|
New file |
0,0 → 1,130 |
.observations { |
width: 250px; |
height: 250px; |
margin-bottom: 50px; |
} |
.observations img { |
width: 250px; |
padding: 0; |
} |
.zoneCache { |
position: absolute; |
padding: 5px; |
border: solid 1px #CCC; |
background: #333; |
opacity: 0.9; |
color: white; |
width: 250px; |
z-index: 1000; |
margin-top: 30px; |
} |
.zoneMotsCles { |
position: absolute; |
padding: 5px; |
border: solid 1px #CCC; |
background: #333; |
opacity: 0.9; |
color: white; |
width: 239px; |
z-index: 1000; |
margin-top: 212px; |
} |
.enSavoirPlus { |
position: absolute; |
background: url(./img/ajouter.png) no-repeat; |
width: 30px; |
height: 30px; |
cursor: pointer; |
margin-top: 3px; |
margin-left: 3px; |
} |
.voirMotsCles { |
position: absolute; |
background: url(./img/tagger.png) no-repeat; |
width: 30px; |
height: 30px; |
cursor: pointer; |
margin-top: 180px; |
margin-left: 216px; |
} |
.zoom { |
background: url(./img/loupe.png); |
width: 30px; |
height: 30px; |
cursor: pointer; |
margin-top: 3px; |
position: absolute; |
margin-left: 217px; |
} |
.espece { |
font-size: 12px; |
font-weight: bold; |
color: white; |
padding-left: 5px; |
padding-right: 1px; |
} |
.zonePlus:hover { |
background:#8EB533; |
} |
.espece p,.auteur p { |
padding: 0px; |
margin: 0px; |
overflow: hidden; |
text-overflow: ellipsis; |
white-space: pre; |
min-height: 13px; |
} |
.zoneDetail { |
position: absolute; |
} |
.zonePlus { |
position: absolute; |
width: 246px; |
padding: 2px; |
margin-top: -88px; |
opacity: 0.9; |
color: white; |
text-align: left; |
cursor: pointer; |
overflow: hidden; |
text-overflow: ellipsis; |
background:#333; |
} |
.zoneImage { |
cursor: pointer; |
height: 280px; |
margin-bottom: 20px; |
background: #DDD; |
} |
.zoneVoter { |
margin-top: -48px; |
text-align: center; |
opacity: 0.9; |
width: 240px; |
position: absolute; |
height: 35px; |
padding: 5px; |
} |
.metadonnees, .motsCles { |
text-align: left; |
} |
.auteur { |
padding-left: 5px; |
padding-right: 1px; |
padding-top: 3px; |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/resultats/images/ImageVue.ui.xml |
---|
New file |
0,0 → 1,30 |
<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.resources.Ressources'/> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/> |
<ui:style src="image.css" /> |
<g:HTMLPanel styleName="{style.observations}"> |
<g:HTMLPanel styleName="{style.zoneDetail}"> |
<g:Label ui:field="enSavoirPlus" text=" " styleName="{style.enSavoirPlus}"/> |
<g:Label ui:field="voirMotsCles" text=" " styleName="{style.voirMotsCles}"/> |
<g:HTMLPanel styleName="{style.zoneCache}" ui:field="zoneCache"> |
<g:HTMLPanel ui:field="metadonnees" styleName="{style.metadonnees}"/> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.zoneMotsCles}" ui:field="zoneMotsCles"> |
<g:HTMLPanel ui:field="motsCles" styleName="{style.motsCles}"/> |
</g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.zoneImage}"><g:Image ui:field="imagePrincipale" resource='{res.logo}'/></g:HTMLPanel> |
<g:HTMLPanel styleName="{style.zonePlus}" ui:field="zonePlus"> |
<g:HTML ui:field="nomAuteur" styleName="petit {style.auteur}">Auteur</g:HTML> |
<g:HTML ui:field="nomEspece" styleName="{style.espece}"></g:HTML> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.zoneVoter} arrondi-faible" ui:field="zoneVoter"><g:HorizontalPanel ui:field="voter"/></g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/resultats/ResultatPictofloraVue.java |
---|
New file |
0,0 → 1,280 |
package org.tela_botanica.del.client.vues.pictoflora.resultats; |
import java.util.ArrayList; |
import java.util.List; |
import org.tela_botanica.del.client.modeles.Protocole; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.dom.client.NodeList; |
import com.google.gwt.dom.client.OptionElement; |
import com.google.gwt.dom.client.SelectElement; |
import com.google.gwt.event.dom.client.HasChangeHandlers; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
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.Button; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.HTMLPanel; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.ListBox; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class ResultatPictofloraVue extends Composite implements ResultatPictofloraPresenteur.Vue { |
@UiField |
Panel panneauChargement; |
private final List<HasWidgets> panneauxImages = new ArrayList<HasWidgets>(); |
private final int nbImagesPerPage = 10; |
private int numImage = 0; |
// Annotation can be used to change the name of the associated xml file |
// @UiTemplate("ObservationRechercheVue.ui.xml") |
interface MyUiBinder extends UiBinder<Widget, ResultatPictofloraVue> { |
} |
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); |
@UiField |
Panel panneauPagination, panneauPaginationHaut, zoneTri; |
@UiField |
HTMLPanel imageTable; |
@UiField |
Button triParNbVotesAscendant, triParNbVotesDescendant, triParDateAscendant, triParDateDescendant, triParNbTagsAscendant, triParNbTagsDescendant; |
@UiField |
Label aucunResultat; |
@UiField |
Label labelVote, labelDate, labelTag; |
@UiField |
ListBox listeProtocoles; |
// Constructeur |
public ResultatPictofloraVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
/** |
* Nettoie et remet à zéro les composants du panneau qui doivent l'être |
* */ |
public void nettoyer() { |
setNumImage(0); |
imageTable.clear(); |
panneauxImages.clear(); |
} |
public void creerPanneauxObservations(int taille) { |
panneauxImages.clear(); |
for (int i = 0; i < taille; i++) { |
Panel imagePanel = new HTMLPanel(""); |
panneauxImages.add(imagePanel); |
} |
} |
public void afficherElementsAucunResultatTrouve() { |
imageTable.clear(); |
aucunResultat.setVisible(true); |
panneauPaginationHaut.setVisible(false); |
panneauPagination.setVisible(false); |
zoneTri.setVisible(false); |
} |
public void afficherElementsResultatsTrouve() { |
aucunResultat.setVisible(false); |
panneauPaginationHaut.setVisible(true); |
panneauPagination.setVisible(true); |
zoneTri.setVisible(true); |
} |
public void setNumImage(int numImage) { |
this.numImage = numImage; |
} |
public void startChargement() { |
panneauChargement.setHeight((this.getOffsetHeight() - (panneauPagination.getOffsetHeight() * 2)) + "px"); |
panneauChargement.setVisible(true); |
} |
public void stopChargement() { |
panneauChargement.setVisible(false); |
} |
public HTMLPanel getImageTable() { |
return imageTable; |
} |
public int getNumImage() { |
return numImage; |
} |
public Panel getPanneauChargement() { |
return panneauChargement; |
} |
public Panel getPanneauPagination() { |
return panneauPagination; |
} |
public Panel getPanneauPaginationHaut() { |
return panneauPaginationHaut; |
} |
public int getNbImagesPerPage() { |
return nbImagesPerPage; |
} |
public List<HasWidgets> getPanneauxImages() { |
return panneauxImages; |
} |
public Button getTriParNbVotesAscendant() { |
return triParNbVotesAscendant; |
} |
public Button getTriParNbVotesDescendant() { |
return triParNbVotesDescendant; |
} |
public Button getTriParDateAscendant() { |
return triParDateAscendant; |
} |
public Button getTriParDateDescendant() { |
return triParDateDescendant; |
} |
public void setListeProtocoles(ListBox listeProtocoles) { |
this.listeProtocoles = listeProtocoles; |
} |
public HasChangeHandlers getListeProtocoles() { |
return listeProtocoles; |
} |
public void ajouterProtocole(String NomProtocole, String idProtocole) { |
listeProtocoles.addItem(NomProtocole, idProtocole); |
} |
public void selectionnerProtocole(int index) { |
listeProtocoles.setSelectedIndex(index); |
} |
@Override |
public String getNomProtocoleSelectionne() { |
return listeProtocoles.getItemText((listeProtocoles.getSelectedIndex())); |
} |
@Override |
public int getIdProtocoleSelectionne() { |
return Integer.parseInt(listeProtocoles.getValue((listeProtocoles.getSelectedIndex()))); |
} |
@Override |
public Label getLabelVote() { |
return labelVote; |
} |
@Override |
public void masquerVoteAscendant() { |
triParNbVotesAscendant.setVisible(false); |
} |
@Override |
public void masquerVoteDescendant() { |
triParNbVotesDescendant.setVisible(false); |
} |
@Override |
public void afficherVoteAscendant() { |
triParNbVotesAscendant.setVisible(true); |
} |
@Override |
public void afficherVoteDescendant() { |
triParNbVotesDescendant.setVisible(true); |
} |
@Override |
public Label getLabelDate() { |
return labelDate; |
} |
@Override |
public Label getLabelTag() { |
return labelTag; |
} |
@Override |
public void masquerDateAscendant() { |
triParDateAscendant.setVisible(false); |
} |
@Override |
public void masquerDateDescendant() { |
triParDateDescendant.setVisible(false); |
} |
@Override |
public void afficherDateAscendant() { |
triParDateAscendant.setVisible(true); |
} |
@Override |
public void afficherDateDescendant() { |
triParDateDescendant.setVisible(true); |
} |
@Override |
public HasClickHandlers getTriParNbTagsAscendant() { |
return triParNbTagsAscendant; |
} |
@Override |
public HasClickHandlers getTriParNbTagsDescendant() { |
return triParNbTagsDescendant; |
} |
@Override |
public void afficherTagAscendant() { |
triParNbTagsAscendant.setVisible(true); |
} |
@Override |
public void masquerTagAscendant() { |
triParNbTagsAscendant.setVisible(false); |
} |
@Override |
public void afficherTagDescendant() { |
triParNbTagsDescendant.setVisible(true); |
} |
@Override |
public void masquerTagDescendant() { |
triParNbTagsDescendant.setVisible(false); |
} |
@Override |
public void ajouterProtocoles(List<Protocole> protocoles) { |
SelectElement selectElement = SelectElement.as(listeProtocoles.getElement()); |
NodeList<OptionElement> options = selectElement.getOptions(); |
for (int i = 0; i < protocoles.size(); i++) { |
listeProtocoles.addItem(protocoles.get(i).getNom(), protocoles.get(i).getId()+""); |
options.getItem(i).setTitle(protocoles.get(i).getDescription()); |
} |
} |
@Override |
public void mettreAJourDescriptionProtocoleCourant( |
Protocole protocoleCourant) { |
listeProtocoles.setTitle(protocoleCourant.getDescription()); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/resultats/ResultatPictoflora.css |
---|
New file |
0,0 → 1,80 |
.contenuResultat { |
text-align: center; |
} |
.barreNavigation { |
max-width: 810px; |
margin-top: -15px; |
padding-bottom: 20px |
} |
.votes { |
padding-left: 10px; |
padding-top: 3px; |
cursor: pointer; |
} |
.date { |
padding-left: 10px; |
padding-top: 3px; |
cursor: pointer; |
} |
.tag { |
padding-left: 10px; |
padding-top: 3px; |
cursor: pointer; |
} |
.zoneTri { |
padding-left: 10px; |
float: right; |
} |
.labeltri { |
padding-top: 3px; |
} |
.protocoles { |
padding-left: 10px; |
} |
.paginationHaut { |
} |
.images { |
width: 100%; |
clear: left; |
margin-top: 10px; |
margin-left:15px; |
} |
.images>div { |
float: left; |
margin: 0 20px 50px 0px |
} |
.boutonTriAsc,.boutonTriDesc { |
border: none; |
cursor: pointer; |
} |
.boutonTriAsc:hover,.boutonTriDesc:hover { |
border:dotted 1px #8EB533; |
border-width:0 0 1px 0; |
} |
.boutonTriAsc { |
height: 19px; |
background: url(./img/fleche-haut.png) no-repeat |
} |
.boutonTriDesc { |
height: 19px; |
background: url(./img/fleche-bas.png) no-repeat |
} |
.aucunResultat { |
text-align: left; |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/moteur/MoteurPictofloraPresenteur.java |
---|
New file |
0,0 → 1,111 |
package org.tela_botanica.del.client.vues.pictoflora.moteur; |
import javax.validation.Configuration; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur; |
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue; |
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur; |
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue; |
import org.tela_botanica.del.client.config.Config; |
import org.tela_botanica.del.client.modeles.ModeRecherche; |
import org.tela_botanica.del.client.modeles.ProtocoleServiceResultat; |
import org.tela_botanica.del.client.services.rest.ImageServiceConcret; |
import org.tela_botanica.del.client.services.rest.ProtocoleService; |
import org.tela_botanica.del.client.services.rest.ProtocoleServiceConcret; |
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback; |
import org.tela_botanica.del.client.vues.pictoflora.resultats.ResultatPictofloraPresenteur; |
import org.tela_botanica.del.client.vues.pictoflora.resultats.ResultatPictofloraVue; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.Panel; |
public class MoteurPictofloraPresenteur { |
public interface Vue extends IsWidget { |
public HasWidgets getZoneResultats(); |
public HasWidgets getZoneRecherche(); |
public void ajouterVue(HasWidgets composite); |
public Panel getZonePartageUrl(); |
HasClickHandlers getLienAjoutObservation(); |
} |
private Vue vue; |
private ProtocoleService protocoleService; |
/** |
* Constructeur |
* */ |
public MoteurPictofloraPresenteur(Vue vue, ProtocoleService protocoleService) { |
this.vue = vue; |
this.protocoleService = protocoleService; |
PartageUrlPresenteur presenteurPartageUrl = new PartageUrlPresenteur(new PartageUrlVue()); |
presenteurPartageUrl.go(vue.getZonePartageUrl()); |
// TODO: le code ci dessous sert à ne pas recharger les protocoles |
// à chaque fois, voir si on peut le factoriser quelque part |
if (CacheClient.getInstance().getProtocoleCourant() == null) { |
if (CacheClient.getInstance().getListeProtocoles() == null) { |
protocoleService.getProtocoles(new ProtocolesCallback() { |
@Override |
public void surRetour(ProtocoleServiceResultat protocolesRecus) { |
CacheClient.getInstance().setListeProtocoles(protocolesRecus.getProtocoles()); |
if (protocolesRecus.getProtocoles().size() > 0) { |
CacheClient.getInstance().setProtocoleCourant(protocolesRecus.getProtocoles().get(0)); |
} else { |
// TODO afficher message indiquant que la liste des |
// protocoles de votes n'est pas fourni |
} |
} |
}); |
} else { |
CacheClient.getInstance().setProtocoleCourant(CacheClient.getInstance().getListeProtocoles().get(0)); |
} |
} |
gererEvenements(); |
} |
private void gererEvenements() { |
vue.getLienAjoutObservation().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("applisaisie"), "Saisie d'une nouvelle observation", null); |
} |
}); |
} |
public void go(HasWidgets composite) { |
vue.ajouterVue(composite); |
chargerMoteurRechercheAvancee(); |
} |
public void chargerMoteurRechercheAvancee() { |
MoteurRecherchePresenteur presenteurRecherche = new MoteurRecherchePresenteur(new MoteurRechercheVue(""), ModeRecherche.MODE_IMAGE) { |
public void lancerRecherche() { |
chercherImages(); |
} |
}; |
presenteurRecherche.go(vue.getZoneRecherche()); |
} |
public void chercherImages() { |
vue.getZoneResultats().clear(); |
new ResultatPictofloraPresenteur(new ImageServiceConcret(), new ProtocoleServiceConcret(), new ResultatPictofloraVue()).go(vue.getZoneResultats()); |
} |
public HasWidgets getZoneResultats() { |
return vue.getZoneResultats(); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/moteur/MoteurPictofloraVue.java |
---|
New file |
0,0 → 1,67 |
package org.tela_botanica.del.client.vues.pictoflora.moteur; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.HasChangeHandlers; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
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.HasWidgets; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.ListBox; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class MoteurPictofloraVue extends Composite implements MoteurPictofloraPresenteur.Vue { |
private final Panel panneauChargement = new FlowPanel(); |
interface MyUiBinder extends UiBinder<Widget, MoteurPictofloraVue> { |
} |
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); |
@UiField |
Panel panneauResultats, zoneRecherche, zonePartageUrl; |
@UiField |
Label ajouterObservation; |
// Constructeur |
public MoteurPictofloraVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
public Panel getPanneauChargement() { |
return panneauChargement; |
} |
public Panel getZonePartageUrl() { |
return zonePartageUrl; |
} |
// Cette méthode est public car appelé dans GestionnaireHistorique |
public Panel getZoneResultats() { |
return panneauResultats; |
} |
public void setPanneauResultats(Panel panneauResultats) { |
this.panneauResultats = panneauResultats; |
} |
public HasWidgets getZoneRecherche() { |
return zoneRecherche; |
} |
@Override |
public HasClickHandlers getLienAjoutObservation() { |
return ajouterObservation; |
} |
@Override |
public void ajouterVue(HasWidgets composite) { |
composite.add(this.asWidget()); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/moteur/rechercheImage.css |
---|
New file |
0,0 → 1,47 |
.zoneRecherche { |
width: 100% |
} |
.moteurRecherche { |
margin-bottom: 10px; |
} |
.moteurRecherche button { |
margin-left: 2px; |
margin-top: -1px |
} |
.labelProtocole { |
padding: 0 5px 0 0; |
float: left |
} |
.chapeau { |
min-height:70px; |
} |
.labelProtocole:after { |
content: " :" |
} |
.entrerMotClef { |
margin-bottom: 10px; |
} |
.lienProposerImage { |
margin-top:20px; |
margin-left:70px; |
margin-bottom:10px; |
} |
.lienAide { |
margin-right:70px; |
padding:4px 15px; |
margin-top:19px; |
float:right; |
color:white; |
} |
.titreRecherche { |
margin:0; |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/moteur/MoteurPictofloraVueMyUiBinderImplGenMessages.properties |
---|
New file |
0,0 → 1,2 |
chapeauImages=<ul class="traitTela"><li>Cette galerie vous permet de rechercher les illustrations des membres du réseau issues du <br /> \ |
Carnet en ligne... et de voter pour la qualité des images selon un protocole défini.</li></ul> |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/moteur/MoteurPictofloraVue.ui.xml |
---|
New file |
0,0 → 1,26 |
<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:generateLocales="default"> |
<ui:with field='res' |
type='org.tela_botanica.del.client.resources.Ressources' /> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="rechercheImage.css" /> |
<g:HTMLPanel> |
<g:HTMLPanel styleName="limiteMax"> |
<g:HTML styleName="{style.chapeau}"><ui:msg key="chapeauImages">Cette galerie vous permet de rechercher les illustrations des membres du réseau issues du Carnet en ligne... et de voter pour la qualité des images selon un protocole défini.</ui:msg></g:HTML> |
<g:Label ui:field="ajouterObservation" text="{constants.ajouterImage}" title="{constants.legendeAjouterObservation}" styleName="acceder-outil {style.lienProposerImage}"/> |
<g:Anchor target="_blank" href="{constants.lienAidePictoflora}" ui:field="aide" text="{constants.accesAide}" title="{constants.legendeAjouterObservation}" styleName="acceder-aide {style.lienAide}"/> |
<g:HTMLPanel ui:field="zonePartageUrl"></g:HTMLPanel> |
<g:HTMLPanel styleName="importance1"> |
<g:Label text="{constants.rechercherImage}" styleName="titre {style.titreRecherche}" /> |
<g:Label text="{constants.entrerMotClef}" styleName="gris {style.entrerMotClef}" /> |
<g:HTMLPanel ui:field="zoneRecherche" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel ui:field="panneauResultats" /> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/plateformedetermination/PictofloraDeterminationVue.ui.xml |
---|
New file |
0,0 → 1,55 |
<!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.composants.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/> |
<ui:style src="determinationVue.css" /> |
<g:HTMLPanel styleName="{style.pageDetermination}"> |
<g:HTMLPanel styleName="limiteMax"> |
<g:Hyperlink ui:field="lienRetour" styleName="lien">Retour</g:Hyperlink> |
<g:HTMLPanel ui:field="metadonnees" styleName="{style.metadonnees}"/> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="contenuCentre"> |
<g:HTMLPanel styleName="{style.zoneDetailImage}"> |
<g:VerticalPanel ui:field="detailImageObservation" styleName="{style.zoneImage}"/> |
<g:Label text="Votes associés à l'image" styleName="titre"></g:Label> |
<g:HTMLPanel ui:field="voteProtocole" styleName="{style.voteProtocole}"/> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.zoneVote}"> |
<g:Label styleName="titre" text="{constants.titreDetermination}" /> |
<g:HTMLPanel styleName="nettoyage {style.boutons}"> |
<g:Button text="{constants.proposerSaDetermination}" ui:field="boutonAjoutProposition" styleName="bouton" /> |
<g:Button text="{constants.ajouterCommentaire}" ui:field="boutonAjoutCommentaire" styleName="bouton" /> |
<g:HTMLPanel ui:field="zoneRss" styleName="droite {style.zonerss}"></g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.taxonProbable}"> |
<g:Label styleName="gauche" text="{constants.determinationPlusProbable}" /> |
<g:Label ui:field="nomTaxonProbable" styleName="gauche gras {style.nomTaxonProbable}"/> |
<g:HTML><br /></g:HTML> |
</g:HTMLPanel> |
<g:VerticalPanel ui:field="forum" /> |
<g:HTMLPanel styleName="nettoyage {style.boutons}"> |
<g:Button text="{constants.proposerSaDetermination}" ui:field="boutonAjoutPropositionBas" styleName="bouton" /> |
<g:Button text="{constants.ajouterCommentaire}" ui:field="boutonAjoutCommentaireBas" styleName="bouton" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.zoneOutils}"> |
<g:Label text="Pour vous aider : " styleName="titre3"></g:Label> |
<g:VerticalPanel ui:field="formulaireRechercheEflore"/> |
<g:Label styleName="{style.autreOutils} sousTitre">Vérifier sa détermination</g:Label> |
<g:Label styleName="lienListe labelLien" ui:field="lienEflore">eFlore</g:Label> |
<g:Label styleName="{style.autreOutils} sousTitre">Autres outils en ligne</g:Label> |
<g:Label styleName="lienListe labelLien" ui:field="lienOuvrages">Flores numérisées</g:Label> |
<g:Label styleName="lienListe labelLien" ui:field="lienBonnier">Flore Bonnier interactive</g:Label> |
<g:Label styleName="lienListe labelLien" ui:field="lienCles">Clés de détermination</g:Label> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/plateformedetermination/PictofloraDeterminationPresenteur.java |
---|
New file |
0,0 → 1,292 |
package org.tela_botanica.del.client.vues.pictoflora.plateformedetermination; |
import java.util.Iterator; |
import java.util.List; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur; |
import org.tela_botanica.del.client.composants.formulairerechercheeflore.FormulaireRechercheEflorePresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue; |
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionPresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionVue; |
import org.tela_botanica.del.client.composants.forum.ForumPresenteur; |
import org.tela_botanica.del.client.composants.forum.ForumVue; |
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesEnLigneVue; |
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur; |
import org.tela_botanica.del.client.composants.observations.ObservationImagesPresenteur; |
import org.tela_botanica.del.client.composants.observations.ObservationImagesVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.composants.rss.RssPresenteur; |
import org.tela_botanica.del.client.composants.rss.RssVue; |
import org.tela_botanica.del.client.config.Config; |
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation; |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.ModeRecherche; |
import org.tela_botanica.del.client.modeles.MoyenneVote; |
import org.tela_botanica.del.client.modeles.Observation; |
import org.tela_botanica.del.client.modeles.ObservationServiceResultat; |
import org.tela_botanica.del.client.modeles.Protocole; |
import org.tela_botanica.del.client.modeles.ProtocoleServiceResultat; |
import org.tela_botanica.del.client.modeles.VoteDetermination; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation; |
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation; |
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination; |
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination; |
import org.tela_botanica.del.client.services.CalculVoteDeterminationService; |
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret; |
import org.tela_botanica.del.client.services.rest.ObservationService; |
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret; |
import org.tela_botanica.del.client.services.rest.ProtocoleService; |
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback; |
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback; |
import org.tela_botanica.del.client.utils.URLUtils; |
import org.tela_botanica.del.client.vues.pictoflora.plateformedetermination.ligneProtocole.LigneProtocolePresenteur; |
import org.tela_botanica.del.client.vues.pictoflora.plateformedetermination.ligneProtocole.LigneProtocoleVue; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.Button; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.Panel; |
public class PictofloraDeterminationPresenteur extends Presenteur { |
/** |
* Vue de l'interface de détermination |
* */ |
public interface Vue extends IsWidget { |
public Panel getForum(); |
public Panel getDetailImageObservation(); |
public Panel getFormulaireRechercheEflore(); |
public Panel getVoteProtocole(); |
public Button getBoutonAjoutProposition(); |
public Button getBoutonAjoutCommentaire(); |
public Button getBoutonAjoutPropositionBas(); |
public Button getBoutonAjoutCommentaireBas(); |
public HasWidgets getMetadonnees(); |
public HasWidgets getNouvelleLigneProtocole(); |
public void afficherNomTaxonProbable(String nomTaxon); |
public HasClickHandlers getLienOuvrages(); |
public HasClickHandlers getLienBonnier(); |
public HasClickHandlers getLienCles(); |
public HasClickHandlers getLienEflore(); |
public HasWidgets getZoneRss(); |
} |
private Vue vue; |
private FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur; |
// Déclaration des services à utiliser |
private ProtocoleService protocoleService; |
private ObservationService observationService; |
private CacheClient cache = CacheClient.getInstance(); |
public PictofloraDeterminationPresenteur(Vue vue, ObservationService observationService, ProtocoleService protocoleService) { |
this.vue = vue; |
this.protocoleService = protocoleService; |
this.observationService = observationService; |
} |
public void go(final HasWidgets composite) { |
// TODO afficher une icone de chargement si le chargement devient trop |
// long |
// car tout l'écran est asynchrone ici |
String observationId = URLUtils.getURLSpecialParameterValue(); |
observationService.getObservation(observationId, new ObservationsCallback() { |
@Override |
public void surRetour(ObservationServiceResultat objetRetour) { |
afficherRss(cache.getObservationCourante()); |
// trouve l'image courante si elle n'est pas deja en cache |
List<Image> listeImages = cache.getObservationCourante().getImages(); |
if (listeImages.size() > 0) { |
CacheClient.getInstance().setImageCourante(listeImages.get(0)); |
} else { |
CacheClient.getInstance().setImageCourante(null); |
} |
new MetadonneesPresenteur(new MetadonneesEnLigneVue(), cache.getObservationCourante(), ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonnees()); |
new ObservationImagesPresenteur(new ObservationImagesVue(), cache.getObservationCourante(), CacheClient.getInstance().getImageCourante(), ConstantesNavigation.PAGE_VALIDATION_PICTOFLORA).go(vue.getDetailImageObservation()); |
chargerEtAjouterLignesVotesProtocole(); |
new ForumPresenteur(new ForumVue()).go(vue.getForum()); |
new FormulaireRechercheEflorePresenteur().go(vue.getFormulaireRechercheEflore()); |
calculerEtAfficherVoteDeterminationPlusPopulaire(); |
composite.add(vue.asWidget()); |
} |
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
} |
}); |
gererEvenements(); |
} |
public void afficherRss(Observation observation) { |
new RssPresenteur(new RssVue(), observation, "Suivre cette observation").go(vue.getZoneRss()); |
} |
private void chargerEtAjouterLignesVotesProtocole() { |
if (cache.getListeProtocoles() == null) { |
protocoleService.getProtocoles(new ProtocolesCallback() { |
@Override |
public void surRetour(ProtocoleServiceResultat protocolesRecus) { |
List<Protocole> listeProtocoles = protocolesRecus.getProtocoles(); |
ajouterLignesVotesProtocole(listeProtocoles); |
} |
}); |
} else { |
List<Protocole> listeProtocoles = cache.getListeProtocoles(); |
ajouterLignesVotesProtocole(listeProtocoles); |
} |
} |
private void ajouterLignesVotesProtocole(List<Protocole> listeProtocoles) { |
for (Iterator<Protocole> iterator = listeProtocoles.iterator(); iterator.hasNext();) { |
Protocole protocole = iterator.next(); |
LigneProtocolePresenteur presenteurLigneProtocole = new LigneProtocolePresenteur(protocole, new LigneProtocoleVue()); |
presenteurLigneProtocole.go(vue.getNouvelleLigneProtocole()); |
} |
} |
private void calculerEtAfficherVoteDeterminationPlusPopulaire() { |
Observation observation = cache.getObservationCourante(); |
String nomTaxon = observation.getNomRetenu(); |
List<MoyenneVote> votesOrdonnes = CalculVoteDeterminationService.calculerVoteDeterminationPlusPopulaire(cache.getObservationCourante().getPropositionDeterminations()); |
if (votesOrdonnes.size() > 0) { |
nomTaxon = votesOrdonnes.get(0).getIntituleAssocie(); |
} |
vue.afficherNomTaxonProbable(nomTaxon); |
} |
public void gererEvenements() { |
BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() { |
@Override |
public void onVoteDetermination(VoteDetermination event) { |
calculerEtAfficherVoteDeterminationPlusPopulaire(); |
} |
}); |
ClickHandler clicAjoutProposition = new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue(), new PropositionDeterminationServiceConcret())); |
} |
}; |
vue.getBoutonAjoutProposition().addClickHandler(clicAjoutProposition); |
vue.getBoutonAjoutPropositionBas().addClickHandler(clicAjoutProposition); |
ClickHandler clicAjoutCommentaire = new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(cache.getObservationCourante(), new CommentaireServiceConcret(), new FormulaireCommentaireVue()); |
fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur); |
} |
}; |
vue.getBoutonAjoutCommentaire().addClickHandler(clicAjoutCommentaire); |
vue.getBoutonAjoutCommentaireBas().addClickHandler(clicAjoutCommentaire); |
BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() { |
@Override |
public void onAjoutDetermination(EvenementAjoutDetermination event) { |
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) { |
fenetreOverlaySimplePresenteur.fermerFenetreModale(); |
} |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() { |
@Override |
public void onAjoutCommentaire(EvenementAjoutCommentaire event) { |
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) { |
fenetreOverlaySimplePresenteur.fermerFenetreModale(); |
} |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() { |
@Override |
public void onChangementImage(EvenementChangementImageValidation event) { |
vue.getDetailImageObservation().clear(); |
vue.getVoteProtocole().clear(); |
new ObservationImagesPresenteur(new ObservationImagesVue(), cache.getObservationCourante(), CacheClient.getInstance().getImageCourante(), ConstantesNavigation.PAGE_VALIDATION_PICTOFLORA).go(vue.getDetailImageObservation()); |
chargerEtAjouterLignesVotesProtocole(); |
} |
}); |
vue.getLienOuvrages().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("ouvragesFlore"), "Flores numérisées", null); |
} |
}); |
vue.getLienBonnier().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("bonnierPda"), "Flore Bonnier PDA", null); |
} |
}); |
vue.getLienCles().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("clesDetermination"), "Clés de determination", null); |
} |
}); |
vue.getLienEflore().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("eflore"), "eFlore", null); |
} |
}); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/plateformedetermination/detail/DetailImageObservationPresenteur.java |
---|
New file |
0,0 → 1,24 |
package org.tela_botanica.del.client.vues.pictoflora.plateformedetermination.detail; |
import org.tela_botanica.del.client.cache.CacheClient; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class DetailImageObservationPresenteur { |
public interface Vue extends IsWidget { |
public void chargerInformationsObservation(org.tela_botanica.del.client.modeles.Image image); |
} |
private Vue vue; |
public DetailImageObservationPresenteur(Vue vue) { |
this.vue = vue; |
} |
public void go(HasWidgets composite) { |
vue.chargerInformationsObservation(CacheClient.getInstance().getImageCourante()); |
composite.add(vue.asWidget()); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/plateformedetermination/detail/DetailImageObservationVue.java |
---|
New file |
0,0 → 1,38 |
package org.tela_botanica.del.client.vues.pictoflora.plateformedetermination.detail; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.uibinder.client.UiBinder; |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.Image; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.Widget; |
public class DetailImageObservationVue extends Composite implements DetailImageObservationPresenteur.Vue { |
@UiField |
protected Image imageObservation; |
@UiField |
protected Label nomObservateur, nomRetenu, dateObservation, famille, localite; |
private static DetailImageObservationUIiBinder uiBinder = GWT.create(DetailImageObservationUIiBinder.class); |
interface DetailImageObservationUIiBinder extends UiBinder<Widget, DetailImageObservationVue> { |
}; |
public DetailImageObservationVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
public void chargerInformationsObservation(org.tela_botanica.del.client.modeles.Image image) { |
imageObservation.setUrl(image.getUrl()); |
nomObservateur.setText(image.getObservation().getAuteur()); |
nomRetenu.setText(image.getObservation().getNomRetenu()); |
famille.setText(image.getObservation().getFamille()); |
localite.setText(image.getObservation().getLocalite()); |
dateObservation.setText(image.getObservation().getDateReleve()); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/plateformedetermination/detail/detailObservation.css |
---|
New file |
0,0 → 1,27 |
.detailObservation { |
font-size: 11px; |
position: absolute; |
padding: 5px; |
color: white; |
background: #333; |
opacity: 0.8; |
margin-top: -80px; |
width: 230px; |
} |
.observateur td { |
font-size: 11px; |
white-space: nowrap |
} |
.date { |
} |
.nomRetenu { |
font-weight: bold |
} |
.dateObservation { |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/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> |
<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> - </g:HTML><g:Label ui:field="localite" /><g:HTML> - </g:HTML><g:Label ui:field="dateObservation" /> |
</g:HorizontalPanel> |
<g:HorizontalPanel> |
<!-- <g:Label text="{constants.nom_retenu} : "/> --> |
<g:Label ui:field="nomRetenu" styleName="{style.nomRetenu}"/> |
</g:HorizontalPanel> |
<g:HorizontalPanel styleName="{style.date}"> |
<!-- <g:Label text="{constants.date_observation} : "/> --> |
</g:HorizontalPanel> |
<g:HorizontalPanel> |
<!-- <g:Label text="{constants.famille} : "/> --> |
<g:HorizontalPanel><g:Label ui:field="famille" /></g:HorizontalPanel> |
</g:HorizontalPanel> |
<g:HorizontalPanel> |
<!-- <g:Label text="{constants.localite} : "/> --> |
</g:HorizontalPanel> |
</g:VerticalPanel> |
</g:VerticalPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/plateformedetermination/PictofloraDeterminationVue.java |
---|
New file |
0,0 → 1,117 |
package org.tela_botanica.del.client.vues.pictoflora.plateformedetermination; |
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
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.HTMLPanel; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.Hyperlink; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class PictofloraDeterminationVue extends Composite implements PictofloraDeterminationPresenteur.Vue { |
@UiField |
Panel forum, detailImageObservation, formulaireRechercheEflore, voteProtocole, zoneRss; |
@UiField |
Label nomTaxonProbable, lienOuvrages, lienEflore, lienBonnier, lienCles; |
@UiField |
Hyperlink lienRetour; |
@UiField |
Button boutonAjoutProposition, boutonAjoutPropositionBas, boutonAjoutCommentaire, boutonAjoutCommentaireBas; |
@UiField |
Panel metadonnees; |
interface DeterminationUIiBinder extends UiBinder<Widget, PictofloraDeterminationVue> { |
}; |
private static DeterminationUIiBinder uiBinder = GWT.create(DeterminationUIiBinder.class); |
public PictofloraDeterminationVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
lienRetour.setTargetHistoryToken(ConstantesNavigation.HOME); |
} |
public Panel getForum() { |
return forum; |
} |
public Panel getDetailImageObservation() { |
return detailImageObservation; |
} |
public Panel getFormulaireRechercheEflore() { |
return formulaireRechercheEflore; |
} |
public Panel getVoteProtocole() { |
return voteProtocole; |
} |
public Button getBoutonAjoutProposition() { |
return boutonAjoutProposition; |
} |
public Button getBoutonAjoutPropositionBas() { |
return boutonAjoutPropositionBas; |
} |
public Panel getMetadonnees() { |
return metadonnees; |
} |
@Override |
public void afficherNomTaxonProbable(String nomTaxon) { |
this.nomTaxonProbable.setText(nomTaxon); |
} |
@Override |
public HasWidgets getNouvelleLigneProtocole() { |
HTMLPanel nouvelleLigne = new HTMLPanel(""); |
this.voteProtocole.add(nouvelleLigne); |
return nouvelleLigne; |
} |
public Button getBoutonAjoutCommentaire() { |
return boutonAjoutCommentaire; |
} |
public Button getBoutonAjoutCommentaireBas() { |
return boutonAjoutCommentaireBas; |
} |
@Override |
public HasClickHandlers getLienOuvrages() { |
return lienOuvrages; |
} |
@Override |
public HasClickHandlers getLienBonnier() { |
return lienBonnier; |
} |
@Override |
public HasClickHandlers getLienCles() { |
return lienCles; |
} |
@Override |
public HasClickHandlers getLienEflore() { |
return lienEflore; |
} |
public HasWidgets getZoneRss() { |
return zoneRss; |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/plateformedetermination/ligneProtocole/LigneProtocoleVue.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' |
xmlns:forum="urn:import:org.tela_botanica.del.client.composants.forum"> |
<ui:style src="ligneProtocole.css" /> |
<g:HorizontalPanel styleName="vote"> |
<g:HTMLPanel ui:field="zoneVote" /> |
</g:HorizontalPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/plateformedetermination/ligneProtocole/LigneProtocolePresenteur.java |
---|
New file |
0,0 → 1,59 |
package org.tela_botanica.del.client.vues.pictoflora.plateformedetermination.ligneProtocole; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVotePresenteur; |
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVoteVue; |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.Protocole; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation; |
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation; |
import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class LigneProtocolePresenteur extends Presenteur { |
public interface Vue extends IsWidget { |
HasWidgets getZoneVote(); |
} |
private Vue vue; |
private Protocole protocole; |
public LigneProtocolePresenteur(Protocole protocole, Vue vue) { |
this.vue = vue; |
this.protocole = protocole; |
chargerValeursProtocolePourImageCourante(); |
} |
public void chargerValeursProtocolePourImageCourante(){ |
vue.getZoneVote().clear(); |
Image imageCourante = CacheClient.getInstance().getImageCourante(); |
MoyenneVotePresenteur votePresenteur = new MoyenneVotePresenteur(imageCourante, protocole, new MoyenneVoteVue(), new VoteProtocoleServiceConcret()); |
votePresenteur.go(vue.getZoneVote()); |
} |
public Vue getVue() { |
return vue; |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
gererEvenements(); |
} |
@Override |
protected void gererEvenements() { |
BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() { |
@Override |
public void onChangementImage(EvenementChangementImageValidation event) { |
chargerValeursProtocolePourImageCourante(); |
} |
}); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/plateformedetermination/ligneProtocole/LigneProtocoleVue.java |
---|
New file |
0,0 → 1,30 |
package org.tela_botanica.del.client.vues.pictoflora.plateformedetermination.ligneProtocole; |
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.Label; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class LigneProtocoleVue extends Composite implements LigneProtocolePresenteur.Vue { |
@UiField |
Panel zoneVote; |
interface LigneProtocoleUIiBinder extends UiBinder<Widget, LigneProtocoleVue> { |
}; |
private static LigneProtocoleUIiBinder uiBinder = GWT.create(LigneProtocoleUIiBinder.class); |
public LigneProtocoleVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
@Override |
public HasWidgets getZoneVote() { |
return this.zoneVote; |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/plateformedetermination/ligneProtocole/ligneProtocole.css |
---|
New file |
0,0 → 1,7 |
.nomProtocole { |
font-size: 11px; |
overflow: hidden; |
text-overflow: ellipsis; |
width: 87px; |
margin-bottom:15px; |
} |
/trunk/src/org/tela_botanica/del/client/vues/pictoflora/plateformedetermination/determinationVue.css |
---|
New file |
0,0 → 1,107 |
.pageDetermination { |
margin-top:70px; |
} |
.metadonnees { |
margin-bottom:10px; |
margin-top:10px; |
display:inline-block; |
} |
.zoneVote { |
margin-left: 5px; |
height: 100%; |
display:inline-block; |
vertical-align:top; |
border-left: solid 1px #DDD; |
border-right: solid 1px #DDD; |
padding-left: 10px; |
padding-right:10px; |
text-align:left; |
} |
.taxonPlusProbable { |
float: left; |
} |
.zoneBarreRepartition { |
border: solid 1px #DDD; |
padding: 15px; |
} |
.zoneDetailImage { |
height: 100%; |
width: 255px; |
display:inline-block; |
vertical-align:top; |
text-align:left; |
clear: left; |
} |
.zoneImage { |
margin-bottom: 10px; |
margin-right: 15px |
} |
.zoneImage div { |
clear: left; |
padding-top: 5px; |
} |
.zoneImage div img { |
float: left; |
padding: 0 5px 0 0; |
} |
.boutonProposer { |
float: left; |
padding: 5px; |
cursor: pointer; |
background:#8EB533; |
border:none; |
margin-right:10px; |
margin-top:10px; |
} |
.zoneOutils { |
width: 15%; |
padding-left:10px; |
display:inline-block; |
vertical-align:top; |
text-align:left; |
} |
.boutons { |
margin-bottom:15px; |
} |
.lienProposerObservation { |
margin-left: 575px; |
} |
.nomTaxonProbable{ |
padding-left:3px; |
} |
.taxonProbable { |
background: none repeat scroll 0 0 #F8F8C3; |
clear: left; |
font-size: 15px; |
margin-bottom: 5px; |
padding: 13px 9px; |
} |
.voteProtocole div { |
margin-bottom:10px; |
} |
.voteProtocole div div { |
margin-bottom:0px; |
border:solid 0px red |
} |
.autreOutils { |
margin-top:15px; |
} |
.zonerss { |
margin-top:5px; |
} |
/trunk/src/org/tela_botanica/del/client/vues/comparaisoneflore/ComparaisonEflorePresenteur.java |
---|
6,6 → 6,7 |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur; |
import org.tela_botanica.del.client.composants.formulairerechercheeflore.FormulaireRechercheEflorePresenteur; |
import org.tela_botanica.del.client.composants.images.DetailImagePresenteur; |
import org.tela_botanica.del.client.composants.images.DetailImageVue; |
import org.tela_botanica.del.client.modeles.Image; |
16,7 → 17,6 |
import org.tela_botanica.del.client.navigation.evenement.comparaisoneflore.GestionnaireEvenementComparaisonEflore; |
import org.tela_botanica.del.client.services.rest.ImageService; |
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback; |
import org.tela_botanica.del.client.vues.plateformedetermination.formulairerechercheeflore.FormulaireRechercheEflorePresenteur; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
/trunk/src/org/tela_botanica/del/client/gestionhistorique/ConstantesNavigation.java |
---|
7,7 → 7,8 |
public static final String PAGE_RECHERCHE_IMAGES = "page_recherche_images"; |
public static final String PICTOFLORA = "pictoflora"; |
public static final String PAGE_RECHERCHE_OBSERVATIONS = "page_recherche_observations"; |
public static final String PAGE_VALIDATION = "page_validation"; |
public static final String PAGE_VALIDATION = "page_validation"; //pour identiplance |
public static final String PAGE_VALIDATION_PICTOFLORA = "pictoflora_page_validation"; |
public static final String PAGE_COMPARAISON_EFLORE = "page_comparaison_eflore"; |
public static final String PARAM_ID_OBSERVATION = "id_observation"; |
/trunk/src/org/tela_botanica/del/client/gestionhistorique/GestionnaireHistorique.java |
---|
9,12 → 9,14 |
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret; |
import org.tela_botanica.del.client.vues.comparaisoneflore.ComparaisonEflorePresenteur; |
import org.tela_botanica.del.client.vues.comparaisoneflore.ComparaisonEfloreVue; |
import org.tela_botanica.del.client.vues.plateformedetermination.DeterminationPresenteur; |
import org.tela_botanica.del.client.vues.plateformedetermination.DeterminationVue; |
import org.tela_botanica.del.client.vues.rechercheimages.moteur.MoteurRechercheImagePresenteur; |
import org.tela_botanica.del.client.vues.rechercheimages.moteur.MoteurRechercheImageVue; |
import org.tela_botanica.del.client.vues.rechercheobservations.moteur.MoteurRechercheObservationsPresenteur; |
import org.tela_botanica.del.client.vues.rechercheobservations.moteur.MoteurRechercheObservationsVue; |
import org.tela_botanica.del.client.vues.identiplante.moteur.MoteurIdentiplantePresenteur; |
import org.tela_botanica.del.client.vues.identiplante.moteur.MoteurIdentiplanteVue; |
import org.tela_botanica.del.client.vues.identiplante.plateformedetermination.IdentiplanteDeterminationPresenteur; |
import org.tela_botanica.del.client.vues.identiplante.plateformedetermination.IdentiplanteDeterminationVue; |
import org.tela_botanica.del.client.vues.pictoflora.moteur.MoteurPictofloraPresenteur; |
import org.tela_botanica.del.client.vues.pictoflora.moteur.MoteurPictofloraVue; |
import org.tela_botanica.del.client.vues.pictoflora.plateformedetermination.PictofloraDeterminationPresenteur; |
import org.tela_botanica.del.client.vues.pictoflora.plateformedetermination.PictofloraDeterminationVue; |
import com.google.gwt.core.shared.GWT; |
import com.google.gwt.event.logical.shared.ValueChangeEvent; |
36,7 → 38,8 |
* */ |
public void onValueChange(ValueChangeEvent<String> event) { |
//1. définition des variables |
//1. définition des variables |
String eventValue = event.getValue(); |
Panel contenu = RootPanel.get("contenu"); |
Panel zoneIdentification = RootPanel.get("zoneIdentification"); |
67,14 → 70,18 |
afficherTitreIdp(titre); |
} |
} |
//Actions en fonction de la valeur de l'évènement |
if (eventValue.equals(ConstantesNavigation.PAGE_RECHERCHE_IMAGES)) { |
cache.setHome(ConstantesNavigation.PAGE_RECHERCHE_IMAGES); |
lancerMoteurRechercheImages(contenu); |
} else if (eventValue.contains(ConstantesNavigation.PAGE_VALIDATION)) { |
DeterminationPresenteur presenteur = new DeterminationPresenteur(new DeterminationVue(), new ObservationServiceConcret(), new ProtocoleServiceConcret()); |
} else if (eventValue.startsWith(ConstantesNavigation.PAGE_VALIDATION)) { |
afficherTitreIdp(titre); |
IdentiplanteDeterminationPresenteur presenteur = new IdentiplanteDeterminationPresenteur(new IdentiplanteDeterminationVue(), new ObservationServiceConcret()); |
presenteur.go(contenu); |
} else if (eventValue.startsWith(ConstantesNavigation.PAGE_VALIDATION_PICTOFLORA)) { |
afficherTitrePictoFlora(titre); |
PictofloraDeterminationPresenteur presenteur = new PictofloraDeterminationPresenteur(new PictofloraDeterminationVue(), new ObservationServiceConcret(), new ProtocoleServiceConcret()); |
presenteur.go(contenu); |
} else if (eventValue.equals(ConstantesNavigation.PAGE_COMPARAISON_EFLORE)) { |
ComparaisonEflorePresenteur presenteur = new ComparaisonEflorePresenteur(new ComparaisonEfloreVue(), new ImageServiceConcret()); |
presenteur.go(contenu); |
118,7 → 125,7 |
* @param Panel panneau le panneau pour afficher le résultat |
* */ |
public void lancerMoteurRechercheObservation(Panel panneau) { |
MoteurRechercheObservationsPresenteur presenteur = new MoteurRechercheObservationsPresenteur(new ObservationServiceConcret(), new MoteurRechercheObservationsVue()); |
MoteurIdentiplantePresenteur presenteur = new MoteurIdentiplantePresenteur(new ObservationServiceConcret(), new MoteurIdentiplanteVue()); |
presenteur.go(panneau); |
} |
127,7 → 134,7 |
* @param Panel panneau le panneau pour afficher le résultat |
* */ |
public void lancerMoteurRechercheImages(Panel panneau) { |
MoteurRechercheImagePresenteur presenteur = new MoteurRechercheImagePresenteur(new MoteurRechercheImageVue(), new ProtocoleServiceConcret()); |
MoteurPictofloraPresenteur presenteur = new MoteurPictofloraPresenteur(new MoteurPictofloraVue(), new ProtocoleServiceConcret()); |
presenteur.go(panneau); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/observations/ObservationImagesPresenteur.java |
---|
15,7 → 15,9 |
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation; |
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation; |
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation; |
import org.tela_botanica.del.client.navigation.evenement.validationobservationpictoflora.EvenementValidationPictoflora; |
import com.google.gwt.core.shared.GWT; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
85,15 → 87,26 |
} |
protected void gererEvenements() { |
vue.getLienPlateforme().addClickHandler(new ClickHandler() { |
if (this.page.equals(ConstantesNavigation.PAGE_VALIDATION)) { |
vue.getLienPlateforme().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent arg0) { |
BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation)); |
} |
}); |
} else { |
vue.getLienPlateforme().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent arg0) { |
BusEvenementiel.getInstance().fireEvent(new EvenementValidationPictoflora(observation)); |
} |
}); |
} |
@Override |
public void onClick(ClickEvent arg0) { |
BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation)); |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() { |
@Override |
/trunk/src/org/tela_botanica/del/client/composants/commentaires/LigneCommentaireVue.ui.xml |
---|
1,7 → 1,7 |
<!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"> |
xmlns:vues="urn:import:org.tela_botanica.del.client.composants.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="ligneCommentaire.css" /> |
/trunk/src/org/tela_botanica/del/client/composants/commentaires/DetailCommentaireVue.ui.xml |
---|
2,7 → 2,7 |
<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"> |
xmlns:vues="urn:import:org.tela_botanica.del.client.composants.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="detailCommentaireVue.css" /> |
<g:HTMLPanel styleName="{style.conteneurTableauVotes}"> |
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulaireproposition/FormulairePropositionVue.ui.xml |
---|
2,7 → 2,7 |
<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"> |
xmlns:vues="urn:import:org.tela_botanica.del.client.composants.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/> |
<ui:style src="formulaireProposition.css" /> |
/trunk/src/org/tela_botanica/del/client/composants/forum/ForumVue.ui.xml |
---|
New file |
0,0 → 1,11 |
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> |
<ui:UiBinder |
xmlns:ui='urn:ui:com.google.gwt.uibinder' |
xmlns:g='urn:import:com.google.gwt.user.client.ui' |
xmlns:vues="urn:import:org.tela_botanica.del.client.composants.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="forum.css" /> |
<g:HTMLPanel> |
<g:HTMLPanel ui:field='panneauInterventions' styleName="{style.table}" /> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/composants/forum/ForumPresenteur.java |
---|
New file |
0,0 → 1,114 |
package org.tela_botanica.del.client.composants.forum; |
import java.util.Collections; |
import java.util.List; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.forum.interventions.ForumInterventionPresenteur; |
import org.tela_botanica.del.client.composants.forum.interventions.ForumInterventionVue; |
import org.tela_botanica.del.client.modeles.Commentaire; |
import org.tela_botanica.del.client.modeles.InterventionForum; |
import org.tela_botanica.del.client.modeles.PropositionDetermination; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.GestionnaireEvenementSuppressionCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.EvenementSuppressionDetermination; |
import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.GestionnaireEvenementSuppressionDetermination; |
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret; |
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret; |
import org.tela_botanica.del.client.utils.ComparateurPropositionDetermination; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class ForumPresenteur { |
public interface Vue extends IsWidget { |
public abstract HasWidgets getPanneauInterventions(); |
public abstract void vider(); |
} |
private Vue vue; |
public ForumPresenteur(Vue vue) { |
this.vue = vue; |
} |
public void go(HasWidgets composite) { |
chargerDeterminations(); |
composite.add(vue.asWidget()); |
gererEvenements(); |
} |
private void chargerDeterminations() { |
vue.vider(); |
List<PropositionDetermination> interventions = CacheClient.getInstance().getObservationCourante().getPropositionDeterminations(); |
Collections.sort(interventions, new ComparateurPropositionDetermination()); |
for (InterventionForum interventionCourante : interventions) { |
ForumInterventionPresenteur presenteur = new ForumInterventionPresenteur(new ForumInterventionVue(), interventionCourante, new CommentaireServiceConcret(), new PropositionDeterminationServiceConcret()); |
presenteur.go(vue.getPanneauInterventions()); |
ajouterCommentairesRecursivement(interventionCourante, presenteur); |
} |
List<Commentaire> commentaires = CacheClient.getInstance().getObservationCourante().getCommentairesForum(); |
for (InterventionForum interventionCourante : commentaires) { |
ForumInterventionPresenteur presenteur = new ForumInterventionPresenteur(new ForumInterventionVue(), interventionCourante, new CommentaireServiceConcret(), new PropositionDeterminationServiceConcret()); |
presenteur.go(vue.getPanneauInterventions()); |
ajouterCommentairesRecursivement(interventionCourante, presenteur); |
} |
} |
private void ajouterCommentairesRecursivement(InterventionForum interventionCourante, ForumInterventionPresenteur presenteur) { |
List<Commentaire> fils = interventionCourante.getListeCommentaires(); |
for (InterventionForum interventionFils : fils) { |
ForumInterventionPresenteur presenteurFils = new ForumInterventionPresenteur(new ForumInterventionVue(), interventionFils, new CommentaireServiceConcret(), new PropositionDeterminationServiceConcret()); |
ajouterCommentairesRecursivement(interventionFils, presenteurFils); |
presenteur.ajouterEnfant(presenteurFils); |
} |
} |
private void gererEvenements() { |
BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() { |
@Override |
public void onAjoutDetermination(EvenementAjoutDetermination event) { |
chargerDeterminations(); |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() { |
@Override |
public void onAjoutCommentaire(EvenementAjoutCommentaire event) { |
chargerDeterminations(); |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementSuppressionDetermination.TYPE, new GestionnaireEvenementSuppressionDetermination() { |
@Override |
public void onSuppressionDetermination(EvenementSuppressionDetermination event) { |
chargerDeterminations(); |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementSuppressionCommentaire.TYPE, new GestionnaireEvenementSuppressionCommentaire() { |
@Override |
public void onSuppressionCommentaire(EvenementSuppressionCommentaire event) { |
chargerDeterminations(); |
} |
}); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/forum/interventions/ForumInterventionVue.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.composants.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="forumIntervention.css" /> |
<g:FocusPanel ui:field="proposition" styleName="{style.proposition}"> |
<g:HTMLPanel> |
<g:FocusPanel ui:field="conteneurLienSuppression" styleName="{style.suppression}"> |
<g:HTML ui:field="supprimer" /> |
</g:FocusPanel> |
<g:HTMLPanel styleName="gauche nettoyage" ui:field="zoneDetermination"> |
<g:Label ui:field="nomTaxon" styleName="{style.nomtaxon}" /> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="droite" ui:field="zoneVoter"> |
<g:HorizontalPanel> |
<g:Label text="Score " styleName="petit" /> |
<g:Label text="Voter" styleName="{style.labelVoter} petit" /> |
</g:HorizontalPanel> |
<g:HTMLPanel ui:field="voter" styleName="{style.voter} gauche" /> |
<g:FocusPanel ui:field="conteneurPanneauVotes" styleName="{style.nombreVotes}"> |
<g:HTML ui:field="nbVotesHtml" styleName="{style.infobulle}"/> |
</g:FocusPanel> |
</g:HTMLPanel> |
<g:Label text="Détermination proposée par " ui:field="labelDeterminationProposee" styleName="{style.determination} petit" /> |
<g:Label ui:field="nom" styleName="{style.nom} petit gauche" /> |
<g:Label text="le" styleName="{style.le} gauche petit"/> |
<g:Label ui:field="date" styleName="{style.date} gauche petit"/> |
<g:Label ui:field="commentaire" styleName="{style.commentaire}"/> |
<g:Label text="Répondre" styleName="{style.repondre} labelLien" ui:field="repondre"/> |
<g:HTML><br /></g:HTML> |
<g:HTMLPanel ui:field="zoneEnfants"></g:HTMLPanel> |
</g:HTMLPanel> |
</g:FocusPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/composants/forum/interventions/ForumInterventionPresenteur.java |
---|
New file |
0,0 → 1,266 |
package org.tela_botanica.del.client.composants.forum.interventions; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue; |
import org.tela_botanica.del.client.composants.forum.ArbreCommentairePresenteur; |
import org.tela_botanica.del.client.composants.forum.ArbreCommentaireVue; |
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVotePresenteur; |
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVoteVue; |
import org.tela_botanica.del.client.composants.votes.details.DetailListeVotesDeterminationPresenteur; |
import org.tela_botanica.del.client.composants.votes.details.DetailListeVotesDeterminationVue; |
import org.tela_botanica.del.client.config.Config; |
import org.tela_botanica.del.client.i18n.I18n; |
import org.tela_botanica.del.client.modeles.Commentaire; |
import org.tela_botanica.del.client.modeles.InterventionForum; |
import org.tela_botanica.del.client.modeles.MoyenneVote; |
import org.tela_botanica.del.client.modeles.PropositionDetermination; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination; |
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.EvenementSuppressionDetermination; |
import org.tela_botanica.del.client.services.CalculVoteDeterminationService; |
import org.tela_botanica.del.client.services.rest.CommentaireService; |
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret; |
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService; |
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret; |
import org.tela_botanica.del.client.services.rest.async.SuppressionCommentaireCallback; |
import org.tela_botanica.del.client.services.rest.async.SuppressionPropositionDeterminationCallback; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.event.dom.client.HasMouseOutHandlers; |
import com.google.gwt.event.dom.client.HasMouseOverHandlers; |
import com.google.gwt.event.dom.client.MouseOutEvent; |
import com.google.gwt.event.dom.client.MouseOutHandler; |
import com.google.gwt.event.dom.client.MouseOverEvent; |
import com.google.gwt.event.dom.client.MouseOverHandler; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class ForumInterventionPresenteur { |
public interface Vue extends IsWidget { |
void ajouterInterventionDetermination(PropositionDetermination determination, IsWidget barreRepartition, IsWidget arbreCommentaires); |
void ajouterInterventionCommentaire(Commentaire commentaire, IsWidget arbreCommentaires); |
HasClickHandlers getRepondre(); |
HasWidgets getEnfants(); |
HasClickHandlers getLienSuppression(); |
void afficherLienSuppression(); |
void cacherLienSuppression(); |
HasMouseOverHandlers getConteneurInterventionMouseOver(); |
HasMouseOutHandlers getConteneurInterventionMouseOut(); |
HasClickHandlers getEspece(); |
void ajouterLienEspece(); |
HasClickHandlers getAuteur(); |
void ajouterLienAuteur(); |
void cacherDeterminationProposee(); |
void ajouterLienVotes(); |
void masquerLienVotes(); |
void setNbVotes(int votes); |
public HasClickHandlers getZoneNbVotes(); |
} |
private Vue vue; |
private InterventionForum interventionForum; |
private CommentaireService commentaireService; |
private PropositionDeterminationService propositionDeterminationService; |
private FenetreOverlaySimplePresenteur overlay; |
private int nbVotes; |
public ForumInterventionPresenteur(Vue vue, InterventionForum interventionForum, CommentaireService commentaireService, PropositionDeterminationService propositionDeterminationService) { |
this.vue = vue; |
this.interventionForum = interventionForum; |
this.commentaireService = commentaireService; |
this.propositionDeterminationService = propositionDeterminationService; |
} |
public void go(HasWidgets composite) { |
chargerIntervention(); |
composite.add(vue.asWidget()); |
gererEvenements(); |
} |
public void ajouterEnfant(ForumInterventionPresenteur presenteur) { |
presenteur.go(vue.getEnfants()); |
} |
private void chargerIntervention() { |
if (interventionForum instanceof PropositionDetermination) { |
ajouterPropositionDetermination((PropositionDetermination) interventionForum); |
} else if (interventionForum instanceof Commentaire) { |
ajouterCommentaire((Commentaire) interventionForum); |
vue.cacherDeterminationProposee(); |
} |
} |
private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) { |
this.nbVotes = propositionDetermination.getVotesDeterminations().size(); |
BarreRepartitionVotePresenteur barreRepartitionVotePresenteur = new BarreRepartitionVotePresenteur(new BarreRepartitionVoteVue(), new VoteDeterminationServiceConcret()); |
barreRepartitionVotePresenteur.toggleNomEspece(); |
calculerEtAfficherVoteDetermination(barreRepartitionVotePresenteur, propositionDetermination); |
ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), propositionDetermination); |
vue.ajouterInterventionDetermination(propositionDetermination, barreRepartitionVotePresenteur.getBarreRepartitionVoteVue(), arbreCommentairePresenteur.getArbreCommentaireVue()); |
final String nn = propositionDetermination.getNumNomenclatural(); |
if (nn != null) { |
vue.ajouterLienEspece(); |
vue.getEspece().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("efloreTaxon") + nn, "Fiche eflore", null); |
} |
}); |
} |
final String idContributeur = propositionDetermination.getContributeur().getId(); |
if (idContributeur != null) { |
vue.ajouterLienAuteur(); |
vue.getAuteur().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Config config = new Config(); |
Window.open(config.getUrl("annuaire") + idContributeur, "Consultation de l'annuaire", null); |
} |
}); |
} |
} |
private void ajouterCommentaire(Commentaire proposition) { |
ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), proposition); |
vue.ajouterInterventionCommentaire(proposition, arbreCommentairePresenteur.getArbreCommentaireVue()); |
} |
private void calculerEtAfficherVoteDetermination(BarreRepartitionVotePresenteur barreRepartitionVotePresenteur, PropositionDetermination propositionDetermination) { |
MoyenneVote votes = CalculVoteDeterminationService.calculerVoteDetermination(propositionDetermination); |
barreRepartitionVotePresenteur.afficherVotes(votes); |
} |
private void gererEvenements() { |
if (this.nbVotes > 0) { |
vue.setNbVotes(this.nbVotes); |
vue.ajouterLienVotes(); |
vue.getZoneNbVotes().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
if (nbVotes > 0) { |
FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur( |
new FenetreOverlayDefilanteVue()); |
DetailListeVotesDeterminationPresenteur detailListeVotesDeterminationPresenteur = new DetailListeVotesDeterminationPresenteur( |
new DetailListeVotesDeterminationVue()); |
fenetreOverlaySimplePresenteur |
.ouvrirFenetreModale(detailListeVotesDeterminationPresenteur); |
detailListeVotesDeterminationPresenteur |
.afficherVotes((PropositionDetermination) interventionForum); |
} |
} |
}); |
} else { |
vue.masquerLienVotes(); |
} |
vue.getRepondre().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(interventionForum, new CommentaireServiceConcret(), new FormulaireCommentaireVue()); |
overlay = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
overlay.ouvrirFenetreModale(commentairePresenteur); |
} |
}); |
vue.getConteneurInterventionMouseOver().addMouseOverHandler(new MouseOverHandler() { |
@Override |
public void onMouseOver(MouseOverEvent event) { |
if(peutSupprimerIntervention()) { |
vue.afficherLienSuppression(); |
} |
} |
}); |
vue.getConteneurInterventionMouseOut().addMouseOutHandler(new MouseOutHandler() { |
@Override |
public void onMouseOut(MouseOutEvent event) { |
if(peutSupprimerIntervention()) { |
vue.cacherLienSuppression(); |
} |
} |
}); |
vue.getLienSuppression().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
String message = ""; |
if (interventionForum instanceof PropositionDetermination) { |
message = I18n.getVocabulary().confirmationSuppressionDetermination(); |
} else if (interventionForum instanceof Commentaire) { |
message = I18n.getVocabulary().confirmationSuppressionCommentaire(); |
} |
if(Window.confirm(message)) { |
supprimerIntervention(); |
} |
} |
}); |
vue.cacherLienSuppression(); |
BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() { |
@Override |
public void onAjoutDetermination(EvenementAjoutDetermination event) { |
if(overlay != null && overlay.fenetreModaleEstOuverte()) { |
overlay.fermerFenetreModale(); |
} |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() { |
@Override |
public void onAjoutCommentaire(EvenementAjoutCommentaire event) { |
if(overlay != null && overlay.fenetreModaleEstOuverte()) { |
overlay.fermerFenetreModale(); |
} |
} |
}); |
} |
private boolean peutSupprimerIntervention() { |
return (!interventionForum.aDesCommentaires() && interventionForum.getContributeur() != null && interventionForum.getContributeur().getId().equals(CacheClient.getInstance().getUtilisateur().getId())); |
} |
private void supprimerIntervention() { |
if(interventionForum instanceof PropositionDetermination) { |
propositionDeterminationService.supprimerProposition((PropositionDetermination)interventionForum, new SuppressionPropositionDeterminationCallback() { |
@Override |
public void surRetour(String objetRetour) { |
CacheClient.getInstance().getObservationCourante().supprimerIntervention(interventionForum); |
BusEvenementiel.getInstance().fireEvent(new EvenementSuppressionDetermination((PropositionDetermination)interventionForum)); |
} |
}); |
} |
if(interventionForum instanceof Commentaire) { |
commentaireService.supprimerCommentaire((Commentaire)interventionForum, new SuppressionCommentaireCallback() { |
@Override |
public void surRetour(String objetRetour) { |
CacheClient.getInstance().getObservationCourante().supprimerIntervention(interventionForum); |
BusEvenementiel.getInstance().fireEvent(new EvenementSuppressionCommentaire((Commentaire)interventionForum)); |
} |
}); |
} |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/forum/interventions/ForumInterventionVue.java |
---|
New file |
0,0 → 1,166 |
package org.tela_botanica.del.client.composants.forum.interventions; |
import org.tela_botanica.del.client.composants.forum.interventions.ForumInterventionPresenteur.Vue; |
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.event.dom.client.HasClickHandlers; |
import com.google.gwt.event.dom.client.HasMouseOutHandlers; |
import com.google.gwt.event.dom.client.HasMouseOverHandlers; |
import com.google.gwt.i18n.client.DateTimeFormat; |
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.HTML; |
import com.google.gwt.user.client.ui.HTMLPanel; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.Hyperlink; |
import com.google.gwt.user.client.ui.IsWidget; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class ForumInterventionVue extends Composite implements Vue { |
private static ForumUIiBinder uiBinder = GWT.create(ForumUIiBinder.class); |
interface ForumUIiBinder extends UiBinder<Widget, ForumInterventionVue> { |
}; |
@UiField |
FocusPanel proposition; |
@UiField |
Label nom, nomTaxon, date, commentaire, repondre, labelDeterminationProposee; |
@UiField |
HTMLPanel voter, zoneVoter, zoneDetermination, zoneEnfants; |
@UiField |
FocusPanel conteneurLienSuppression; |
@UiField |
HTML supprimer, nbVotesHtml; |
@UiField |
FocusPanel conteneurPanneauVotes; |
public ForumInterventionVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
@Override |
public HasClickHandlers getLienSuppression() { |
return conteneurLienSuppression; |
} |
@Override |
public void afficherLienSuppression() { |
conteneurLienSuppression.removeStyleName("invisible"); |
} |
@Override |
public void cacherLienSuppression() { |
conteneurLienSuppression.addStyleName("invisible"); |
} |
@Override |
public void ajouterInterventionDetermination(PropositionDetermination determination, IsWidget barreRepartition, IsWidget arbreCommentaires) { |
nom.setText(determination.getAuteur()); |
nomTaxon.setText(determination.getEspece()); |
voter.add(barreRepartition); |
date.setText(DateTimeFormat.getFormat("dd/MM/yyyy").format(determination.getDate())); |
commentaire.setText(determination.getCommentaire()); |
if (determination.estFils()) { |
proposition.setStyleName("enfant"); |
} |
} |
@Override |
public void ajouterInterventionCommentaire(Commentaire nouveauCommentaire, IsWidget arbreCommentaires) { |
zoneVoter.setVisible(false); |
zoneDetermination.setVisible(false); |
nom.setText(nouveauCommentaire.getAuteur()); |
date.setText(DateTimeFormat.getFormat("dd/MM/yyyy").format(nouveauCommentaire.getDate())); |
commentaire.setText(nouveauCommentaire.getCommentaire()); |
if (nouveauCommentaire.estFils()) { |
proposition.setStyleName("enfant"); |
} |
} |
@Override |
public HasClickHandlers getRepondre() { |
return repondre; |
} |
@Override |
public HasWidgets getEnfants() { |
return zoneEnfants; |
} |
@Override |
public HasMouseOverHandlers getConteneurInterventionMouseOver() { |
return proposition; |
} |
@Override |
public HasMouseOutHandlers getConteneurInterventionMouseOut() { |
return proposition; |
} |
public HasClickHandlers getEspece() { |
return nomTaxon; |
} |
public void ajouterLienEspece() { |
nomTaxon.addStyleName("labelLien"); |
} |
public HasClickHandlers getAuteur() { |
return nom; |
} |
public void ajouterLienAuteur() { |
nom.addStyleName("lien"); |
nom.setTitle("Voir le profil"); |
} |
public void cacherDeterminationProposee() { |
labelDeterminationProposee.setVisible(false); |
} |
@Override |
public void ajouterLienVotes() { |
conteneurPanneauVotes.addStyleName("nombreVotes"); |
} |
public void masquerLienVotes() { |
conteneurPanneauVotes.removeStyleName("nombreVotes"); |
nbVotesHtml.setVisible(false); |
} |
@Override |
public void setNbVotes(int votes) { |
nbVotesHtml.setText(String.valueOf(votes)); |
} |
public HasClickHandlers getZoneNbVotes() { |
return this.conteneurPanneauVotes; |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/forum/interventions/forumIntervention.css |
---|
New file |
0,0 → 1,82 |
.nombreVotes { |
width:15px; |
height:16px; |
padding-left: 10px; |
float:right; |
margin-left:10px; |
} |
.infobulle { |
background: none repeat scroll 0 0 #1A5AC3; |
color: white; |
font-size: 11px; |
height: 11px; |
line-height: 0.9; |
margin-left: 2px; |
margin-top: 8px; |
min-width: 7px; |
padding: 1px; |
position: absolute; |
} |
.proposition { |
width:550px; |
padding:10px; |
background:#EEE; |
margin-bottom:5px; |
} |
.nom { |
margin-right:4px; |
margin-top:1px; |
} |
.le { |
margin-top:1px; |
} |
.date { |
margin-left:3px; |
margin-top:1px; |
} |
.determination { |
clear:left; |
float:left; |
margin-top:1px; |
margin-right:3px; |
} |
.nomtaxon { |
float:left; |
font-size:15px; |
} |
.voter div{ |
font-size:18px; |
color:#333; |
text-align:right; |
margin-bottom:-3px; |
} |
.commentaire { |
clear:left |
} |
.daccord { |
clear:left; |
margin-right:5px; |
} |
.repondre { |
margin-top:3px; |
float:left; |
cursor:pointer; |
margin-bottom:5px; |
font-size:10px; |
} |
.suppression { |
width:15px; |
height:16px; |
background:url('./img/cancel.png') no-repeat; |
cursor: pointer; |
margin-top:-15px; |
margin-left:99%; |
position:relative; |
} |
.labelVoter { |
padding-left:9px; |
} |
/trunk/src/org/tela_botanica/del/client/composants/forum/ForumVue.java |
---|
New file |
0,0 → 1,36 |
package org.tela_botanica.del.client.composants.forum; |
import org.tela_botanica.del.client.composants.forum.ForumPresenteur.Vue; |
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.HTMLPanel; |
import com.google.gwt.user.client.ui.Widget; |
public class ForumVue extends Composite implements Vue { |
private static ForumUIiBinder uiBinder = GWT.create(ForumUIiBinder.class); |
interface ForumUIiBinder extends UiBinder<Widget, ForumVue> { |
}; |
@UiField |
HTMLPanel panneauInterventions; |
public ForumVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
@Override |
public HTMLPanel getPanneauInterventions() { |
return panneauInterventions; |
} |
@Override |
public void vider() { |
panneauInterventions.clear(); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/forum/ArbreCommentairePresenteur.java |
---|
New file |
0,0 → 1,40 |
package org.tela_botanica.del.client.composants.forum; |
import org.tela_botanica.del.client.modeles.InterventionForum; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class ArbreCommentairePresenteur { |
private InterventionForum possesseurDeCommentaires; |
public interface Vue extends IsWidget { |
public void creerArbreCommentaire(InterventionForum possesseurDeCommentaires); |
} |
private Vue vue; |
public ArbreCommentairePresenteur(Vue vue, InterventionForum possesseurDeCommentaires) { |
this.vue = vue; |
this.possesseurDeCommentaires = possesseurDeCommentaires; |
vue.creerArbreCommentaire(this.possesseurDeCommentaires); |
} |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
} |
public IsWidget getArbreCommentaireVue() { |
return vue; |
} |
public InterventionForum getPossesseurDeCommentaires() { |
return possesseurDeCommentaires; |
} |
public void gererEvenements() { |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/forum/ArbreCommentaireVue.java |
---|
New file |
0,0 → 1,50 |
package org.tela_botanica.del.client.composants.forum; |
import java.util.ArrayList; |
import java.util.Date; |
import java.util.List; |
import org.tela_botanica.del.client.modeles.Commentaire; |
import org.tela_botanica.del.client.modeles.InterventionForum; |
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.Tree; |
import com.google.gwt.user.client.ui.TreeItem; |
public class ArbreCommentaireVue extends Tree implements ArbreCommentairePresenteur.Vue { |
public ArbreCommentaireVue() { |
super(); |
} |
public void creerArbreCommentaire(InterventionForum possesseurDeCommentaires) { |
TreeItem racineArbreCommentaires = new TreeItem(); |
addItem(racineArbreCommentaires); |
if (possesseurDeCommentaires instanceof Commentaire) { |
List<Commentaire> commentaires = new ArrayList<Commentaire>(); |
commentaires.add((Commentaire) possesseurDeCommentaires); |
creerListeCommentaireRecursive(racineArbreCommentaires, commentaires); |
} else { |
creerListeCommentaireRecursive(racineArbreCommentaires, possesseurDeCommentaires.getListeCommentaires()); |
} |
} |
private void creerListeCommentaireRecursive(TreeItem parentTreeItem, List<Commentaire> commentaires) { |
for (Commentaire commentaire : commentaires) { |
String commentaireHTML = commentaire.getCommentaire(); |
HTML commentaireWidget = new HTML(commentaireHTML); |
parentTreeItem.setWidget(commentaireWidget); |
if (commentaire.getListeCommentaires().size() != 0) { |
TreeItem childTreeItem = new TreeItem(); |
parentTreeItem.addItem(childTreeItem); |
creerListeCommentaireRecursive(childTreeItem, commentaire.getListeCommentaires()); |
} |
} |
parentTreeItem.setState(true); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/forum/forum.css |
---|
New file |
0,0 → 1,0 |
.table {} |
/trunk/src/org/tela_botanica/del/client/composants/votes/details/LigneVoteVue.ui.xml |
---|
1,7 → 1,7 |
<!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"> |
xmlns:vues="urn:import:org.tela_botanica.del.client.composants.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="ligneVote.css" /> |
/trunk/src/org/tela_botanica/del/client/composants/votes/details/DetailListeVotesDeterminationVue.ui.xml |
---|
2,7 → 2,7 |
<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"> |
xmlns:vues="urn:import:org.tela_botanica.del.client.composants.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="detailListeVotesDeterminationVue.css" /> |
<g:HTMLPanel styleName="{style.conteneurTableauVotes}"> |
/trunk/src/org/tela_botanica/del/client/composants/formulairerechercheeflore/FormulaireRechercheEfloreVue.ui.xml |
---|
New file |
0,0 → 1,18 |
<!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="formulaireRechercheEflore.css" /> |
<g:VerticalPanel> |
<g:Label text="{constants.comparer}" styleName="sousTitre"/> |
<g:Label text="{constants.infoComparer}" styleName="petit"/> |
<g:HTML><br /></g:HTML> |
<g:HorizontalPanel > |
<g:HTMLPanel ui:field="propositionTaxon" styleName="{style.propositionTaxon}" /> |
<g:Button text="{constants.ok}" ui:field="boutonValidationRechercheObservation" /> |
</g:HorizontalPanel> |
</g:VerticalPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/composants/formulairerechercheeflore/FormulaireRechercheEflorePresenteur.java |
---|
New file |
0,0 → 1,80 |
package org.tela_botanica.del.client.composants.formulairerechercheeflore; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxPresenteur; |
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxVue; |
import org.tela_botanica.del.client.config.Config; |
import org.tela_botanica.del.client.i18n.I18n; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.comparaisoneflore.EvenementComparaisonEflore; |
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.KeyCodes; |
import com.google.gwt.event.dom.client.KeyPressEvent; |
import com.google.gwt.event.dom.client.KeyPressHandler; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.user.client.ui.HasWidgets; |
public class FormulaireRechercheEflorePresenteur { |
private FormulaireRechercheEfloreVue formulaireRechercheEfloreVue = new FormulaireRechercheEfloreVue(); |
private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur; |
public FormulaireRechercheEflorePresenteur() { |
creerCompletionTaxons(); |
} |
public void go(HasWidgets composite) { |
autoCompletionNomTaxonsPresenteur.go(formulaireRechercheEfloreVue.getPropositionTaxon()); |
composite.add(formulaireRechercheEfloreVue); |
gererEvenements(); |
} |
private void gererEvenements() { |
formulaireRechercheEfloreVue.getBoutonValidationRechercheObservation().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
lancerRechercheEflore(); |
} |
}); |
autoCompletionNomTaxonsPresenteur.getAutoCompletionComboBoxVue().getSuggestBoxHasKeyPressHandlers().addKeyPressHandler(new KeyPressHandler() { |
@Override |
public void onKeyPress(KeyPressEvent event) { |
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) { |
lancerRechercheEflore(); |
} |
} |
}); |
} |
private void creerCompletionTaxons() { |
String url = new Config().getServiceBaseUrl() + "nomstaxons"; |
autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) { |
protected String effectuerPreTraitementChaineRequete(String requete) { |
requete = "?masque.nom=" + requete; |
return UtilitairesAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete); |
} |
@Override |
protected String[] parserResultatRequete(Response response) { |
return UtilitairesAutoCompletionService.parserResultatRetourSimple(response); |
} |
}; |
} |
private void lancerRechercheEflore() { |
CacheClient.getInstance().setTaxonPourRechercheEflore(autoCompletionNomTaxonsPresenteur.getValeur()); |
EvenementComparaisonEflore evenementComparaisonEflore = new EvenementComparaisonEflore(autoCompletionNomTaxonsPresenteur.getValeur()); |
BusEvenementiel.getInstance().fireEvent(evenementComparaisonEflore); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/formulairerechercheeflore/FormulaireRechercheEfloreVue.java |
---|
New file |
0,0 → 1,38 |
package org.tela_botanica.del.client.composants.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.HasText; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class FormulaireRechercheEfloreVue extends Composite { |
@UiField(provided = true) |
public Button boutonValidationRechercheObservation = new Button(); |
@UiField |
public Panel propositionTaxon; |
interface FormulaireRechercheEfloreUIiBinder extends UiBinder<Widget, FormulaireRechercheEfloreVue> { |
}; |
FormulaireRechercheEfloreUIiBinder uiBinder = GWT.create(FormulaireRechercheEfloreUIiBinder.class); |
public FormulaireRechercheEfloreVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
public Button getBoutonValidationRechercheObservation() { |
return boutonValidationRechercheObservation; |
} |
public Panel getPropositionTaxon() { |
return propositionTaxon; |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/formulairerechercheeflore/formulaireRechercheEflore.css |
---|
New file |
0,0 → 1,4 |
.propositionTaxon { |
width: 150px; |
height: 30px; |
} |