Subversion Repositories eFlore/Applications.coel

Rev

Rev 1908 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
894 gduche 1
package org.tela_botanica.client.composants;
2
 
3
 
1908 mathias 4
import org.tela_botanica.client.Coel;
1105 jpm 5
import org.tela_botanica.client.ComposantClass;
894 gduche 6
import org.tela_botanica.client.ComposantId;
7
import org.tela_botanica.client.Mediateur;
8
import org.tela_botanica.client.RegistreId;
1104 jpm 9
import org.tela_botanica.client.i18n.Constantes;
894 gduche 10
import org.tela_botanica.client.images.Images;
11
import org.tela_botanica.client.interfaces.Rafraichissable;
12
import org.tela_botanica.client.modeles.Information;
1909 mathias 13
import org.tela_botanica.client.modeles.UtilisateurAsyncDao;
894 gduche 14
 
15
import com.extjs.gxt.ui.client.Registry;
16
import com.extjs.gxt.ui.client.Style.Scroll;
1104 jpm 17
import com.extjs.gxt.ui.client.event.ButtonEvent;
18
import com.extjs.gxt.ui.client.event.SelectionListener;
894 gduche 19
import com.extjs.gxt.ui.client.util.Format;
20
import com.extjs.gxt.ui.client.util.Params;
21
import com.extjs.gxt.ui.client.widget.Dialog;
22
import com.extjs.gxt.ui.client.widget.LayoutContainer;
23
import com.extjs.gxt.ui.client.widget.Text;
24
import com.extjs.gxt.ui.client.widget.button.Button;
25
import com.extjs.gxt.ui.client.widget.form.CheckBox;
26
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
27
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
28
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
29
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
30
import com.google.gwt.user.client.ui.HTML;
31
 
32
public class LicenceFenetre extends Dialog implements Rafraichissable{
1104 jpm 33
 
34
	private Constantes i18nC = null;
35
	protected Button validerBouton = null;
36
	private Button annulerBouton = null;
37
 
1073 gduche 38
	private String messageErreurTpl = "<div id='" + ComposantId.DIV_IDENTIFICATION_MSG + "'>{message}</div>";
894 gduche 39
	private LayoutContainer messageErreur;
40
	private HTML texteLicence;
1105 jpm 41
	private String licenceTpl = "<div class='{css_corps}'>{licence}</div>";
894 gduche 42
	private IdentificationFenetre fenetreIdentification;
43
	private CheckBox accepter;
44
 
1909 mathias 45
	public LicenceFenetre(IdentificationFenetre vueARafraichir)	 {
46
 
894 gduche 47
		fenetreIdentification = vueARafraichir;
1909 mathias 48
 
894 gduche 49
		setSize(500, 300);
50
		setPlain(true);
1680 raphael 51
		setHeadingHtml("Licence d'utilisation");
894 gduche 52
		setIcon(Images.ICONES.application());
53
		setLayout(new RowLayout());
54
		setButtons(Dialog.OKCANCEL);
1909 mathias 55
 
894 gduche 56
		messageErreur = new LayoutContainer();
57
		messageErreur.setLayout(new FitLayout());
58
		add(messageErreur);
1909 mathias 59
 
894 gduche 60
		LayoutContainer licence = new LayoutContainer();
61
		licence.setSize("98%", "75%");
62
		licence.setStyleAttribute("padding", "5px");
63
		licence.setLayout(new FlowLayout());
64
		licence.setScrollMode(Scroll.AUTO);
1909 mathias 65
 
894 gduche 66
		texteLicence = new HTML();
67
		licence.add(texteLicence);
68
		add(licence);
1909 mathias 69
 
894 gduche 70
		LayoutContainer cbContainer = new LayoutContainer(new ColumnLayout());
71
		accepter = new CheckBox();
72
		cbContainer.add(accepter);
73
		add(cbContainer);
74
 
1071 gduche 75
		Text txtAccepter = new Text(Mediateur.i18nC.licenceJaccepte());
894 gduche 76
		txtAccepter.setStyleAttribute("padding", "3px");
77
		cbContainer.add(txtAccepter);
78
		setClosable(false);
79
 
80
		show();
81
		initialiserComposants();
82
	}
83
 
84
	public void initialiserComposants()	{
85
		Params licenceParam = new Params();
1071 gduche 86
		licenceParam.set("message", Mediateur.i18nC.licenceAccepter());
894 gduche 87
		messageErreur.el().setInnerHtml(Format.substitute(messageErreurTpl, licenceParam));
88
 
1105 jpm 89
		Params parametres = new Params();
894 gduche 90
		String licence = Mediateur.i18nC.licence();
1105 jpm 91
		parametres.set("licence", licence);
92
		parametres.set("css_corps", ComposantClass.DETAIL_CORPS_CONTENU);
93
		texteLicence.setHTML(Format.substitute(licenceTpl, parametres));
894 gduche 94
	}
95
 
96
	@Override
97
	protected void createButtons() {
1104 jpm 98
		// FIXME : l'instanciation dans le constructeur ne marche pas pour cette méthode...
99
		i18nC = Mediateur.i18nC;
100
 
101
		getButtonBar().removeAll();
102
 
103
		validerBouton = new Button(i18nC.valider());
104
		validerBouton.setItemId(OK);
105
		validerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
106
			public void componentSelected(ButtonEvent ce) {
107
				onButtonPressed(ce.getButton());
108
			}
109
		});
110
 
111
		annulerBouton = new Button(i18nC.annuler());
112
		annulerBouton.setItemId(CANCEL);
113
		annulerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
114
			public void componentSelected(ButtonEvent ce) {
115
				onButtonPressed(ce.getButton());
116
			}
117
		});
118
 
119
		addButton(annulerBouton);
120
		addButton(validerBouton);
894 gduche 121
	}
122
 
1104 jpm 123
	@Override
894 gduche 124
	protected void onButtonPressed(Button button) {
125
		if (Dialog.OK.equals(button.getItemId()))	{
126
			button.setEnabled(false);
127
			boolean licenceAcceptee = accepter.getValue();
128
			if (licenceAcceptee == true)	{
129
				((Mediateur) Registry.get(RegistreId.MEDIATEUR)).accepterLicence(this);
130
			} else	{
131
				hide();
132
			}
133
		} else {
134
			hide();
135
		}
136
	}
137
 
138
	public void rafraichir(Object nouvellesDonnees) {
139
		if (nouvellesDonnees instanceof Information)	{
140
			Information info = (Information) nouvellesDonnees;
1909 mathias 141
			if (info.getType().equals("maj_licence")) {
894 gduche 142
				String licence = info.getDonnee(0).toString();
1909 mathias 143
				if (licence.equals("1")) {
144
					if (fenetreIdentification != null && fenetreIdentification.isVisible()) {
145
						// si on est en train de se logger depuis Coel
146
						fenetreIdentification.onSubmit();
147
					} else {
148
						// si on était loggé depuis ailleurs par le SSO,
149
						// get état utilisateur forcé pour rafraîchir l'état de l'utilisateur maitnenant
150
						// que la licence est acceptée - on pourrait sûrement faire mieux
151
						// (ne pas rappeler le SSO ?)
152
						Mediateur lePutainDeMediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
153
						UtilisateurAsyncDao uad = new UtilisateurAsyncDao(lePutainDeMediateur);
154
						uad.getEtatUtilisateur();
155
					}
894 gduche 156
					hide();
157
				} else	{
158
					//Licence non acceptée, on masque la fenêtre pour laisser
159
					// affiché la fenêtre d'identification qui est en erreur.
160
					hide();
161
				}
162
			}
163
		}
164
 
165
	}
166
 
167
 
168
}