Subversion Repositories eFlore/Applications.coel

Rev

Rev 989 | Rev 1013 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
60 jpm 1
package org.tela_botanica.client.vues;
2
 
61 jpm 3
import org.tela_botanica.client.ComposantId;
4
import org.tela_botanica.client.Mediateur;
60 jpm 5
import org.tela_botanica.client.RegistreId;
536 jp_milcent 6
import org.tela_botanica.client.i18n.Constantes;
516 jp_milcent 7
import org.tela_botanica.client.images.Images;
61 jpm 8
import org.tela_botanica.client.interfaces.Rafraichissable;
156 jp_milcent 9
import org.tela_botanica.client.modeles.Information;
61 jpm 10
import org.tela_botanica.client.modeles.Utilisateur;
60 jpm 11
 
12
import com.extjs.gxt.ui.client.Registry;
13
import com.extjs.gxt.ui.client.Style;
14
import com.extjs.gxt.ui.client.Style.Orientation;
499 jp_milcent 15
import com.extjs.gxt.ui.client.event.ButtonEvent;
16
import com.extjs.gxt.ui.client.event.MenuEvent;
60 jpm 17
import com.extjs.gxt.ui.client.event.SelectionListener;
66 jpm 18
import com.extjs.gxt.ui.client.util.Format;
19
import com.extjs.gxt.ui.client.util.Params;
60 jpm 20
import com.extjs.gxt.ui.client.widget.HtmlContainer;
21
import com.extjs.gxt.ui.client.widget.Info;
22
import com.extjs.gxt.ui.client.widget.LayoutContainer;
23
import com.extjs.gxt.ui.client.widget.button.Button;
24
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
25
import com.extjs.gxt.ui.client.widget.button.SplitButton;
26
import com.extjs.gxt.ui.client.widget.layout.RowData;
27
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
28
import com.extjs.gxt.ui.client.widget.menu.Menu;
29
import com.extjs.gxt.ui.client.widget.menu.MenuItem;
156 jp_milcent 30
import com.google.gwt.core.client.GWT;
60 jpm 31
 
444 jp_milcent 32
public class EnteteVue extends LayoutContainer implements Rafraichissable {
371 jp_milcent 33
 
34
	private Mediateur mediateur = null;
536 jp_milcent 35
	private Constantes i18nC = null;
1012 jpm 36
 
37
	private String identificationInfoTpl = null;
38
	private String titreTpl = null;
39
	private String generalMessageTpl = null;
40
	private String deconnexionMessageTpl = null;
41
	private String lienExterneMessageTpl = null;
42
 
43
	private HtmlContainer conteneurHtml = null;
44
	private SelectionListener<ButtonEvent> boutonEcouteur = null;
61 jpm 45
	private ButtonBar barreBoutons = null;
46
	private Button identificationBouton = null;
1012 jpm 47
	private SplitButton feedbackBouton = null;
48
	private SplitButton aideBouton = null;
49
	private SplitButton applisBouton = null;
61 jpm 50
 
444 jp_milcent 51
	public EnteteVue(Mediateur mediateurCourant) {
371 jp_milcent 52
		mediateur = mediateurCourant;
1012 jpm 53
		i18nC = Mediateur.i18nC;
54
 
55
		setId(ComposantId.PANNEAU_ENTETE);
60 jpm 56
		setLayout(new RowLayout(Orientation.HORIZONTAL));
57
 
1012 jpm 58
		initialiserSquelettes();
59
		boutonEcouteur = getEcouteurDesBoutons();
60
		conteneurHtml = getIdentification();
61
		identificationBouton = getBoutonIdentification();
62
		feedbackBouton = getBoutonAFeedback();
63
		aideBouton = getBoutonAide();
64
		applisBouton = getBoutonApplications();
65
 
66
		barreBoutons = new ButtonBar();
67
		barreBoutons.setAlignment(Style.HorizontalAlignment.RIGHT);
68
		barreBoutons.add(conteneurHtml);
69
		barreBoutons.add(identificationBouton);
70
		barreBoutons.add(aideBouton);
71
		barreBoutons.add(feedbackBouton);
72
		barreBoutons.add(applisBouton);
73
 
74
		add(getTitre(), new RowData(.20, 1));
75
		add(barreBoutons, new RowData(.8, 1));
76
	}
77
 
78
	private void initialiserSquelettes() {
79
		identificationInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION+"'>{0}</div>";
80
		titreTpl = "<div id='"+ComposantId.DIV_TITRE+"'>{0}</div>";
81
		generalMessageTpl = "Chargement de la fenêtre «{0}» en cours...";
82
		deconnexionMessageTpl = "Déconnexion de l'utilisateur «{0}» en cours...";
83
		lienExterneMessageTpl = "Ouverture du lien externe «{0}» en cours...";
84
	}
85
 
86
	private HtmlContainer getTitre() {
536 jp_milcent 87
		HtmlContainer titreConteneurHtml = new HtmlContainer();
1012 jpm 88
		titreConteneurHtml.setHtml(Format.substitute(titreTpl, i18nC.appliNom()));
89
		return titreConteneurHtml;
90
	}
91
 
92
	private HtmlContainer getIdentification() {
93
		HtmlContainer conteneurHtml = new HtmlContainer();
60 jpm 94
 
1012 jpm 95
		conteneurHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Mode anonyme")));
96
		return conteneurHtml;
97
	}
98
 
99
	private SelectionListener<ButtonEvent> getEcouteurDesBoutons() {
499 jp_milcent 100
		SelectionListener<ButtonEvent> boutonEcouteur = new SelectionListener<ButtonEvent>() {
101
			public void componentSelected(ButtonEvent be) {
102
				Button btn = (Button) be.getComponent();
1012 jpm 103
				String id = btn.getId();
104
				String message = "";
372 jp_milcent 105
 
1012 jpm 106
				if (id.equals(ComposantId.BTN_AIDE)
107
						|| id.equals(ComposantId.BTN_FEEDBACK)
108
						|| id.equals(ComposantId.BTN_APPLIS)) {
109
					btn.showMenu();
110
				} else if (id.equals(ComposantId.BTN_CONNEXION)) {
111
					mediateur.ouvrirIdentification();
112
					message = Format.substitute(generalMessageTpl, btn.getText());
113
				} else if (id.equals(ComposantId.BTN_DECONNEXION)) {
114
					mediateur.deconnecterUtilisateur();
115
					Utilisateur utilisateurCourant = mediateur.getUtilisateur();
116
					message = Format.substitute(deconnexionMessageTpl, utilisateurCourant.getNomComplet());
117
				} else if (id.equals(ComposantId.BTN_APPLIS)) {
61 jpm 118
					btn.getMenu().show(btn);
119
				}
372 jp_milcent 120
 
121
				if (!message.equals("")) {
1012 jpm 122
					Info.display(i18nC.chargement(), message);
372 jp_milcent 123
				}
60 jpm 124
			}
125
		};
1012 jpm 126
		return boutonEcouteur;
127
	}
128
 
129
	private Button getBoutonIdentification() {
130
		Button bouton = new Button(i18nC.identification(), boutonEcouteur);
131
		bouton.setId(ComposantId.BTN_CONNEXION);
132
		return bouton;
133
	}
134
 
135
	private SplitButton getBoutonAide() {
136
		MenuItem menuDoc = new MenuItem(i18nC.doc());
137
		menuDoc.addSelectionListener(new SelectionListener<MenuEvent>() {
138
			@Override
139
			public void componentSelected(MenuEvent mEvent) {
140
				((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirAide();
141
			}
142
		});
143
		menuDoc.setId(ComposantId.MENU_DOC);
144
		menuDoc.setIcon(Images.ICONES.aide());
60 jpm 145
 
357 jp_milcent 146
 
1012 jpm 147
		MenuItem menuApropos = new MenuItem(i18nC.apropos());
148
		menuApropos.addSelectionListener(new SelectionListener<MenuEvent>() {
149
			@Override
150
			public void componentSelected(MenuEvent mEvent) {
151
				((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirParametres();
152
			}
153
		});
154
		menuApropos.setId(ComposantId.MENU_APROPOS);
155
		menuApropos.setIcon(Images.ICONES.engrenages());
544 jp_milcent 156
 
1012 jpm 157
		Menu menuAide = new Menu();
158
		menuAide.add(menuDoc);
159
		menuAide.add(menuApropos);
357 jp_milcent 160
 
1012 jpm 161
		SplitButton boutonAvecMenus = new SplitButton(i18nC.aide());
162
		boutonAvecMenus.setId(ComposantId.BTN_AIDE);
163
		boutonAvecMenus.setIcon(Images.ICONES.aide());
164
		boutonAvecMenus.addSelectionListener(boutonEcouteur);
165
		boutonAvecMenus.setMenu(menuAide);
166
		return boutonAvecMenus;
167
	}
168
 
169
	private SplitButton getBoutonAFeedback() {
170
		MenuItem menuBogue = new MenuItem(i18nC.bogue());
989 jpm 171
		menuBogue.addSelectionListener(new SelectionListener<MenuEvent>() {
172
			@Override
173
			public void componentSelected(MenuEvent mEvent) {
174
				Menu me = (Menu) mEvent.getComponent();
175
				MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_BOGUE);
1012 jpm 176
				Info.display(Mediateur.i18nC.chargement(), lienExterneMessageTpl, mi.getText());
989 jpm 177
				((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirUrlExterne(ComposantId.MENU_BOGUE);
178
			}
179
		});
180
		menuBogue.setId(ComposantId.MENU_BOGUE);
181
		menuBogue.setIcon(Images.ICONES.bogue());
1012 jpm 182
 
183
		MenuItem menuCommentaire = new MenuItem(i18nC.remarques());
989 jpm 184
		menuCommentaire.addSelectionListener(new SelectionListener<MenuEvent>() {
185
			@Override
186
			public void componentSelected(MenuEvent mEvent) {
187
				Menu me = (Menu) mEvent.getComponent();
188
				MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_COMMENTAIRE);
1012 jpm 189
				Info.display(Mediateur.i18nC.chargement(), lienExterneMessageTpl, mi.getText());
989 jpm 190
				((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirUrlExterne(ComposantId.MENU_COMMENTAIRE);
191
			}
192
		});
193
		menuCommentaire.setId(ComposantId.MENU_COMMENTAIRE);
194
		menuCommentaire.setIcon(Images.ICONES.commentaire());
1012 jpm 195
 
196
		Menu menuFeedback = new Menu();
197
		menuFeedback.add(menuBogue);
989 jpm 198
		menuFeedback.add(menuCommentaire);
199
 
1012 jpm 200
		SplitButton boutonAvecMenus = new SplitButton(i18nC.feedback());
201
		boutonAvecMenus.setId(ComposantId.BTN_FEEDBACK);
202
		boutonAvecMenus.addSelectionListener(boutonEcouteur);
203
		boutonAvecMenus.setMenu(menuFeedback);
204
		boutonAvecMenus.setIcon(Images.ICONES.flecheDedansDehors());
205
		return boutonAvecMenus;
206
	}
207
 
208
	private SplitButton getBoutonApplications() {
499 jp_milcent 209
		MenuItem menuCel = new MenuItem("Carnet en ligne");
210
		menuCel.addSelectionListener(new SelectionListener<MenuEvent>() {
61 jpm 211
			@Override
499 jp_milcent 212
			public void componentSelected(MenuEvent mEvent) {
213
				Menu me = (Menu) mEvent.getComponent();
61 jpm 214
				MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_CEL);
733 jpm 215
				Info.display(Mediateur.i18nC.chargement(), "Ouverture de l'application «{0}» en cours...", mi.getText());
989 jpm 216
				((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirUrlExterne(ComposantId.MENU_CEL);
61 jpm 217
			}
218
		});
219
		menuCel.setId(ComposantId.MENU_CEL);
516 jp_milcent 220
		menuCel.setIcon(Images.ICONES.images());
1012 jpm 221
 
499 jp_milcent 222
		MenuItem menuBel = new MenuItem("Biblio en ligne");
223
		menuBel.addSelectionListener(new SelectionListener<MenuEvent>() {
61 jpm 224
			@Override
499 jp_milcent 225
			public void componentSelected(MenuEvent mEvent) {
226
				Menu me = (Menu) mEvent.getComponent();
61 jpm 227
				MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_BEL);
733 jpm 228
				Info.display(Mediateur.i18nC.chargement(), "Ouverture de l'application «{0}» en cours...", mi.getText());
989 jpm 229
				((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirUrlExterne(ComposantId.MENU_BEL);
61 jpm 230
			}
231
		});
232
		menuBel.setId(ComposantId.MENU_BEL);
516 jp_milcent 233
		menuBel.setIcon(Images.ICONES.livreOuvert());
1012 jpm 234
 
235
		Menu menu = new Menu();
236
		menu.add(menuCel);
61 jpm 237
		menu.add(menuBel);
238
 
1012 jpm 239
		SplitButton boutonAvecMenus = new SplitButton("Changez d'application...");
240
		boutonAvecMenus.setId(ComposantId.BTN_APPLIS);
241
		boutonAvecMenus.addSelectionListener(boutonEcouteur);
242
		boutonAvecMenus.setMenu(menu);
243
		boutonAvecMenus.setIcon(Images.ICONES.flecheBascule());
61 jpm 244
 
1012 jpm 245
		return boutonAvecMenus;
60 jpm 246
	}
1012 jpm 247
 
899 gduche 248
	public void rafraichir(Object nouvellesDonnees) {
249
		if (nouvellesDonnees instanceof Information) {
250
			Information info = (Information) nouvellesDonnees;
156 jp_milcent 251
			if (info.getType().equals("maj_utilisateur")) {
277 jp_milcent 252
				Utilisateur utilisateur = ((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT));
942 jpm 253
				if (utilisateur.isIdentifie()) {
899 gduche 254
					if (utilisateur.existeDansAnnuaire())	{
255
						utilisateur.majUtilisateurInfoAnnuaire();
256
					}
1012 jpm 257
					conteneurHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Bienvenue : "+utilisateur.getNomComplet())));
156 jp_milcent 258
					identificationBouton.setText("Deconnexion");
516 jp_milcent 259
					identificationBouton.setIcon(Images.ICONES.deconnexion());
156 jp_milcent 260
					identificationBouton.setId(ComposantId.BTN_DECONNEXION);
261
				} else {
1012 jpm 262
					conteneurHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Mode anonyme")));
156 jp_milcent 263
					identificationBouton.setText("Identifiez vous...");
516 jp_milcent 264
					identificationBouton.setIcon(Images.ICONES.connexion());
156 jp_milcent 265
					identificationBouton.setId(ComposantId.BTN_CONNEXION);
266
				}
65 jpm 267
			}
899 gduche 268
		} else if (nouvellesDonnees instanceof Utilisateur ) {
269
 
270
		}	else 	{
358 jp_milcent 271
			GWT.log("Ce type d'objet n'est pas pris en compte par la méthode rafraichir de la classe "+getClass(), null);
61 jpm 272
		}
156 jp_milcent 273
		layout();
61 jpm 274
	}
60 jpm 275
}