Subversion Repositories eFlore/Applications.del

Rev

Rev 1467 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.del.client.gestionhistorique;

import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.services.rest.ImageServiceConcret;
import org.tela_botanica.del.client.services.rest.ObservationServiceConcret;
import org.tela_botanica.del.client.services.rest.ProtocoleServiceConcret;
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.entete.EntetePresenteur;
import org.tela_botanica.del.client.vues.entete.EnteteVue;
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;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.RootPanel;

/**
 * @author Benjamin
 * 
 */
public class GestionnaireHistorique implements ValueChangeHandler<String> {

        /**
         * Évènement lorsque l'historique change. L'action par défaut affiche la
         * page d'accueil.
         * */
        public void onValueChange(ValueChangeEvent<String> event) {
                //1. définition des variables
                String eventValue = event.getValue();
                GWT.log("Historique -> eventValue:"+eventValue);
                Panel contenu = RootPanel.get("contenu");
                Panel zoneEntete = RootPanel.get("zoneEnteteContenu");
                CacheClient cache = CacheClient.getInstance();
                cache.setPageCourante(eventValue);
                
                //2. nettoyer le contenu
                contenu.clear();
                zoneEntete.clear();
                
                //3. gérer l'entete
                EntetePresenteur entetePresenteur = new EntetePresenteur(new EnteteVue());
                entetePresenteur.go(zoneEntete);
                                
                //Actions en fonction de la valeur de l'évènement et de l'url
                String urlCourante = Window.Location.getHref();
                Config config = new Config();
                String urlAppliObs = config.getUrl("identiplante");
                String urlAppliImg = config.getUrl("pictoflora");
                
                if (urlCourante.contains(urlAppliImg)) {
                        if (eventValue.startsWith(ConstantesNavigation.PAGE_DETAIL_IMG)) {
                                PictofloraDeterminationPresenteur presenteur = new PictofloraDeterminationPresenteur(
                                                new PictofloraDeterminationVue(), 
                                                new ObservationServiceConcret(), 
                                                new ProtocoleServiceConcret()
                                );
                                presenteur.go(contenu);
                        } else {
                                lancerMoteurRechercheImages(contenu);
                        }
                } else if (urlCourante.contains(urlAppliObs)) {
                        if (eventValue.startsWith(ConstantesNavigation.PAGE_DETAIL_OBS)) {
                                IdentiplanteDeterminationPresenteur presenteur = new IdentiplanteDeterminationPresenteur(
                                        new IdentiplanteDeterminationVue(), 
                                        new ObservationServiceConcret()
                                );
                                presenteur.go(contenu);
                        } else if (eventValue.startsWith(ConstantesNavigation.PAGE_COMPARAISON_EFLORE)) {
                                ComparaisonEflorePresenteur presenteur = new ComparaisonEflorePresenteur(
                                        new ComparaisonEfloreVue(), 
                                        new ImageServiceConcret()
                                );
                                presenteur.go(contenu);
                        } else {
                                lancerMoteurRechercheObservation(contenu);
                        }
                } else {
                        lancerMoteurRechercheObservation(contenu);
                }

                // Mise à jour de l'url courante (re-écriture)
                CacheClient.getInstance().mettreAjourUrlCourante();
        }
        
        /**
         * Générer la page de recherche observation et l'afficher dans panneau
         * @param Panel panneau le panneau pour afficher le résultat
         * */
        public void lancerMoteurRechercheObservation(Panel panneau) {
                MoteurIdentiplantePresenteur presenteur = new MoteurIdentiplantePresenteur(new ObservationServiceConcret(), new MoteurIdentiplanteVue());
                presenteur.go(panneau);
        }
        
        /**
         * Générer la page de recherche images et l'afficher dans panneau
         * @param Panel panneau le panneau pour afficher le résultat
         * */
        public void lancerMoteurRechercheImages(Panel panneau) {
                MoteurPictofloraPresenteur presenteur = new MoteurPictofloraPresenteur(new MoteurPictofloraVue(), new ProtocoleServiceConcret());
                presenteur.go(panneau);
        }
}