Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 2109 → Rev 2171

/branches/v1.11-magnesium/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplanteVue.java
New file
0,0 → 1,146
package org.tela_botanica.del.client.vues.identiplante.moteur;
 
import org.tela_botanica.del.client.cache.CacheClient;
 
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.FocusPanel;
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.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;
 
@UiField
Label ongletTout, ongletADeterminer, ongletAConfirmer, ongletValidees;
@UiField
HTML ongletMonActivite;
 
public HasWidgets getZoneRecherche() {
return zoneRecherche;
}
// Constructeur de la vue
public MoteurIdentiplanteVue() {
initWidget(binder.createAndBindUi(this));
mettreAJourOngletEnFonctionDuCache();
}
 
public Panel getZoneResultats() {
return zoneResultats;
}
@Override
public HasClickHandlers getOngletAConfirmer() {
return ongletAConfirmer;
}
 
@Override
public HasClickHandlers getOngletADeterminer() {
return ongletADeterminer;
}
 
@Override
public HasClickHandlers getOngletTout() {
return ongletTout;
}
 
@Override
public HasClickHandlers getOngletValidees() {
return ongletValidees;
}
@Override
public void afficherCacherOngletMonActivite(boolean afficher) {
ongletMonActivite.setVisible(afficher);
}
 
@Override
public HasClickHandlers getOngletMonActivite() {
return ongletMonActivite;
}
 
@Override
public void setOngletADeterminerActif() {
nettoyerOngletsActifs();
ongletADeterminer.addStyleName("onglet-actif");
}
 
@Override
public void setOngletToutActif() {
nettoyerOngletsActifs();
ongletTout.addStyleName("onglet-actif");
}
 
@Override
public void setOngletAConfirmerActif() {
nettoyerOngletsActifs();
ongletAConfirmer.addStyleName("onglet-actif");
}
 
@Override
public void setOngletValideesActif() {
nettoyerOngletsActifs();
ongletValidees.addStyleName("onglet-actif");
}
@Override
public void setOngletMonActiviteActif() {
nettoyerOngletsActifs();
ongletMonActivite.addStyleName("onglet-actif");
}
public void nettoyerOngletsActifs() {
ongletTout.removeStyleName("onglet-actif");
ongletADeterminer.removeStyleName("onglet-actif");
ongletAConfirmer.removeStyleName("onglet-actif");
ongletValidees.removeStyleName("onglet-actif");
ongletMonActivite.removeStyleName("onglet-actif");
}
@Override
public void setOngletActif(String onglet) {
if (onglet == null || onglet.equals("tous")) {
setOngletToutActif();
} else if (onglet.equals("adeterminer")) {
setOngletADeterminerActif();
} else if (onglet.equals("aconfirmer")) {
setOngletAConfirmerActif();
} else if (onglet.equals("validees")) {
setOngletValideesActif();
} else if (onglet.equals("monactivite")) {
setOngletMonActiviteActif();
}
}
public void mettreAJourOngletEnFonctionDuCache() {
String statut = CacheClient.getInstance().getFiltreStatut();
setOngletActif(statut);
}
 
@Override
public void afficherNbEvenements(String nbEvenements) {
String HtmlIndication = "<div class=\"nbEvenementsMonActivite\">"+nbEvenements+"</div>";
ongletMonActivite.setHTML(HtmlIndication);
}
 
@Override
public void cacherNbEvenements() {
ongletMonActivite.setHTML("");
}
}
/branches/v1.11-magnesium/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplante.css
New file
0,0 → 1,35
.entrerMotClef {
margin-bottom: 10px;
font-size:12px
}
 
.lienProposerObservation {
margin-left:65px;
margin-top:10px;
margin-bottom:10px;
}
.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;
}
/branches/v1.11-magnesium/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplanteVue.ui.xml
New file
0,0 → 1,29
<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="limiteMaxResultat">
<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:HTMLPanel>
<g:HTMLPanel styleName="zone-onglets">
<g:Label styleName="onglet onglet-actif" text="{constants.ongletTous}" ui:field="ongletTout"></g:Label>
<g:Label styleName="onglet" text="{constants.ongletADeterminer}" ui:field="ongletADeterminer"></g:Label>
<g:Label styleName="onglet" text="{constants.ongletAConfirmer}" ui:field="ongletAConfirmer"></g:Label>
<!-- terme Validées/Vérifiées sujet à changement, "Vérifiées" en texte, "Validées" partout ailleurs dans le code -->
<g:Label styleName="onglet" text="{constants.ongletVerifiees}" ui:field="ongletValidees"></g:Label>
<!-- terme Validées/Vérifiées sujet à changement, "Vérifiées" en texte, "Validées" partout ailleurs dans le code -->
<g:HTML styleName="onglet ongletMonActivite" text=" " ui:field="ongletMonActivite"></g:HTML>
</g:HTMLPanel>
<g:HTMLPanel>
<g:HTMLPanel ui:field="zoneResultats" />
</g:HTMLPanel>
</g:HTMLPanel>
</ui:UiBinder>
/branches/v1.11-magnesium/src/org/tela_botanica/del/client/vues/identiplante/moteur/MoteurIdentiplantePresenteur.java
New file
0,0 → 1,212
package org.tela_botanica.del.client.vues.identiplante.moteur;
 
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.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
import org.tela_botanica.del.client.modeles.ActiviteUtilisateur;
import org.tela_botanica.del.client.modeles.ModeRecherche;
import org.tela_botanica.del.client.modeles.Utilisateur;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
import org.tela_botanica.del.client.services.rest.ObservationService;
import org.tela_botanica.del.client.services.rest.ObservationServiceConcret;
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret;
import org.tela_botanica.del.client.services.rest.async.ActiviteUtilisateurCallback;
import org.tela_botanica.del.client.utils.Analytics;
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.Timer;
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();
 
public HasClickHandlers getOngletAConfirmer();
public HasClickHandlers getOngletADeterminer();
public HasClickHandlers getOngletTout();
 
public HasClickHandlers getOngletValidees();
public HasClickHandlers getOngletMonActivite();
public void setOngletADeterminerActif();
public void setOngletToutActif();
public void setOngletAConfirmerActif();
 
public void setOngletValideesActif();
 
void afficherCacherOngletMonActivite(boolean afficher);
 
void setOngletMonActiviteActif();
 
void setOngletActif(String onglet);
 
public void afficherNbEvenements(String nbEvenements);
public void cacherNbEvenements();
}
 
private Vue vue;
private Timer timerRequeteActiviteUtilisateur = null;
 
public MoteurIdentiplantePresenteur(ObservationService serviceObs, Vue vue) {
this.vue = vue;
}
 
public void go(HasWidgets composite) {
 
composite.add(vue.asWidget());
ajouterMoteurRechercheAvancee();
gererEvenements();
gererAffichageOngletMonActivite();
gererTimerRequeteActiviteUtilisateur();
}
 
private void gererAffichageOngletMonActivite() {
vue.afficherCacherOngletMonActivite(CacheClient.getInstance().getUtilisateur().estIdentifie());
BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
@Override
public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
vue.afficherCacherOngletMonActivite(utilisateur.estIdentifie());
vue.cacherNbEvenements();
if(!utilisateur.estIdentifie()) {
activerOnglet("tous");
} else {
if(utilisateur.getActivite().getNbEvenementsInt() > 0) {
vue.afficherNbEvenements(utilisateur.getActivite().getNbEvenements());
CacheClient.ajouterAuTitreOngletNavigateur(" ("+utilisateur.getActivite().getNbEvenements()+")");
}
}
}
});
}
 
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();
CacheClient.getInstance().mettreAjourUrlCourante();
new ResultatsIdentiplantePresenteur(new ObservationServiceConcret(), new ResultatsIdentiplanteVue()).go(vue.getZoneResultats());
}
 
protected void gererEvenements() {
// Gestion du clic sur les onglets
vue.getOngletTout().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
activerOnglet("tous");
// stats
Analytics.pageVisitee("Identiplante/tous");
}
});
vue.getOngletADeterminer().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
activerOnglet("adeterminer");
// stats
Analytics.pageVisitee("Identiplante/adeterminer");
}
});
vue.getOngletAConfirmer().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
activerOnglet("aconfirmer");
// stats
Analytics.pageVisitee("Identiplante/aconfirmer");
}
});
 
vue.getOngletValidees().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
activerOnglet("validees");
// stats
Analytics.pageVisitee("Identiplante/validees");
}
});
vue.getOngletMonActivite().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// S'il y a de nouveau évènements sur l'obs, on les affichera tous sur la même page (dans la limite de 50)
int nbEvents = CacheClient.getInstance().getUtilisateur().getActivite().getNbEvenementsInt();
nbEvents = Math.min(nbEvents, 50);
if(CacheClient.getInstance().getPasPagination() < nbEvents) {
CacheClient.getInstance().setPasPagination(nbEvents);
}
activerOnglet("monactivite");
// stats
Analytics.pageVisitee("Identiplante/monactivite");
vue.cacherNbEvenements();
CacheClient.reinitialiserTitreOngletNavigateur();
}
});
}
public void gererTimerRequeteActiviteUtilisateur() {
timerRequeteActiviteUtilisateur = new Timer() {
@Override
public void run() {
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
if(utilisateur.estIdentifie()) {
UtilisateurServiceConcret serviceUtilisateur = new UtilisateurServiceConcret();
serviceUtilisateur.obtenirActiviteUtilisateur(utilisateur.getId(), new ActiviteUtilisateurCallback() {
@Override
public void surRetour(ActiviteUtilisateur activite) {
CacheClient.getInstance().getUtilisateur().setActivite(activite);
if(activite.getNbEvenementsInt() > 0) {
vue.afficherNbEvenements(activite.getNbEvenements());
CacheClient.ajouterAuTitreOngletNavigateur(" ("+activite.getNbEvenements()+")");
}
}
});
}
}
};
timerRequeteActiviteUtilisateur.scheduleRepeating(30000);
}
protected void activerOnglet(String onglet) {
CacheClient.getInstance().setFiltreStatut(onglet);
CacheClient.getInstance().setPageCouranteRechercheObservations(1);
chercherObservations();
vue.setOngletActif(onglet);
}
}