Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 357 → Rev 358

/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) {
/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/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/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();
}
}