Rev 195 | Rev 223 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client;import java.sql.Time;import java.util.Date;import java.util.List;import org.tela_botanica.client.composants.AideFenetre;import org.tela_botanica.client.composants.IdentificationFenetre;import org.tela_botanica.client.composants.ParametreFenetre;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.Configuration;import org.tela_botanica.client.modeles.Information;import org.tela_botanica.client.modeles.Menu;import org.tela_botanica.client.modeles.Personne;import org.tela_botanica.client.modeles.PersonneListe;import org.tela_botanica.client.modeles.ProjetsListe;import org.tela_botanica.client.modeles.Publication;import org.tela_botanica.client.modeles.PublicationListe;import org.tela_botanica.client.modeles.Structure;import org.tela_botanica.client.modeles.StructureConservation;import org.tela_botanica.client.modeles.StructureListe;import org.tela_botanica.client.modeles.StructureValorisation;import org.tela_botanica.client.modeles.Utilisateur;import org.tela_botanica.client.modeles.ValeurListe;import org.tela_botanica.client.vues.ContenuPanneauVue;import org.tela_botanica.client.vues.EntetePanneauVue;import org.tela_botanica.client.vues.FormPersonneVue;import org.tela_botanica.client.vues.FormStructureVue;import org.tela_botanica.client.vues.PersonneDetailPanneauVue;import org.tela_botanica.client.vues.PersonneVue;import org.tela_botanica.client.vues.PublicationDetailPanneauVue;import org.tela_botanica.client.vues.PublicationVue;import org.tela_botanica.client.vues.StructureDetailPanneauVue;import org.tela_botanica.client.vues.StructureListePanneauVue;import org.tela_botanica.client.vues.StructureVue;import org.tela_botanica.client.vues.MenuPanneauVue;import com.extjs.gxt.ui.client.Registry;import com.extjs.gxt.ui.client.Style.LayoutRegion;import com.extjs.gxt.ui.client.util.Margins;import com.extjs.gxt.ui.client.widget.Info;import com.extjs.gxt.ui.client.widget.LayoutContainer;import com.extjs.gxt.ui.client.widget.Viewport;import com.extjs.gxt.ui.client.widget.layout.BorderLayout;import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;import com.google.gwt.core.client.GWT;import com.google.gwt.dom.client.Element;import com.google.gwt.user.client.Window;import com.google.gwt.user.client.ui.RootPanel;public class Mediateur {private Modele modele = null;private Utilisateur utilisateur = null;private Viewport viewport;private EntetePanneauVue panneauNord = null;private MenuPanneauVue panneauOuest = null;private ContenuPanneauVue panneauCentre = null;private Rafraichissable contenuPanneauCentre = null;public Mediateur() {// Enregistrement du Médiateur dans le RegistreRegistry.register(RegistreId.MEDIATEUR, this);// Création du Modèle qui s'enregistre lui même dans le Registremodele = new Modele();// Création de l'utilsateur courrantutilisateur = new Utilisateur(null, false);Registry.register(RegistreId.UTILISATEUR, utilisateur);this.connecterUtilisateur(null, null);// Création du Viewport qui contient la disposition globale de l'applicationviewport = new Viewport();viewport.setLayout(new BorderLayout());// Création des différents panneauxcreerPanneauNord();creerPanneauOuest();creerPanneauCentral();// Registry utile car présent partout!Registry.register(RegistreId.VIEWPORT, viewport);Registry.register(RegistreId.PANNEAU_OUEST, panneauOuest);Registry.register(RegistreId.PANNEAU_CENTRE, panneauCentre);// Chargement du menuchargeMenu(panneauOuest.listerMenu());// Retour à GWT du Viewport une fois constuitRootPanel.get().add(viewport);}//+----------------------------------------------------------------------------------------------------------------+// GESTION des PANNEAUX PRINCIPAUX//+----------------------------------------------------------------------------------------------------------------+private void creerPanneauNord() {panneauNord = new EntetePanneauVue();BorderLayoutData regionNord = new BorderLayoutData(LayoutRegion.NORTH, 100);regionNord.setCollapsible(true);regionNord.setFloatable(true);regionNord.setSplit(false);regionNord.setMargins(new Margins(5, 5, 0, 5));viewport.add(panneauNord, regionNord);}private void creerPanneauOuest() {panneauOuest = new MenuPanneauVue();BorderLayoutData regionOuest = new BorderLayoutData(LayoutRegion.WEST, 200);regionOuest.setSplit(true);regionOuest.setCollapsible(true);regionOuest.setMargins(new Margins(5));viewport.add(panneauOuest, regionOuest);}private void creerPanneauCentral() {panneauCentre = new ContenuPanneauVue();BorderLayoutData regionCentre = new BorderLayoutData(LayoutRegion.CENTER);regionCentre.setMargins(new Margins(5, 5, 5, 0));viewport.add(panneauCentre, regionCentre);}//+----------------------------------------------------------------------------------------------------------------+// GESTION du MENU//+----------------------------------------------------------------------------------------------------------------+public void chargeMenu(Menu menus) {((MenuPanneauVue) Registry.get(RegistreId.PANNEAU_OUEST)).rafraichir(menus);}public void clicMenu(String menuNom) {panneauCentre.removeAll();if (menuNom.equals("Institutions")) {((Modele) Registry.get(RegistreId.MODELE)).selectionnerStructures(getUtilisateurId());} else if (menuNom.equals("Publications")) {((Modele) Registry.get(RegistreId.MODELE)).obtenirListePublications();} else if (menuNom.equals("Personnes")) {((Modele) Registry.get(RegistreId.MODELE)).obtenirListePersonnes();}else {GWT.log("Non implémenté! Menu id : "+menuNom, null);}panneauCentre.layout();}//+----------------------------------------------------------------------------------------------------------------+// GESTION DES FENÊTRES//+----------------------------------------------------------------------------------------------------------------+public void ouvrirAide() {AideFenetre aideFenetre = new AideFenetre();aideFenetre.show();// FIXME : apparament le fade In/Fade Out pose problème sur les navigateurs...//aideFenetre.el().fadeIn(FxConfig.NONE);}public void ouvrirParametres() {ParametreFenetre parametresFenetre = new ParametreFenetre();parametresFenetre.show();}public void ouvrirIdentification() {IdentificationFenetre identifFenetre = new IdentificationFenetre();identifFenetre.show();}public void ouvrirApplis(String id) {if (id.equals(ComposantId.MENU_CEL)) {Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl(), "Carnet en ligne", "");} else if (id.equals(ComposantId.MENU_BEL)) {Window.open(((Configuration) Registry.get(RegistreId.CONFIG)).getCelUrl(), "Biblio en ligne", "");}}//+----------------------------------------------------------------------------------------------------------------+// GESTION de l'UTILISATEUR et de l'IDENTIFICATION//+----------------------------------------------------------------------------------------------------------------+public String getUtilisateurId() {return utilisateur.getId();}public void clicIdentification() {// Gestion du loginIdentificationFenetre dialog = new IdentificationFenetre();dialog.setClosable(false);dialog.show();}public void connecterUtilisateur(String login, String mdp) {((Modele) Registry.get(RegistreId.MODELE)).connecterUtilisateur(login, mdp);}public void deconnecterUtilisateur() {((Modele) Registry.get(RegistreId.MODELE)).deconnecterUtilisateur();}public void mettreAJourEtatIdentification(Utilisateur utilisateur) {// Mise à jour du registreRegistry.register(RegistreId.UTILISATEUR, utilisateur);// Création de l'information de mise à jour de l'utilisateurInformation info = new Information("maj_utilisateur");// Rafraichissement du panneau NordpanneauNord.rafraichir(info);// Rafraichissement du panneau Centreif (contenuPanneauCentre != null) {contenuPanneauCentre.rafraichir(info);}}//+----------------------------------------------------------------------------------------------------------------+// GESTION DES PERSONNES//+----------------------------------------------------------------------------------------------------------------+public void clicListePersonne(Personne personne) {((PersonneDetailPanneauVue) Registry.get(RegistreId.PANNEAU_PERSONNE_DETAIL)).rafraichir(personne);}public void afficherListePersonnes(PersonneListe nouvelleDonnees) {PersonneVue personneVue = new PersonneVue();contenuPanneauCentre = personneVue;panneauCentre.add(personneVue);personneVue.rafraichir(nouvelleDonnees);}public void clicAjouterPersonne() {FormPersonneVue fPersonneVue = new FormPersonneVue();contenuPanneauCentre = fPersonneVue;panneauCentre.add(fPersonneVue);}//+----------------------------------------------------------------------------------------------------------------+// GESTION DES VALEURS ET LISTES//+----------------------------------------------------------------------------------------------------------------+public void afficherListeValeurs(ValeurListe nouvelleDonnees) {if (panneauCentre.getId().equals(ComposantId.PANNEAU_STRUCTURE_FORM)) {((FormStructureVue) panneauCentre.getItem(0)).rafraichir(nouvelleDonnees);} else {GWT.log("Aucun panneau trouvé pour afficher la liste de valeur", null);}}//+----------------------------------------------------------------------------------------------------------------+// GESTION DES PUBLICATIONS//+----------------------------------------------------------------------------------------------------------------+public void afficherListePublication(PublicationListe nouvelleDonnees) {PublicationVue publicationVue = new PublicationVue() ;panneauCentre.add(publicationVue);contenuPanneauCentre = publicationVue;publicationVue.rafraichir(nouvelleDonnees);}public void clicListePublication(Publication publication) {((PublicationDetailPanneauVue) Registry.get(RegistreId.PANNEAU_PUBLICATION_DETAIL)).rafraichir(publication);}public void clicAjouterPublication() {// TODO Auto-generated method stub}//+----------------------------------------------------------------------------------------------------------------+// GESTION DES STRUCTURES//+----------------------------------------------------------------------------------------------------------------+public void clicListeInstitution(Structure institution) {((StructureDetailPanneauVue) Registry.get(RegistreId.PANNEAU_INSTITUTION_DETAIL)).rafraichir(institution);}public void afficherListeStructures(StructureListe nouvelleDonnees) {// TODO : créer dès l'initialisation de l'application InsitutionVue et la cacherStructureVue institutionVue = new StructureVue();panneauCentre.add(institutionVue);panneauCentre.setId(ComposantId.PANNEAU_STRUCTURE_LISTE);contenuPanneauCentre = institutionVue;institutionVue.rafraichir(nouvelleDonnees);}public void clicAjouterStructure() {panneauCentre.removeAll();FormStructureVue formStructureVue = new FormStructureVue();panneauCentre.add(formStructureVue);panneauCentre.setId(ComposantId.PANNEAU_STRUCTURE_FORM);panneauCentre.layout();}/*** TODO : afficher un message du type "Structure ajoutée".* Lance la creation d'une structure* @param les données de la structure saisie*/public void ajouterStructure(Rafraichissable vue, Structure structure) {modele.ajouterStructure(vue, getUtilisateurId(), structure);}public void clicSupprimerStructure(Rafraichissable vue, List<Structure> structureSelection) {if (structureSelection.size() == 0) {Info.display("Information", "Veuillez sélectionner une structure.");} else if(structureSelection.size() > 0) {String message = "Êtes vous sur de vouloir supprimer les structures sélectionnées ?";if (structureSelection.size() == 1) {message = "Êtes vous sur de vouloir supprimer la structure sélectionnée ?";}if(Window.confirm(message)) {String idStr = "" ;for(int i = 0 ; i < structureSelection.size() ; i++) {idStr += structureSelection.get(i).getId()+"," ;}modele.supprimerStructure(vue, getUtilisateurId(), idStr);}} else {Info.display("Erreur", "Une erreur est survenue dans la méthode clicSupprimerStructure() du Médiateur.");}}public void clicModifierStructure(List<Structure> structureSelection) {if(structureSelection.size() == 0) {Info.display("Information", "Veuillez sélectionner une structure.");} else if(structureSelection.size() > 1) {Info.display("Information", "Veuillez sélectionner une seule structure à la fois.");} else if(structureSelection.size() == 1) {panneauCentre.removeAll();FormStructureVue formStructureVue = new FormStructureVue();panneauCentre.add(formStructureVue);panneauCentre.setId(ComposantId.PANNEAU_STRUCTURE_FORM);String idStr = "" ;for(int i = 0 ; i < structureSelection.size() ; i++) {idStr = structureSelection.get(i).getId();}modele.selectionnerStructure(formStructureVue, getUtilisateurId(), idStr);panneauCentre.layout();} else {Info.display("Erreur", "Une erreur est survenue dans la méthode clicModifierStructure() du Médiateur.");}}public void modifierStructure(Rafraichissable vue, Structure structure, StructureConservation conservation, StructureValorisation valorisation) {modele.modifierStructure(vue, getUtilisateurId(), structure, conservation, valorisation);}//+----------------------------------------------------------------------------------------------------------------+// GESTION des PROJETS//+----------------------------------------------------------------------------------------------------------------+//Greg : ajout d'un écouteur pour le changement liste projetpublic void rafraichirListeProjets() {((Modele) Registry.get(RegistreId.MODELE)).obtenirListeProjets();}public void afficherListeProjets(ProjetsListe projets) {((MenuPanneauVue) Registry.get(RegistreId.PANNEAU_OUEST)).rafraichir(projets);}public void selectionnerProjet(String selectedIndexValue) {Registry.register(RegistreId.PROJET, selectedIndexValue);if (contenuPanneauCentre instanceof PersonneVue) {((Modele) Registry.get(RegistreId.MODELE)).obtenirListePersonnes();//FIXME Le rafraichissement du panneau ne se fait pas!}}}