Rev 107 | Rev 134 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client;
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.Menu;
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.StructureListe;
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.FormStructureVue;
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.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.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.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;
public Mediateur() {
// Enregistrement du Médiateur dans le Registre
Registry.register(RegistreId.MEDIATEUR, this);
// Création du Modèle qui s'enregistre lui même dans le Registre
modele = new Modele();
// Création de l'utilsateur courrant
utilisateur = new Utilisateur(null, false);
Registry.register(RegistreId.UTILISATEUR, utilisateur);
this.connecterUtilisateur(null, null);
// Création du Viewport qui contient la disposition globale de l'application
viewport = new Viewport();
viewport.setLayout(new BorderLayout());
// Création des différents panneaux
creerPanneauNord();
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 menu
chargeMenu(panneauOuest.listerMenu());
// Retour à GWT du Viewport une fois constuit
RootPanel.get().add(viewport);
}
public String getUtilisateurId() {
return utilisateur.getId();
}
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);
}
public void chargeMenu(Menu menus) {
((MenuPanneauVue) Registry.get(RegistreId.PANNEAU_OUEST)).rafraichir(menus);
}
public void clicMenu(String s) {
panneauCentre.removeAll();
if (s.equals("Institutions")) {
((Modele) Registry.get(RegistreId.MODELE)).obtenirListeInstitutions();
}else if (s.equals("Publications")) {
((Modele) Registry.get(RegistreId.MODELE)).obtenirListePublications();
}
else {
Window.alert("Non implémenté!");
}
panneauCentre.layout();
}
public void clicIdentification() {
// Gestion du login
IdentificationFenetre dialog = new IdentificationFenetre();
dialog.setClosable(false);
dialog.show();
}
public void clicListeInstitution(Structure institution) {
((StructureDetailPanneauVue) Registry.get(RegistreId.PANNEAU_INSTITUTION_DETAIL)).rafraichir(institution);
}
public void afficherListeInstitutions(StructureListe nouvelleDonnees) {
// TODO : créer dès l'initialisation de l'application InsitutionVue et la cacher
StructureVue institutionVue = new StructureVue();
panneauCentre.add(institutionVue);
institutionVue.rafraichir(nouvelleDonnees);
}
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(), "Carnet en ligne", "");
}
}
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) {
panneauNord.rafraichir(utilisateur);
}
public void clicAjouterStructure() {
panneauCentre.removeAll();
FormStructureVue formStructureVue = new FormStructureVue();
panneauCentre.add(formStructureVue);
panneauCentre.setId(ComposantId.PANNEAU_FORM_STRUCTURE);
panneauCentre.layout();
}
public void afficherListeValeurs(ValeurListe nouvelleDonnees) {
if (panneauCentre.getId().equals(ComposantId.PANNEAU_FORM_STRUCTURE)) {
((FormStructureVue) panneauCentre.getItem(0)).rafraichir(nouvelleDonnees);
} else {
GWT.log("Aucun panneau trouvé pour afficher la liste de valeur", null);
}
}
public void afficherListePublication(PublicationListe nouvelleDonnees) {
PublicationVue publicationVue = new PublicationVue() ;
panneauCentre.add(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
}
/**
* 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, structure);
}
}