Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 911 → Rev 912

/trunk/src/org/tela_botanica/client/vues/AccueilVue.java
File deleted
/trunk/src/org/tela_botanica/client/vues/Formulaire.java
133,7 → 133,7
* @param labelAlign alignement des labels
* @return
*/
protected static FormLayout creerFormLayout(Integer labelWidth, LabelAlign labelAlign) {
public static FormLayout creerFormLayout(Integer labelWidth, LabelAlign labelAlign) {
FormLayout formLayout = new FormLayout();
if (labelWidth != null) {
formLayout.setLabelWidth(labelWidth);
/trunk/src/org/tela_botanica/client/vues/accueil/AccueilVue.java
New file
0,0 → 1,221
package org.tela_botanica.client.vues.accueil;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.TreeMap;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.i18n.Constantes;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.util.Debug;
 
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.custom.Portal;
import com.extjs.gxt.ui.client.widget.custom.Portlet;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.xml.client.Document;
import com.google.gwt.xml.client.Element;
import com.google.gwt.xml.client.Node;
import com.google.gwt.xml.client.NodeList;
import com.google.gwt.xml.client.XMLParser;
 
public class AccueilVue extends LayoutContainer implements Rafraichissable {
private Mediateur mediateur = null;
private Constantes i18nC = null;
private Portal portail = null;
public AccueilVue(Mediateur mediateurCourant) {
mediateur = mediateurCourant;
i18nC = Mediateur.i18nC;
setLayout(new FitLayout());
ContentPanel panneauPrincipal = new ContentPanel();
panneauPrincipal.setLayout(new FitLayout());
panneauPrincipal.setHeading("Accueil");
panneauPrincipal.setBorders(false);
ToolBar barreOutils = new ToolBar();
Button ajouter = new Button(i18nC.ajouter());
ajouter.setIcon(Images.ICONES.ajouter());
ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent be) {
ajouterPortlet();
}
});
barreOutils.add(ajouter);
Button enregistrer = new Button("Enregistrer");
enregistrer.setIcon(Images.ICONES.appliquer());
enregistrer.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent be) {
enregistrerParametres();
}
});
barreOutils.add(enregistrer);
panneauPrincipal.setTopComponent(barreOutils);
portail = creerPortail();
panneauPrincipal.add(portail);
chargerParametres();
 
add(panneauPrincipal);
mediateur.desactiverChargement();
}
private Portal creerPortail() {
Portal portail = new Portal(3);
portail.setBorders(true);
portail.setStyleAttribute("backgroundColor", "white");
portail.setShadow(true);
portail.setColumnWidth(0, .33);
portail.setColumnWidth(1, .33);
portail.setColumnWidth(2, .33);
return portail;
}
// INFO: Les items d'une classse portal correspondent aux colonnes. Pour vider une Portal, il faut donc vider les éléments de chaque item du Portal.
private void viderPortail() {
portail.getItem(0).removeAll();
portail.getItem(1).removeAll();
portail.getItem(2).removeAll();
}
private void chargerParametres() {
viderPortail();
Debug.log("Nbre aplletes c0 :"+portail.getItem(0).getItemCount());
Debug.log("Charger:"+mediateur.getUtilisateur().getParametre());
Document paramXml = XMLParser.parse(mediateur.getUtilisateur().getParametre());
NodeList listeAccueilNoeud = paramXml.getElementsByTagName("accueil");
int nbreAccueilNoeud = listeAccueilNoeud.getLength();
 
// Récupération du noeud accueil
Node accueilNoeud = null;
if (nbreAccueilNoeud == 0) {
ajouterPortlet();
} else if (nbreAccueilNoeud == 1) {
accueilNoeud = listeAccueilNoeud.item(0);
// Lecture des noeuds "applette"
NodeList listeAppletteNoeud = accueilNoeud.getChildNodes();
int nbreAppletteNoeud = listeAppletteNoeud.getLength();
TreeMap<String, HashMap<String, String>> tableApplettes = new TreeMap<String, HashMap<String, String>>();
for (int i = 0; i < nbreAppletteNoeud ; i++) {
Element appletteNoeud = (Element) listeAppletteNoeud.item(i);
int colonne = Integer.parseInt(appletteNoeud.getAttribute("colonne"));
int index = Integer.parseInt(appletteNoeud.getAttribute("index"));
HashMap<String, String> infoApplette = new HashMap<String, String>();
infoApplette.put("type", appletteNoeud.getAttribute("type"));
infoApplette.put("colonne", appletteNoeud.getAttribute("colonne"));
infoApplette.put("index", appletteNoeud.getAttribute("index"));
infoApplette.put("contenu", appletteNoeud.getAttribute("contenu"));
tableApplettes.put(colonne+"-"+index, infoApplette);
}
Iterator<String> it = tableApplettes.keySet().iterator();
while (it.hasNext()) {
String id = it.next();
HashMap<String, String> infoApplette = tableApplettes.get(id);
ajouterPortlet(infoApplette.get("type"), Integer.parseInt(infoApplette.get("colonne")), Integer.parseInt(infoApplette.get("index")), infoApplette.get("contenu"));
}
}
Debug.log("Nbre aplletes c0 :"+portail.getItem(0).getItemCount());
layout();
}
private void enregistrerParametres() {
ArrayList<Portlet> applettes = getPortlets();
Iterator<Portlet> it = applettes.iterator();
Document paramXml = XMLParser.parse(mediateur.getUtilisateur().getParametre());
NodeList listeAccueilNoeud = paramXml.getElementsByTagName("accueil");
int nbreAccueilNoeud = listeAccueilNoeud.getLength();
 
// Suppression des noeuds "accueil" existant car il ne devrait y en avoir qu'un
if (nbreAccueilNoeud > 1) {
for (int i = 0; i < nbreAccueilNoeud ; i++) {
paramXml.getDocumentElement().removeChild(listeAccueilNoeud.item(i));
}
nbreAccueilNoeud = 0;
}
// Création du nouveau noeud accueil
Node accueilNoeud = null;
Element accueilElement = paramXml.createElement("accueil");
if (nbreAccueilNoeud == 0) {
accueilNoeud = paramXml.getDocumentElement().appendChild(accueilElement);
} else if (nbreAccueilNoeud == 1) {
accueilNoeud = listeAccueilNoeud.item(0);
paramXml.getDocumentElement().replaceChild(accueilElement, accueilNoeud);
accueilNoeud = paramXml.getElementsByTagName("accueil").item(0);
}
// Ajout des noeuds "applette" au noeud "accueil"
while (it.hasNext()) {
Portlet applette = it.next();
String index = Integer.toString(portail.getPortletIndex(applette));
String colonne = Integer.toString(portail.getPortletColumn(applette));
String contenu = applette.getData("contenu");
Element appletteElement = paramXml.createElement("applette");
appletteElement.setAttribute("type", "statistique");
appletteElement.setAttribute("colonne", colonne);
appletteElement.setAttribute("index", index);
appletteElement.setAttribute("contenu", contenu);
accueilNoeud.appendChild(appletteElement);
}
Debug.log("Enregistrer:"+paramXml.toString());
mediateur.getUtilisateur().setParametre(paramXml.toString());
mediateur.modifierUtilisateur();
}
private ArrayList<Portlet> getPortlets() {
ArrayList<Portlet> applettes = new ArrayList<Portlet>();
for (int i = 0; i < 3; i++) {
int nbreApplette = portail.getItem(i).getItemCount();
if (nbreApplette > 0) {
for (int j = 0; j < nbreApplette; j++) {
applettes.add((Portlet) portail.getItem(i).getItem(j));
}
}
}
return applettes;
}
private void ajouterPortlet() {
ajouterPortlet("statistique", 0, 0, null);
}
private void ajouterPortlet(String type, int colonne, int index, String contenu) {
Debug.log("Ajout:"+type+"-"+colonne+"-"+index+"-"+contenu);
Portlet portlet = null;
if (type.equals("statistique")) {
portlet = new AppletteStatistique(contenu);
}
portail.insert(portlet, index, colonne);
layout();
}
public void rafraichir(Object nouvellesDonnees) {
if (nouvellesDonnees instanceof Information) {
Information info = (Information) nouvellesDonnees;
String type = info.getType();
if (type.equals("maj_utilisateur")) {
chargerParametres();
}
} else {
Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
}
}
}
/trunk/src/org/tela_botanica/client/vues/accueil/AppletteStatistique.java
New file
0,0 → 1,131
package org.tela_botanica.client.vues.accueil;
 
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.configuration.Configuration;
import org.tela_botanica.client.modeles.InterneValeur;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.vues.Formulaire;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.IconButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.event.WindowEvent;
import com.extjs.gxt.ui.client.event.WindowListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.HtmlContainer;
import com.extjs.gxt.ui.client.widget.button.ToolButton;
import com.extjs.gxt.ui.client.widget.custom.Portlet;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
 
public class AppletteStatistique extends Portlet {
private String baseUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
public AppletteStatistique() {
initialiserAppletteStatistique(null);
}
public AppletteStatistique(String contenu) {
initialiserAppletteStatistique(contenu);
}
private void initialiserAppletteStatistique(String contenu) {
setLayout(new FitLayout());
setHeading("Statistiques des collections");
setHeight(250);
setCollapsible(true);
setAnimCollapse(true);
setScrollMode(Scroll.AUTO);
attribuerContenu(contenu);
getHeader().addTool(new ToolButton("x-tool-gear", new SelectionListener<IconButtonEvent>() {
@Override
public void componentSelected(IconButtonEvent ce) {
ContentPanel panneau = new ContentPanel();
panneau.setHeaderVisible(false);
panneau.setLayout(Formulaire.creerFormLayout(350, LabelAlign.TOP));
ListStore<InterneValeur> appletteStore = new ListStore<InterneValeur>();
appletteStore.add(new InterneValeur("NombreDonnees", "Nombre de données"));
appletteStore.add(new InterneValeur("TypeDepot", "Types de dépôt des collections"));
appletteStore.add(new InterneValeur("NombreCollectionParStructure", "Nombre de collections par institution"));
final ComboBox<InterneValeur> applettesCombo = new ComboBox<InterneValeur>();
applettesCombo.setFieldLabel("Veuillez sélectionner le type d'applette");
applettesCombo.setForceSelection(true);
applettesCombo.setTriggerAction(TriggerAction.ALL);
applettesCombo.setDisplayField("nom");
applettesCombo.setStore(appletteStore);
applettesCombo.setEditable(false);
applettesCombo.setWidth(300);
panneau.add(applettesCombo);
final Dialog configurationFenetre = new Dialog();
configurationFenetre.setHeading("Configuration de l'applette");
configurationFenetre.setButtons(Dialog.OK);
configurationFenetre.setSize(350, 150);
configurationFenetre.setPlain(true);
configurationFenetre.setModal(true);
configurationFenetre.setBlinkModal(true);
configurationFenetre.setLayout(new FitLayout());
configurationFenetre.setHideOnButtonClick(true);
configurationFenetre.addWindowListener(new WindowListener(){
public void windowHide(WindowEvent we) {
String abreviation = applettesCombo.getValue().getAbr();
attribuerContenu(abreviation);
}
});
configurationFenetre.add(panneau);
configurationFenetre.show();
}
}));
getHeader().addTool(new ToolButton("x-tool-pin", new SelectionListener<IconButtonEvent>() {
@Override
public void componentSelected(IconButtonEvent ce) {
if (isPinned()) {
ce.getComponent().setStylePrimaryName("x-tool-pin");
setPinned(false);
} else {
ce.getComponent().setStylePrimaryName("x-tool-unpin");
setPinned(true);
}
layout();
}
}));
getHeader().addTool(new ToolButton("x-tool-close", new SelectionListener<IconButtonEvent>() {
@Override
public void componentSelected(IconButtonEvent ce) {
removeFromParent();
}
}));
}
private void attribuerContenu(String abreviation) {
if (abreviation == null) {
abreviation = "NombreDonnees";
}
setData("contenu", abreviation);
String url = baseUrl+"CoelStatistique/"+abreviation;
HtmlContainer conteneurHtml = new HtmlContainer();
conteneurHtml.setUrl(url);
conteneurHtml.recalculate();
removeAll();
add(conteneurHtml);
layout();
}
}
/trunk/src/org/tela_botanica/client/Modele.java
81,15 → 81,28
uDao.accepterLicence();
}
public void modifierUtilisateur(Rafraichissable vueARafraichir, Utilisateur utilisateur) {
PersonneAsyncDao pAdao = new PersonneAsyncDao(vueARafraichir);
public void mettreAJourPersonneAnnuaire(Rafraichissable vue, Utilisateur utilisateur) {
PersonneAsyncDao pAdao = new PersonneAsyncDao(vue);
Personne personne = new Personne();
personne.setId(utilisateur.getId());
personne.setPrenom(utilisateur.getPrenom());
personne.setNom(utilisateur.getNom());
personne.setNomComplet(utilisateur.getNomComplet());
personne.setParametre(utilisateur.getParametre());
pAdao.modifier(personne);
}
public void mettreAJourPersonneAnnuaire(Rafraichissable vueARafraichir, Utilisateur utilisateur) {
PersonneAsyncDao pAdao = new PersonneAsyncDao(vueARafraichir);
HashMap<String, String> infosAnnuaire = utilisateur.getInfosAnnuaire();
Personne personne = new Personne();
personne.setId(utilisateur.getId());
personne.set("nom", infosAnnuaire.get("nom"));
personne.set("prenom", infosAnnuaire.get("prenom"));
personne.setNom(infosAnnuaire.get("nom"));
personne.setPrenom(infosAnnuaire.get("prenom"));
personne.setFmtNomComplet("", "");
personne.setCourriel(infosAnnuaire.get("courriel"));
personne.set("ce_annuaire_tela", infosAnnuaire.get("id"));
96,7 → 109,7
personne.set("mot_de_passe", infosAnnuaire.get("mot_de_passe"));
personne.set("code_postal", infosAnnuaire.get("code_postal"));
personne.set("ville", infosAnnuaire.get("ville"));
 
pAdao.modifier(personne);
/*
* "id":"11623","nom":"DUCHE","prenom":"Gr\u00e9goire","mot_de_passe":"9d146bd95317a64b83b5e06cf752da2d",
/trunk/src/org/tela_botanica/client/modeles/Personne.java
104,8 → 104,12
public String getNomComplet() {
return renvoyerValeurCorrecte("fmt_nom_complet");
}
public void setNomComplet(String nomComplet) {
this.set("fmt_nom_complet", nomComplet);
}
public void setFmtNomComplet(String prefixe, String suffixe) {
String fmtNomComplet = "";
if ((prefixe != null)&&(!prefixe.trim().equals(""))) {
fmtNomComplet += prefixe + " ";
}
121,8 → 125,8
if ((suffixe!=null)&&(!suffixe.trim().equals(""))) {
fmtNomComplet += suffixe;
}
this.set("fmt_nom_complet", UtilString.ucFirst(fmtNomComplet));
 
setNomComplet(UtilString.ucFirst(fmtNomComplet));
}
// NOM
129,11 → 133,17
public String getNom() {
return renvoyerValeurCorrecte("nom");
}
public void setNom(String nom) {
set("nom", nom);
}
// PRÉNOM
public String getPrenom() {
return renvoyerValeurCorrecte("prenom");
}
public void setPrenom(String prenom) {
set("prenom", prenom);
}
// TÉLÉPHONE
public String getTelephone() {
261,5 → 271,12
public void setDecesLieu(String decesLieu) {
this.set("deces_lieu", decesLieu);
}
 
// PARAMÊTRE
public String getParametre() {
return renvoyerValeurCorrecte("parametre");
}
public void setParametre(String parametre) {
this.set("parametre", parametre);
}
}
/trunk/src/org/tela_botanica/client/modeles/Utilisateur.java
4,11 → 4,7
import java.util.Iterator;
import java.util.Set;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONNumber;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
 
public class Utilisateur extends aDonnee {
 
56,6 → 52,7
}
// ID
/**
* Retourne l'id de l'utilisateur ou l'identifiant de session si la personne n'est pas identifiée.
* @return String id de l'utilisateur
67,6 → 64,7
set("id_personne", id);
}
// NOM COMPLET
/**
* Retourne le nom complet et formaté de l'utilisateur
* @return String nom complet
79,6 → 77,7
set("fmt_nom_complet", nom_complet);
}
 
// PRÉNOM
/**
* Retourne le prénom de l'utilisateur
* @return String prénom
90,6 → 89,7
set("prenom", prenom);
}
// NOM
/**
* Retourne le nom de l'utilisateur
* @return String nom
101,6 → 101,7
set("nom", nom);
}
// LOGIN
/**
* Retourne le login de l'utilisateur ou l'identifiant de session si la personne n'est pas identifiée.
* @return String login
112,6 → 113,7
set("login", l);
}
// MOT DE PASSE
/**
* Retourne le mot de passe de l'utilisateur
* @return String mot de passe
122,8 → 124,21
public void setMotDePasse(String mdp) {
set("mot_de_passe", mdp);
}
// PARAMÈTRE
public String getParametre() {
String xml = renvoyerValeurCorrecte("parametre");
if (xml.equals("")) {
xml = "<?xml version='1.0' encoding='UTF-8'?>\n<parametres>\n</parametres>";
}
return xml;
}
public void setParametre(String param) {
set("parametre", param);
}
// +---------------------------------------------------------------------------------------------------------------+
// IDENTIFIÉ
/**
* Retourne vrai si utilisateur est identifié.
* @return boolean
140,33 → 155,34
set("identifie", bool);
}
// EXISTE DANS ANNUAIRE
/**
* Renvoie si l'utilisateur est présent dans l'annuaire ou non
* @return vrai s'il est présent
*/
@SuppressWarnings("unchecked")
public boolean existeDansAnnuaire() {
HashMap infosAnnuaire = (HashMap) get("infosAnnuaire");
HashMap<String, String> infosAnnuaire = (HashMap<String, String>) get("infosAnnuaire");
return !(infosAnnuaire == null || infosAnnuaire.size() == 0);
}
public HashMap<String, String> getInfosAnnuaire() {
// INFOS DANS ANNUAIRE
@SuppressWarnings("unchecked")
public HashMap<String, String> getInfosAnnuaire() {
if (existeDansAnnuaire()) {
return (HashMap<String, String>) get("infosAnnuaire");
} else {
} else {
return null;
}
}
}
public void setInfosAnnuaire(JSONObject infosAnnuaire) {
// l'objet JSON est une table de hachage
Set<String> im = infosAnnuaire.keySet();
HashMap<String, String> mapAnnuaire = new HashMap<String, String>();
// Parcourt pour chaque clé
for (Iterator<String> it = im.iterator(); it.hasNext();) {
 
Iterator<String> it = im.iterator();
while (it.hasNext()) {
String cle = it.next();
if (infosAnnuaire.get(cle).isString() != null) {
String valeur = infosAnnuaire.get(cle).isString().stringValue();
174,13 → 190,12
}
}
if (mapAnnuaire.size()>0) {
if (mapAnnuaire.size() > 0) {
this.set("infosAnnuaire", mapAnnuaire);
}
}
public void majUtilisateurInfoAnnuaire() {
HashMap<String, String> infosAnnuaire = (HashMap<String, String>) get("infosAnnuaire");
HashMap<String, String> infosAnnuaire = getInfosAnnuaire();
setNom(infosAnnuaire.get("nom"));
setPrenom(infosAnnuaire.get("prenom"));
setLogin(infosAnnuaire.get("courriel"));
187,6 → 202,7
setMotDePasse(infosAnnuaire.get("mot_de_passe"));
}
// LICENCE ACCEPTÉE
public void setLicence(String licence) {
this.set("licenceAcceptee", licence);
}
/trunk/src/org/tela_botanica/client/modeles/UtilisateurAsyncDao.java
139,8 → 139,13
// Nom de l'utilisateur
if (reponse.get(6).isString() != null) {
utilisateur.setNom(((JSONString) reponse.get(6)).stringValue());
}
}
// Paramètres
if (reponse.get(7).isString() != null) {
utilisateur.setParametre(((JSONString) reponse.get(7)).stringValue());
}
}
vueARafraichir.rafraichir(utilisateur);
}
/trunk/src/org/tela_botanica/client/Mediateur.java
36,7 → 36,6
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.AccueilVue;
import org.tela_botanica.client.vues.CollectionForm;
import org.tela_botanica.client.vues.CollectionListeVue;
import org.tela_botanica.client.vues.CollectionVue;
54,6 → 53,7
import org.tela_botanica.client.vues.StatutVue;
import org.tela_botanica.client.vues.StructureVue;
import org.tela_botanica.client.vues.MenuVue;
import org.tela_botanica.client.vues.accueil.AccueilVue;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
279,6 → 279,11
return id;
}
public Utilisateur getUtilisateur() {
Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);
return utilisateurCourant;
}
public void connecterUtilisateur(String login, String mdp) {
modele.connecterUtilisateur(this, login, mdp);
}
288,27 → 293,30
}
public void mettreAJourEtatIdentification(Utilisateur utilisateur) {
// Mise à jour du registre
Registry.register(RegistreId.UTILISATEUR_COURANT, utilisateur);
// Création de l'information de mise à jour de l'utilisateur
// Création de l'information de mise à jour de l'utilisateur
Information info = new Information("maj_utilisateur");
 
// Rafraichissement de la fenêtre d'Identification
if (fenetreIdentification != null) {
fenetreIdentification.rafraichir(info);
}
Information info = new Information("maj_utilisateur");
// Rafraichissement du panneau Nord
panneauNord.rafraichir(info);
 
// Rafraichissement du panneau Centre
if (panneauCentre != null) {
panneauCentre.rafraichir(info);
}
}
// Rafraichissement de la fenêtre d'Identification
if (fenetreIdentification != null) {
fenetreIdentification.rafraichir(info);
}
// Rafraichissement du panneau Nord
panneauNord.rafraichir(info);
// Rafraichissement du panneau Centre
if (panneauCentre != null) {
panneauCentre.rafraichir(info);
}
public void modifierUtilisateur() {
Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);
panneauNord.rafraichir(utilisateurCourant);
modele.modifierUtilisateur(this, utilisateurCourant);
}
public void mettreAJourPersonneAnnuaire(Utilisateur utilisateur) {