Rev 41 | Rev 48 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.observation;import java.util.Iterator;import org.tela_botanica.client.CarnetEnLigneMediateur;import org.tela_botanica.client.interfaces.FournisseurListe;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.user.client.Window;import com.gwtext.client.core.EventObject;import com.gwtext.client.data.ArrayReader;import com.gwtext.client.data.FieldDef;import com.gwtext.client.data.MemoryProxy;import com.gwtext.client.data.RecordDef;import com.gwtext.client.data.Store;import com.gwtext.client.data.StringFieldDef;import com.gwtext.client.widgets.Panel;import com.gwtext.client.widgets.TabPanel;/*** 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");/*** panneau a onglet pour la liste*/private TabPanel ongletsObservation = null ;/*** conteneur du panneau a onglets*/private Panel panneauMenuEtOngletsObservation = null ;/*** liste détaillée des Observations*/private ListeObservationVue listeObservation = null ;/*** Saisie des Observations*/private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;/*** l'indice du dernier onglet sélectionné*/private int dernierIndexOnglet = 0 ;/*** booleen explicitant s'il y a une selection en cours*/private boolean selection = false ;/*** Le store contenant les données à afficher, que le modèle transmet au médiateur quand il le demande*/private Store st = null ;/*** La liste des observations affichées en cours (verifier utilité)*/private ListeObservation cacheObservation = new ListeObservation(0) ;/**/*** 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);// on gère la mise en page du panneau principal//panneauPrincipalObservation.setLayout(new BorderLayout());// on crée le panneau qui contient les differentes onglets ainsi que le menu supérieur// panneauMenuEtOngletsObservation = new Panel("gg") ;// panneauMenuEtOngletsObservation.setLayout(new BorderLayout()) ;// le panneau à onglet qui contient la vue//ongletsObservation = new TabPanel();// la liste des observations//Panel panneauListeObservation = new Panel("Liste");listeObservation = new ListeObservationVue(this);// Le formulaire de saisie / modification d'observationformulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);//panneauListeObservation.setLayout(new FitLayout());//panneauListeObservation.setSize(600,600);//panneauListeObservation.add(listeObservation);// on ajoute les panneaux au panneau à onglets//ongletsObservation.add(panneauListeObservation);// les onglets au centre// panneauMenuEtOngletsObservation.add(ongletsObservation,regionCentre);// on ajoute le panneau qui contient le menu et les onglets d'images au centre//panneauPrincipalObservation.add(panneauMenuEtOngletsObservation,regionCentre);panneauPrincipalObservation.add(formulaireSaisieObservationVue);panneauPrincipalObservation.add(listeObservation);}/*** 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;}/*** Met à jour les barre d'outils avec des nouvelles valeurs* @param pageMax le nombre de pages* @param pageEncours la page en cours* @param taillePage la taille de page* @param nbElement le nombre d'élements par page*/public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement){int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;listeObservation.getToolBarVue().rafraichir(pages, false) ;}/**** 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(this, obs) ;}public void clicListeObservation(int rowIndex) {}public void montrerContextMenu(EventObject e) {}public void doubleClicListeObservation(int rowIndex) {}}