New file |
0,0 → 1,189 |
package org.tela_botanica.client.composants; |
|
import org.tela_botanica.client.ComposantId; |
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
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.modeles.Utilisateur; |
import org.tela_botanica.client.util.Debug; |
|
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.HorizontalAlignment; |
import com.extjs.gxt.ui.client.event.ButtonEvent; |
import com.extjs.gxt.ui.client.event.ComponentEvent; |
import com.extjs.gxt.ui.client.event.Events; |
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.Status; |
import com.extjs.gxt.ui.client.widget.button.Button; |
import com.extjs.gxt.ui.client.widget.form.TextField; |
import com.extjs.gxt.ui.client.widget.layout.FormLayout; |
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem; |
import com.google.gwt.event.dom.client.KeyCodes; |
|
public class IdentificationFenetre extends Dialog implements Rafraichissable { |
|
private Mediateur mediateur = null; |
private Constantes i18nC = null; |
protected TextField<String> login = null; |
protected TextField<String> motDePasse = null; |
protected Button validerBouton = null; |
private Button annulerBouton = null; |
protected Status status = null; |
private String zoneInfoTpl = null; |
private HtmlContainer zoneInfoHtml = null; |
|
public IdentificationFenetre(Mediateur mediateurCourrant) { |
mediateur = mediateurCourrant; |
i18nC = Mediateur.i18nC; |
|
initialiserSquelettes(); |
|
FormLayout layout = new FormLayout(); |
layout.setLabelWidth(110); |
layout.setDefaultWidth(220); |
setLayout(layout); |
|
setButtonAlign(HorizontalAlignment.RIGHT); |
setButtons(""); |
setIcon(Images.ICONES.utilisateur()); |
setHeadingHtml(Registry.get(RegistreId.APPLI_NOM)+" - "+i18nC.identificationTitre()); |
setModal(true); |
setBodyBorder(true); |
setBodyStyle("padding: 10px;background: none"); |
setWidth(450); |
setResizable(false); |
setAutoWidth(false); |
|
|
KeyListener keyListener = new KeyListener() { |
public void componentKeyUp(ComponentEvent event) { |
valider(); |
} |
@SuppressWarnings("unchecked") |
public void componentKeyPress(ComponentEvent evenement) { |
if (evenement.getKeyCode() == KeyCodes.KEY_ENTER) { |
TextField<String> champ = (TextField<String>) evenement.getSource(); |
if (champ.getFieldLabel().equals(i18nC.motDePasse())) { |
validerBouton.fireEvent(Events.Select); |
} |
} |
} |
}; |
|
zoneInfoHtml = new HtmlContainer(); |
zoneInfoHtml.hide(); |
add(zoneInfoHtml); |
|
login = new TextField<String>(); |
login.setMinLength(4); |
login.setFieldLabel(i18nC.login()); |
login.addKeyListener(keyListener); |
add(login); |
|
motDePasse = new TextField<String>(); |
motDePasse.setMinLength(4); |
motDePasse.setPassword(true); |
motDePasse.setFieldLabel(i18nC.motDePasse()); |
motDePasse.addKeyListener(keyListener); |
add(motDePasse); |
|
setFocusWidget(login); |
} |
|
private void initialiserSquelettes() { |
zoneInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION_MSG+"'>{0}</div>"; |
} |
|
@Override |
protected void createButtons() { |
super.createButtons(); |
// FIXME : l'instanciation dans le constructeur ne marche pas pour cette méthode... |
i18nC = Mediateur.i18nC; |
|
status = new Status(); |
status.setBusy(i18nC.identificationVerification()); |
status.hide(); |
status.setAutoWidth(true); |
getButtonBar().add(status); |
|
getButtonBar().add(new FillToolItem()); |
|
validerBouton = new Button(i18nC.valider()); |
validerBouton.disable(); // Par défaut : dois être en mode disable |
validerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
onSubmit(); |
} |
}); |
|
annulerBouton = new Button(i18nC.annuler()); |
annulerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
hide(); |
} |
}); |
|
addButton(annulerBouton); |
addButton(validerBouton); |
} |
|
protected void onSubmit() { |
status.show(); |
getButtonBar().disable(); |
mediateur.connecterUtilisateur(login.getValue(), motDePasse.getValue()); |
} |
|
protected boolean avoirValeur(TextField<String> field) { |
return field.getValue() != null && field.getValue().length() > 0; |
} |
|
protected void valider() { |
validerBouton.setEnabled(avoirValeur(login) && avoirValeur(motDePasse) && motDePasse.getValue().length() > 3); |
} |
|
public void rafraichir(Object nouvellesDonnees) { |
if (nouvellesDonnees instanceof Information) { |
Information info = (Information) nouvellesDonnees; |
if (info.getType().equals("maj_utilisateur")) { |
Utilisateur utilisateurCourant = mediateur.getUtilisateur(); |
|
if (!utilisateurCourant.isIdentifie() || !utilisateurCourant.avoirLicenceAcceptee()) { |
// Licence n'a jamais été acceptée |
if (utilisateurCourant.getLicence().equals("")) { |
afficherErreur(i18nC.identificationMauvaise()); |
// NON à la licence |
} else if (utilisateurCourant.getLicence().equals("0")){ |
afficherErreur(i18nC.licenceAccepter()); |
mediateur.afficherFenetreLicence(this); |
// Cas inconnu |
} else { |
hide(); |
} |
} else { |
hide(); |
} |
} |
} else { |
Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass())); |
} |
|
} |
|
public void afficherErreur(String erreur) { |
status.hide(); |
getButtonBar().enable(); |
valider(); |
zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add(erreur))); |
zoneInfoHtml.show(); |
layout(); |
} |
|
} |
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/composants/IdentificationFenetre.java:r1136-1367 |
Merged /trunk/src/org/tela_botanica/client/composants/IdentificationFenetre.java:r11-59,1209-1382 |
Merged /branches/v1.1-aramon/src/org/tela_botanica/client/composants/IdentificationFenetre.java:r1383-1511 |