Rev 7 | Blame | Last modification | View Log | RSS feed
package org.tela_botanica.client;import org.tela_botanica.client.image.ImageMediateur;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.Utilisateur;import org.tela_botanica.client.observation.ObservationMediateur;import org.tela_botanica.client.vues.EtatConnexionVue;import org.tela_botanica.client.vues.FormulaireDeConnexionVue;import com.google.gwt.user.client.Window;import com.gwtext.client.widgets.Panel;import com.gwtext.client.widgets.layout.VerticalLayout;/*** Mediateur gérant les interactions entre vues et les echanges de données* C'est un singleton.* @author david delon**/public class CarnetEnLigneMediateur implements Rafraichissable {/*** booleen qui verifie l'unicite de l'instance*/private static boolean estInstancie = false ;/*** modele de données*/private CarnetEnLigneModele carnetEnLigneModele=null;/*** panneau principal de l'application "Carnet en ligne"*/private Panel panneauPrincipalCarnetEnLigne=new Panel("Carnet en ligne");/*** panneau a onglet pour les observation et les images*/private Panel ongletsObservationsImages=null;/*** Indicateur d'etat de la connexion utilisateur*/private EtatConnexionVue etatConnexionVue=null;/*** Texte d'invite connexion*/private final String texteDeconnexion="Utilisez ce carnet en ligne pour saisir vos observations, <u>identifiez-vous</u> pour les transmettre à Tela Botanica";/*** Boolean indiquant un essai de connexion*/private boolean tentativeConnection=false;/*** Formulaire de connexion (lazy instantiation)**/private FormulaireDeConnexionVue formulaireDeConnexionVue=null;/*** Mediateur Gestion des images*/private ImageMediateur imageMediateur=null;/*** Mediateur Gestion des observations*/private ObservationMediateur observationMediateur=null;/*** Utilisateur en cours*/private Utilisateur utilisateur=null;public static CarnetEnLigneMediateur Instance(){if(!estInstancie){estInstancie = true ;return new CarnetEnLigneMediateur() ;}else{return null ;}}/*** constructeur privé (on accède a la classe par la méthode getInstance*/private CarnetEnLigneMediateur() {// DispositionpanneauPrincipalCarnetEnLigne.setLayout(new VerticalLayout());// On crée un modèle d'acces aux donnnescarnetEnLigneModele=CarnetEnLigneModele.Instance();// La vue affichant le statut de la connexionetatConnexionVue=new EtatConnexionVue(this);// Le panneau à onglet qui contient les 2 applications Observation et ImagesongletsObservationsImages = new Panel();panneauPrincipalCarnetEnLigne.add(etatConnexionVue);// on ajoute le panneau a onglet au panneau principalpanneauPrincipalCarnetEnLigne.add(ongletsObservationsImages);// On ajoute les applicationsobservationMediateur = ObservationMediateur.Instance(this);// imageMediateur= ImageMediateur.Instance();// on ajoute les panneaux principaux des applications au panneau à onglets// ongletsObservationsImages.add(imageMediateur.getPanneauPrincipalImage());ongletsObservationsImages.add(observationMediateur.getPanneauPrincipalObservation());}public void getEtatUtilisateur() {carnetEnLigneModele.getEtatUtilisateur(this);}// Methode publiques/*** Recherche Identifiant utilisateur en cours et etat de connection* @return Utilisateur*/public Utilisateur getUtilisateur() {return utilisateur;}/*** Deconnecte l'utilisateur passe en parametre*/public void deconnecterUtilisateur() {carnetEnLigneModele.deconnecterUtilisateur(this, utilisateur.getIdentifiant());}public void connecterUtilisateur(String login, String password) {tentativeConnection=true;carnetEnLigneModele.connecterUtilisateur(this, login, password);}/*** Affichage etat de la connexion*/private void afficheEtatConnexion() {if (!utilisateur.isIdentifie()) {etatConnexionVue.setEtat(texteDeconnexion,false);}else {etatConnexionVue.setEtat(utilisateur.getIdentifiant()+ " (deconnexion)",true);}}/**** Affichage boite de connexion**/public void afficherDialogueConnexion() {if (formulaireDeConnexionVue==null) {formulaireDeConnexionVue= new FormulaireDeConnexionVue(this);}// Position it roughly in the middle of the screen.int left = (Window.getClientWidth() - 512) / 2;int top = (Window.getClientHeight() - 256) / 2;formulaireDeConnexionVue.setPopupPosition(left, top);formulaireDeConnexionVue.show();}public Panel getPanneauPrincipalCarnetEnLigne() {return panneauPrincipalCarnetEnLigne;}// TODO : repandre rafraichissementpublic void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {if (nouvelleDonnees instanceof Utilisateur) {utilisateur = (Utilisateur) nouvelleDonnees;afficheEtatConnexion();if ((tentativeConnection) && !utilisateur.isIdentifie()) {formulaireDeConnexionVue.afficherMessageAlerte();}else {if ((tentativeConnection) && utilisateur.isIdentifie()) {formulaireDeConnexionVue.hide();}}// On lance l'affichage des observationsobservationMediateur.obtenirNombreObservation();}}}