Rev 50 | Rev 54 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.observation;import org.tela_botanica.client.CarnetEnLigneMediateur;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.ListeObservation;import org.tela_botanica.client.modeles.Observation;import org.tela_botanica.client.vues.FormulaireSaisieObservationVue;import org.tela_botanica.client.vues.ListeObservationVue;import com.google.gwt.core.client.GWT;import com.gwtext.client.core.EventObject;import com.gwtext.client.core.RegionPosition;import com.gwtext.client.widgets.Panel;import com.gwtext.client.widgets.TabPanel;import com.gwtext.client.widgets.layout.BorderLayout;import com.gwtext.client.widgets.layout.BorderLayoutData;import com.gwtext.client.widgets.layout.RowLayout;/*** Mediateur gérant les interactions entre vues et les echanges de données* C'est un singleton.* @author aurelien**/public class ObservationMediateur {/*** booleen qui verifie l'unicite de l'instance (donc static)*/private static boolean estInstancie = false ;/*** pointeur sur le médiateur (pour le pattern singleton)*/private static ObservationMediateur thisMediateur = null ;/** Mediateur general de l'application carnet en ligne***/private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;/*** modele de données*/private ObservationModele observationModele = null ;/*** panneau principal des Observation (onglet "observation")*/private final Panel panneauPrincipalObservation = new Panel("Observation");/*** liste détaillée des Observations*/private ListeObservationVue listeObservation = null ;/*** Saisie des Observations*/private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;/*** booleen explicitant s'il y a une selection en cours*/private boolean selection = false ;/*** La liste des observations affichées en cours (verifier utilité)*/private ListeObservation cacheObservation = new ListeObservation(0) ;/**/*** panneau conteneur pour le panneau des informations lies à l'observation*/private Panel details = new Panel("Détails");/*** panneau conteneur pour le panneau des filtres*/private Panel filtres = new Panel("Filtres");/*** constructeur privé (on accède a la classe par la méthode getInstance*/private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur ){this.carnetEnLigneMediateur=carnetEnLigneMediateur;// on crée un modèleobservationModele = ObservationModele.Instance(this);listeObservation = new ListeObservationVue(this);listeObservation.setTitle("Observations");// quelques variables de position pour les borderlayoutsfinal BorderLayoutData regionNord = new BorderLayoutData(RegionPosition.NORTH);final BorderLayoutData regionCentre = new BorderLayoutData(RegionPosition.CENTER);final BorderLayoutData regionEst = new BorderLayoutData(RegionPosition.EAST);if (GWT.isScript()) { // FIXME : ne fonctionne pas en mode hostedregionEst.setSplit(true);}final BorderLayoutData regionOuest = new BorderLayoutData(RegionPosition.WEST);if (GWT.isScript()) { // FIXME : ne fonctionne pas en mode hostedregionOuest.setSplit(true);}panneauPrincipalObservation.setLayout(new BorderLayout()) ;// Le formulaire de saisie / modification d'observationformulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);formulaireSaisieObservationVue.setTitle("Saisie");formulaireSaisieObservationVue.setTitleCollapse(true);formulaireSaisieObservationVue.setCollapsible(true) ;Panel centre = new Panel();centre.setLayout(new RowLayout());centre.add(formulaireSaisieObservationVue);centre.add(listeObservation);// on initialise le volet qui contient les detailsdetails.setWidth("15%");details.setTitleCollapse(true);details.setCollapsible(true);// on initialise le volet qui contient filtresfiltres.setWidth("10%");filtres.setTitleCollapse(true);filtres.setCollapsible(true);panneauPrincipalObservation.add(details,regionEst);panneauPrincipalObservation.add(filtres,regionOuest);panneauPrincipalObservation.add(centre,regionCentre);// centre.doLayout();}/*** Retourne une instance de manière unique* @return l'instance unique du médiateur*/public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur){if(!estInstancie || thisMediateur == null){estInstancie = true ;thisMediateur = new ObservationMediateur(carnetEnLigneMediateur) ;}return thisMediateur ;}/*** envoie au modèle une demande de mise a jour*/public void obtenirNombreObservation() {listeObservation.masquerChargement();observationModele.obtenirNombreObservation(listeObservation) ;}/*** envoie au modèle une demande de mise a jour*/public void obtenirListeObservation() {observationModele.obtenirListeObservation(listeObservation,listeObservation.getTaillePage(),listeObservation.getPageEncours()) ;}/*** C'est dans cette fonction que doivent être renvoyé les valeurs des filtres* sous forme de tableau [nom, valeur]* @return Les noms et valeurs des filtres*/public String[][] renvoyerFiltres(){String[][] valeursFiltres = { {"",""} } ;return valeursFiltres ;}public String getIdentifiant() {return carnetEnLigneMediateur.getUtilisateur().getIdentifiant();}public Panel getPanneauPrincipalObservation() {return panneauPrincipalObservation;}/**** Lance un appel de recherche d'une liste de commune correspondant aux criteres de selectionne* @param r : la vue demandeuse de donnee* @param critere : les criteres de selection*/public void obtenirListeReferentielCommune(Rafraichissable r, String critere) {observationModele.obtenirListeReferentielCommune(r,critere) ;}/**** Lance un appel de recherche d'une liste de nom scientifique correspondant aux criteres de selectionne* @param r : la vue demandeuse de donnee* @param critere : les criteres de selection*/public void obtenirListeReferentielNom(Rafraichissable r, String critere) {observationModele.obtenirListeReferentielNom(r,critere) ;}/**** Lance la creation d'une observation* @param r : la vue demandeuse de donnee* @param critere : les criteres de selection*/public void ajouterObservation(Observation obs) {observationModele.ajouterObservation(listeObservation, obs) ;}public void clicListeObservation(int rowIndex) {}public void montrerContextMenu(EventObject e) {}public void doubleClicListeObservation(int rowIndex) {}}