/trunk/src/org/tela_botanica/client/Mediateur.java |
---|
6,6 → 6,7 |
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.i18n.Constantes; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Configuration; |
import org.tela_botanica.client.modeles.Information; |
34,6 → 35,7 |
import org.tela_botanica.client.vues.PopupChargement; |
import org.tela_botanica.client.vues.PublicationDetailPanneauVue; |
import org.tela_botanica.client.vues.PublicationVue; |
import org.tela_botanica.client.vues.StatutPanneauVue; |
import org.tela_botanica.client.vues.StructureDetailPanneauVue; |
import org.tela_botanica.client.vues.StructureVue; |
import org.tela_botanica.client.vues.MenuPanneauVue; |
46,6 → 48,7 |
import com.extjs.gxt.ui.client.widget.Dialog; |
import com.extjs.gxt.ui.client.widget.Info; |
import com.extjs.gxt.ui.client.widget.MessageBox; |
import com.extjs.gxt.ui.client.widget.StatusBar; |
import com.extjs.gxt.ui.client.widget.Viewport; |
import com.extjs.gxt.ui.client.widget.button.Button; |
import com.extjs.gxt.ui.client.widget.layout.BorderLayout; |
56,17 → 59,23 |
public class Mediateur implements Rafraichissable { |
private Viewport viewport; |
private Modele modele = null; |
private Constantes i18n; |
private Viewport viewport; |
private EntetePanneauVue panneauNord = null; |
private MenuPanneauVue panneauOuest = null; |
private ContenuPanneauVue panneauCentre = null; |
private StatutPanneauVue panneauSud = null; |
private Rafraichissable contenuPanneauCentre = null; |
private IdentificationFenetre fenetreIdentification = null; |
public Mediateur() { |
// Enregistrement du Médiateur dans le Registre |
Registry.register(RegistreId.MEDIATEUR, this); |
// Gestion de l'i18n |
i18n = GWT.create(Constantes.class); |
// Création du Modèle qui s'enregistre lui même dans le Registre |
modele = new Modele(); |
// Création de l'utilisateur courrant |
83,11 → 92,13 |
creerPanneauNord(); |
creerPanneauOuest(); |
creerPanneauCentral(); |
creerPanneauSud(); |
// Registry utile car présent partout! |
Registry.register(RegistreId.VIEWPORT, viewport); |
Registry.register(RegistreId.PANNEAU_OUEST, panneauOuest); |
Registry.register(RegistreId.PANNEAU_CENTRE, panneauCentre); |
Registry.register(RegistreId.PANNEAU_SUD, panneauSud); |
// Chargement du menu |
chargeMenuApplication(); |
133,6 → 144,18 |
viewport.add(panneauCentre, regionCentre); |
} |
private void creerPanneauSud() { |
panneauSud = new StatutPanneauVue(); |
BorderLayoutData regionSud = new BorderLayoutData(LayoutRegion.SOUTH, 15); |
regionSud.setCollapsible(true); |
regionSud.setFloatable(true); |
regionSud.setSplit(false); |
regionSud.setMargins(new Margins(0)); |
viewport.add(panneauSud, regionSud); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION du MENU |
143,9 → 166,7 |
} |
public void clicMenu(String codeMenuClique) { |
afficherPopinChargement(); |
activerChargement(codeMenuClique); |
panneauCentre.removeAll(); |
if (codeMenuClique.equals(MenuApplicationId.STRUCTURE)) { |
modele.selectionnerStructure(panneauCentre, getProjetId(), null); |
160,6 → 181,16 |
panneauCentre.layout(); |
} |
public void activerChargement(String message) { |
afficherPopinChargement(); |
panneauSud.showBusy(i18n.chargement()+" "+message); |
} |
public void desactiverChargement() { |
masquerPopinChargement(); |
panneauSud.clear(); |
} |
//+----------------------------------------------------------------------------------------------------------------+ |
// GESTION DES FENÊTRES |
//+----------------------------------------------------------------------------------------------------------------+ |
177,8 → 208,8 |
} |
public void ouvrirIdentification() { |
IdentificationFenetre identifFenetre = new IdentificationFenetre(); |
identifFenetre.show(); |
fenetreIdentification = new IdentificationFenetre(); |
fenetreIdentification.show(); |
} |
public void ouvrirApplis(String id) { |
204,13 → 235,6 |
return id; |
} |
public void clicIdentification() { |
// Gestion du login |
IdentificationFenetre dialog = new IdentificationFenetre(); |
dialog.setClosable(false); |
dialog.show(); |
} |
public void connecterUtilisateur(String login, String mdp) { |
modele.connecterUtilisateur(this, login, mdp); |
} |
222,9 → 246,13 |
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 |
Information info = new Information("maj_utilisateur"); |
// Rafraichissement de la fenêtre d'Identification |
if (fenetreIdentification != null) { |
fenetreIdentification.rafraichir(info); |
} |
// Rafraichissement du panneau Nord |
panneauNord.rafraichir(info); |
638,14 → 666,11 |
* Affiche la popin de chargement |
*/ |
public void afficherPopinChargement() { |
((PopupChargement) Registry.get(RegistreId.POPUP_CHARGEMENT)).center(); |
} |
public void masquerPopinChargement() { |
((PopupChargement) Registry.get(RegistreId.POPUP_CHARGEMENT)).hide(); |
} |
} |
/trunk/src/org/tela_botanica/client/ComposantId.java |
---|
15,4 → 15,6 |
public static final String PANNEAU_ENTETE = "coel-entete"; |
public static final String DIV_TITRE = "coel-titre"; |
public static final String DIV_IDENTIFICATION = "coel-identification"; |
public static final String DIV_IDENTIFICATION_MSG = "coel-identification-zone-msg"; |
public static final String PANNEAU_STATUT = "coel-statut"; |
} |
/trunk/src/org/tela_botanica/client/RegistreId.java |
---|
17,4 → 17,5 |
public static final String UTILISATEUR_COURANT = "Utilisateur courant"; |
public static final String PROJET_COURANT = "Objet Projet courant"; |
public static final String POPUP_CHARGEMENT = "Popup chargement"; |
public static final String PANNEAU_SUD = "Barre de statut"; |
} |
/trunk/src/org/tela_botanica/client/vues/PopupChargement.java |
---|
31,5 → 31,4 |
add(cp); |
center(); |
} |
} |
} |
/trunk/src/org/tela_botanica/client/vues/ContenuPanneauVue.java |
---|
47,7 → 47,6 |
Info.display("Chargement d'une liste de personnes", ""); |
} |
} |
mediateur.masquerPopinChargement(); |
mediateur.desactiverChargement(); |
} |
} |
/trunk/src/org/tela_botanica/client/vues/EntetePanneauVue.java |
---|
143,7 → 143,7 |
} |
} |
} else { |
GWT.log("Ce type d'objet n'est pas pris en compte par la méthode rafraichir de la classe EntetePanneauVue", null); |
GWT.log("Ce type d'objet n'est pas pris en compte par la méthode rafraichir de la classe "+getClass(), null); |
} |
layout(); |
} |
/trunk/src/org/tela_botanica/client/composants/AideFenetre.java |
---|
92,7 → 92,7 |
// Panneau Ouest : sommaire |
sommairePanneau = new ContentPanel(); |
sommairePanneau.setScrollMode(Scroll.AUTO); |
BorderLayoutData sommaireDisposition = new BorderLayoutData(LayoutRegion.WEST, 200, 175, 350); |
BorderLayoutData sommaireDisposition = new BorderLayoutData(LayoutRegion.WEST, 230, 175, 350); |
sommaireDisposition.setMargins(new Margins(0, 5, 0, 0)); |
sommaireDisposition.setSplit(true); |
sommaireDisposition.setFloatable(true); |
/trunk/src/org/tela_botanica/client/composants/IdentificationFenetre.java |
---|
1,14 → 1,11 |
package org.tela_botanica.client.composants; |
/* |
* Ext GWT - Ext for GWT |
* Copyright(c) 2007, 2008, Ext JS, LLC. |
* licensing@extjs.com |
* |
* http://extjs.com/license |
*/ |
import org.tela_botanica.client.ComposantId; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.Information; |
import org.tela_botanica.client.modeles.Utilisateur; |
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.event.ButtonEvent; |
15,14 → 12,17 |
import com.extjs.gxt.ui.client.event.ComponentEvent; |
import com.extjs.gxt.ui.client.event.KeyListener; |
import com.extjs.gxt.ui.client.event.SelectionListener; |
import com.extjs.gxt.ui.client.util.Format; |
import com.extjs.gxt.ui.client.util.Params; |
import com.extjs.gxt.ui.client.widget.Dialog; |
import com.extjs.gxt.ui.client.widget.HtmlContainer; |
import com.extjs.gxt.ui.client.widget.button.Button; |
import com.extjs.gxt.ui.client.widget.button.StatusButtonBar; |
import com.extjs.gxt.ui.client.widget.form.TextField; |
import com.extjs.gxt.ui.client.widget.layout.FormLayout; |
import com.google.gwt.user.client.Timer; |
import com.google.gwt.core.client.GWT; |
public class IdentificationFenetre extends Dialog { |
public class IdentificationFenetre extends Dialog implements Rafraichissable { |
protected StatusButtonBar barreDeBoutons; |
protected TextField<String> login; |
29,11 → 29,14 |
protected TextField<String> motDePasse; |
protected Button reinitialiserBouton; |
protected Button validerBouton; |
private Button annulerBouton; |
private String zoneInfoTpl; |
private HtmlContainer zoneInfoHtml; |
public IdentificationFenetre() { |
FormLayout layout = new FormLayout(); |
layout.setLabelWidth(90); |
layout.setDefaultWidth(155); |
layout.setLabelWidth(110); |
layout.setDefaultWidth(220); |
setLayout(layout); |
setButtons(""); |
42,7 → 45,7 |
setModal(true); |
setBodyBorder(true); |
setBodyStyle("padding: 10px;background: none"); |
setWidth(310); |
setWidth(450); |
setResizable(false); |
setAutoWidth(false); |
53,6 → 56,12 |
}; |
zoneInfoHtml = new HtmlContainer(); |
zoneInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION_MSG+"'>{0}</div>"; |
//zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add(""))); |
zoneInfoHtml.hide(); |
add(zoneInfoHtml); |
login = new TextField<String>(); |
login.setMinLength(4); |
login.setFieldLabel("Courriel"); |
87,30 → 96,31 |
}); |
validerBouton = new Button("Valider"); |
//login.disable(); // Par défaut : dois être en mode disable |
validerBouton.disable(); // Par défaut : dois être en mode disable |
validerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
onSubmit(); |
} |
}); |
annulerBouton = new Button("Annuler"); |
annulerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
close(); |
} |
}); |
barreDeBoutons.add(reinitialiserBouton); |
barreDeBoutons.add(annulerBouton); |
barreDeBoutons.add(validerBouton); |
} |
protected void onSubmit() { |
barreDeBoutons.getStatusBar().showBusy("Chargement en cours ..."); |
barreDeBoutons.getStatusBar().showBusy("Vérification..."); |
barreDeBoutons.disable(); |
Timer t = new Timer() { |
@Override |
public void run() { |
IdentificationFenetre.this.hide(); |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).connecterUtilisateur(login.getValue(), motDePasse.getValue()); |
} |
}; |
t.schedule(2);// Par défaut : 2000 |
//IdentificationFenetre.this.hide(); |
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).connecterUtilisateur(login.getValue(), motDePasse.getValue()); |
} |
protected boolean hasValue(TextField<String> field) { |
121,4 → 131,26 |
validerBouton.setEnabled(hasValue(login) && hasValue(motDePasse) && motDePasse.getValue().length() > 3); |
} |
public void rafraichir(Object nouvelleDonnees) { |
if (nouvelleDonnees instanceof Information) { |
Information info = (Information) nouvelleDonnees; |
if (info.getType().equals("maj_utilisateur")) { |
Utilisateur utilisateurCourant = ((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT)); |
if (utilisateurCourant.isIdentifie() == false) { |
barreDeBoutons.getStatusBar().clear(); |
barreDeBoutons.enable(); |
validate(); |
zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add("Mauvais login ou mot de passe"))); |
zoneInfoHtml.show(); |
layout(); |
} else { |
hide(); |
} |
} |
} else { |
GWT.log("Ce type d'objet n'est pas pris en compte par la méthode rafraichir de la classe "+getClass(), null); |
} |
} |
} |
/trunk/src/org/tela_botanica/client/modeles/UtilisateurAsyncDao.java |
---|
27,7 → 27,7 |
private Utilisateur utilisateur = null; |
private String urlServiceBase = null; |
private Rafraichissable rafraichissement = null; |
private Rafraichissable vueARafraichir = null; |
/** |
* Constructeur |
34,7 → 34,7 |
* @param retour : méthode appellée en retour d'appel. |
*/ |
public UtilisateurAsyncDao(Rafraichissable r) { |
rafraichissement = r; |
vueARafraichir = r; |
urlServiceBase = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl(); |
utilisateur = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT); |
} |
62,7 → 62,7 |
boolean identifie = ((JSONBoolean) jsonArray.get(1)).booleanValue(); |
utilisateur.setIdentifie(identifie); |
utilisateur.setLogin(login); |
rafraichissement.rafraichir(utilisateur); |
vueARafraichir.rafraichir(utilisateur); |
} |
} |
}) ; |
97,7 → 97,7 |
utilisateur = new Utilisateur(id, identifie); |
GWT.log(utilisateur.toString(), null); |
rafraichissement.rafraichir(utilisateur); |
vueARafraichir.rafraichir(utilisateur); |
} |
} |
}) ; |
107,7 → 107,7 |
} |
/** |
* Méthode déconnectant un utilisateur de l'application. |
* Méthode connectant un utilisateur à l'application. |
* @param Utilisateur l'utilisateur courant. |
*/ |
public void connecterUtilisateur () { |
123,43 → 123,49 |
GWT.log("Erreur à l'exécution du service " + SERVICE_NOM + " (selection)", exception); |
Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête."); |
} |
public void onErrorHTTP(Request request, Response reponse) { |
// Gestion des erreurs HTTP renvoyé par Apache ou JRest |
Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray()); |
GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null); |
Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString()); |
} |
public void onResponseReceived(Request request, Response response) { |
JSONValue jsonValue = JSONParser.parse(response.getText()); |
JSONArray jsonArray; |
if ((jsonArray = jsonValue.isArray()) != null) { |
if (jsonArray.size() > 0) { |
if (response.getStatusCode() != 200) { |
onErrorHTTP(request, response); |
} else { |
JSONValue jsonValue = JSONParser.parse(response.getText()); |
JSONArray jsonArray; |
if ((jsonArray = jsonValue.isArray()) != null) { |
if (jsonArray.size() > 0) { |
// Identifiant de l'utilisateur ou identifiant de session si non identifié |
utilisateur.setId(((JSONString) jsonArray.get(0)).stringValue()); |
// Identifiant de l'utilisateur ou identifiant de session si non identifié |
utilisateur.setId(((JSONString) jsonArray.get(0)).stringValue()); |
// Drapeau levé si l'utilisateur est déjà identifié |
utilisateur.setIdentifie(((JSONBoolean) jsonArray.get(1)).booleanValue()); |
// Plus de deux valeurs, l'utilisateur est identifié nous récupérons des données supplémentaires |
if (jsonArray.size() > 2) { |
// Nom complet de l'utilisateur |
if (jsonArray.get(2).isString() != null) { |
utilisateur.setNomComplet(((JSONString) jsonArray.get(2)).stringValue()); |
// Drapeau levé si l'utilisateur est déjà identifié |
GWT.log(jsonArray.toString(), null); |
utilisateur.setIdentifie(((JSONBoolean) jsonArray.get(1)).booleanValue()); |
// Plus de deux valeurs, l'utilisateur est identifié nous récupérons des données supplémentaires |
if (jsonArray.size() > 2) { |
// Nom complet de l'utilisateur |
if (jsonArray.get(2).isString() != null) { |
utilisateur.setNomComplet(((JSONString) jsonArray.get(2)).stringValue()); |
} |
// Prénom de l'utilisateur |
if (jsonArray.get(3).isString() != null) { |
utilisateur.setPrenom(((JSONString) jsonArray.get(3)).stringValue()); |
} |
// Nom de l'utilisateur |
if (jsonArray.get(4).isString() != null) { |
utilisateur.setNom(((JSONString) jsonArray.get(4)).stringValue()); |
} |
GWT.log(utilisateur.toString(), null); |
} |
// Prénom de l'utilisateur |
if (jsonArray.get(3).isString() != null) { |
utilisateur.setPrenom(((JSONString) jsonArray.get(3)).stringValue()); |
} |
// Nom de l'utilisateur |
if (jsonArray.get(4).isString() != null) { |
utilisateur.setNom(((JSONString) jsonArray.get(4)).stringValue()); |
} |
GWT.log(utilisateur.toString(), null); |
vueARafraichir.rafraichir(utilisateur); |
} |
rafraichissement.rafraichir(utilisateur); |
} else { |
Info.display("Erreur d'identification", "L'identification a échouée"); |
} |
} |
} |
} |
}) ; |
} catch (RequestException e) { |