New file |
0,0 → 1,302 |
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.TabPanel; |
import com.gwtext.client.widgets.layout.FitLayout; |
import com.gwtext.client.widgets.layout.RowLayout; |
import com.gwtext.client.widgets.layout.RowLayoutData; |
|
/** |
* 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 ; |
|
/** |
* pointeur vers le médiateur lui même (pour le pattern singleton) |
*/ |
private static CarnetEnLigneMediateur thisMediateur = null ; |
|
/** |
* modele de données |
*/ |
|
private CarnetEnLigneModele carnetEnLigneModele=null; |
|
|
/** |
* panneau principal de l'application "Carnet en ligne" |
*/ |
|
private Panel panneauPrincipalCarnetEnLigne= null ; |
|
|
|
/** |
* panneau a onglet pour les observation et les images |
*/ |
|
|
private com.gwtext.client.widgets.TabPanel 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 || thisMediateur==null) |
{ |
estInstancie = true ; |
thisMediateur = new CarnetEnLigneMediateur() ; |
} |
|
return thisMediateur ; |
|
} |
|
|
/** |
* constructeur privé (on accède a la classe par la méthode getInstance |
*/ |
|
private CarnetEnLigneMediateur() { |
|
|
panneauPrincipalCarnetEnLigne = new Panel("Carnet en ligne"); |
|
// Disposition |
|
panneauPrincipalCarnetEnLigne.setLayout(new RowLayout()); |
|
|
// On crée un modèle d'acces aux donnnes |
|
carnetEnLigneModele=CarnetEnLigneModele.Instance(); |
|
|
// La vue affichant le statut de la connexion |
|
etatConnexionVue=new EtatConnexionVue(this); |
etatConnexionVue.setLayout(new FitLayout()) ; |
|
// Le panneau à onglet qui contient les 2 applications Observation et Images |
|
ongletsObservationsImages = new TabPanel(); |
|
panneauPrincipalCarnetEnLigne.add(etatConnexionVue,new RowLayoutData(20)); |
|
// on ajoute le panneau a onglet au panneau principal |
|
panneauPrincipalCarnetEnLigne.add(ongletsObservationsImages); |
|
// On ajoute les applications |
observationMediateur = ObservationMediateur.Instance(this); |
imageMediateur= ImageMediateur.Instance(this); |
|
//temp dd viewport desactive ajout de cette ligne |
getPanneauPrincipalCarnetEnLigne().setHeight(1200) ; |
// |
|
//panneauPrincipalCarnetEnLigne.setSize(Window.getClientWidth(), Window.getClientHeight() - etatConnexionVue.getHeight()) ; |
observationMediateur.getPanneauPrincipalObservation().setSize(panneauPrincipalCarnetEnLigne.getWidth(),panneauPrincipalCarnetEnLigne.getHeight() - 20) ; |
imageMediateur.getPanneauPrincipalImage().setSize(panneauPrincipalCarnetEnLigne.getWidth(),panneauPrincipalCarnetEnLigne.getHeight() - 20) ; |
|
// on ajoute les panneaux principaux des applications au panneau à onglets |
ongletsObservationsImages.add(observationMediateur.getPanneauPrincipalObservation()); |
ongletsObservationsImages.add(imageMediateur.getPanneauPrincipalImage()); |
|
} |
|
|
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 rafraichissement |
|
public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) { |
|
if (nouvelleDonnees instanceof Utilisateur) { |
|
utilisateur = (Utilisateur) nouvelleDonnees; |
|
imageMediateur.connecterUtilisateur() ; |
|
afficheEtatConnexion(); |
|
if ((tentativeConnection) && !utilisateur.isIdentifie()) { |
|
//formulaireDeConnexionVue.afficherMessageAlerte(); |
} |
else { |
if ((tentativeConnection) && utilisateur.isIdentifie()) { |
formulaireDeConnexionVue.hide(); |
} |
} |
|
|
|
// On lance l'affichage des observations |
observationMediateur.obtenirNombreObservation(); |
|
} |
|
} |
|
|
|
} |