Rev 41 | Blame | 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èle
observationModele = 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'observation
formulaireSaisieObservationVue = 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) {
}
}