Subversion Repositories eFlore/Applications.coel

Rev

Rev 444 | Rev 516 | 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
 
307 jp_milcent 3
import org.tela_botanica.client.ComposantClass;
61 jpm 4
import org.tela_botanica.client.ComposantId;
5
import org.tela_botanica.client.Mediateur;
60 jpm 6
import org.tela_botanica.client.RegistreId;
61 jpm 7
import org.tela_botanica.client.interfaces.Rafraichissable;
156 jp_milcent 8
import org.tela_botanica.client.modeles.Information;
61 jpm 9
import org.tela_botanica.client.modeles.Utilisateur;
60 jpm 10
 
11
import com.extjs.gxt.ui.client.Registry;
12
import com.extjs.gxt.ui.client.Style;
13
import com.extjs.gxt.ui.client.Style.Orientation;
499 jp_milcent 14
import com.extjs.gxt.ui.client.event.ButtonEvent;
60 jpm 15
import com.extjs.gxt.ui.client.event.ComponentEvent;
499 jp_milcent 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;
61 jpm 35
	private ButtonBar barreBoutons = null;
36
	private Button identificationBouton = null;
307 jp_milcent 37
	private String identificationInfoTpl = null;
66 jpm 38
	private HtmlContainer identificationInfoHtml = null;
61 jpm 39
 
444 jp_milcent 40
	public EnteteVue(Mediateur mediateurCourant) {
371 jp_milcent 41
		mediateur = mediateurCourant;
60 jpm 42
		setLayout(new RowLayout(Orientation.HORIZONTAL));
307 jp_milcent 43
		setId(ComposantId.PANNEAU_ENTETE);
60 jpm 44
 
45
		// TODO : ajouter la gestion de l'identification
46
		HtmlContainer html = new HtmlContainer();
47
		StringBuffer sb = new StringBuffer();
307 jp_milcent 48
		sb.append("	<div id='"+ComposantId.DIV_TITRE+"'>Collections en Ligne Demo</div>");
60 jpm 49
		html.setHtml(sb.toString());
499 jp_milcent 50
		html.setEnabled(false);
60 jpm 51
 
66 jpm 52
		identificationInfoHtml = new HtmlContainer();
307 jp_milcent 53
		identificationInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION+"'>{0}</div>";
66 jpm 54
		identificationInfoHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Mode anonyme")));
499 jp_milcent 55
		identificationInfoHtml.setEnabled(false);
61 jpm 56
 
57
		// Création des écouteurs
499 jp_milcent 58
		SelectionListener<ButtonEvent> boutonEcouteur = new SelectionListener<ButtonEvent>() {
59
			public void componentSelected(ButtonEvent be) {
60
				Button btn = (Button) be.getComponent();
372 jp_milcent 61
 
371 jp_milcent 62
				String message = Format.substitute("Chargement de la fenêtre «{0}» en cours...", btn.getText());
372 jp_milcent 63
 
61 jpm 64
				if (btn.getId().equals(ComposantId.BTN_AIDE)) {
65
					((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirAide();
66
				} else if (btn.getId().equals(ComposantId.BTN_PARAMETRES)) {
67
					((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirParametres();
65 jpm 68
				} else if (btn.getId().equals(ComposantId.BTN_CONNEXION)) {
61 jpm 69
					((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirIdentification();
65 jpm 70
				} else if (btn.getId().equals(ComposantId.BTN_DECONNEXION)) {
71
					((Mediateur) Registry.get(RegistreId.MEDIATEUR)).deconnecterUtilisateur();
371 jp_milcent 72
					Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);
73
					message = Format.substitute("Déconnexion de l'utilisateur «{0}» en cours...", utilisateurCourant.getNomComplet());
61 jpm 74
				} else if (btn.getId().equals(ComposantId.BTN_APPLIS)) {
75
					btn.getMenu().show(btn);
372 jp_milcent 76
					message = "";
61 jpm 77
				}
372 jp_milcent 78
 
79
				if (!message.equals("")) {
80
					Info.display(mediateur.i18nC.chargement(), message);
81
				}
60 jpm 82
			}
83
		};
84
 
61 jpm 85
		barreBoutons = new ButtonBar();
499 jp_milcent 86
		barreBoutons.setAlignment(Style.HorizontalAlignment.RIGHT);
357 jp_milcent 87
 
88
		identificationBouton = new Button("Identifiez vous...", boutonEcouteur);
89
		identificationBouton.setId(ComposantId.BTN_CONNEXION);
90
		barreBoutons.add(identificationBouton);
91
 
61 jpm 92
		Button parametresBouton = new Button("Paramêtres", boutonEcouteur);
93
		parametresBouton.setId(ComposantId.BTN_PARAMETRES);
307 jp_milcent 94
		parametresBouton.setIconStyle(ComposantClass.ICONE_PARAMETRE);
61 jpm 95
		barreBoutons.add(parametresBouton);
357 jp_milcent 96
 
61 jpm 97
		Button aideBouton = new Button("Aide", boutonEcouteur);
98
		aideBouton.setId(ComposantId.BTN_AIDE);
307 jp_milcent 99
		aideBouton.setIconStyle(ComposantClass.ICONE_AIDE);
61 jpm 100
		barreBoutons.add(aideBouton);
357 jp_milcent 101
 
61 jpm 102
		SplitButton applisBouton = new SplitButton("Changez d'application...");
103
		applisBouton.setId(ComposantId.BTN_APPLIS);
104
		applisBouton.addSelectionListener(boutonEcouteur);
60 jpm 105
 
61 jpm 106
		Menu menu = new Menu();
499 jp_milcent 107
		MenuItem menuCel = new MenuItem("Carnet en ligne");
108
		menuCel.addSelectionListener(new SelectionListener<MenuEvent>() {
61 jpm 109
			@Override
499 jp_milcent 110
			public void componentSelected(MenuEvent mEvent) {
111
				Menu me = (Menu) mEvent.getComponent();
61 jpm 112
				MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_CEL);
371 jp_milcent 113
				Info.display(mediateur.i18nC.chargement(), "Ouverture de l'application «{0}» en cours...", mi.getText());
61 jpm 114
				((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirApplis(ComposantId.MENU_CEL);
115
			}
116
		});
117
		menuCel.setId(ComposantId.MENU_CEL);
307 jp_milcent 118
		menuCel.setIconStyle(ComposantClass.ICONE_CEL);
61 jpm 119
		menu.add(menuCel);
499 jp_milcent 120
		MenuItem menuBel = new MenuItem("Biblio en ligne");
121
		menuBel.addSelectionListener(new SelectionListener<MenuEvent>() {
61 jpm 122
			@Override
499 jp_milcent 123
			public void componentSelected(MenuEvent mEvent) {
124
				Menu me = (Menu) mEvent.getComponent();
61 jpm 125
				MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_BEL);
371 jp_milcent 126
				Info.display(mediateur.i18nC.chargement(), "Ouverture de l'application «{0}» en cours...", mi.getText());
61 jpm 127
				((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirApplis(ComposantId.MENU_BEL);
128
			}
129
		});
130
		menuBel.setId(ComposantId.MENU_BEL);
307 jp_milcent 131
		menuBel.setIconStyle(ComposantClass.ICONE_BEL);
61 jpm 132
		menu.add(menuBel);
133
 
69 jpm 134
		applisBouton.setMenu(menu);
307 jp_milcent 135
		applisBouton.setIconStyle(ComposantClass.ICONE_BASCULE);
61 jpm 136
		barreBoutons.add(applisBouton);
137
 
138
		add(html, new RowData(.3, 1));
357 jp_milcent 139
		add(identificationInfoHtml, new RowData(.3, 1));
140
		add(barreBoutons, new RowData(.4, 1));
60 jpm 141
	}
61 jpm 142
 
143
	public void rafraichir(Object nouvelleDonnees) {
156 jp_milcent 144
		if (nouvelleDonnees instanceof Information) {
145
			Information info = (Information) nouvelleDonnees;
146
			if (info.getType().equals("maj_utilisateur")) {
277 jp_milcent 147
				Utilisateur utilisateur = ((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT));
156 jp_milcent 148
				if (utilisateur.isIdentifie() == true) {
149
					identificationInfoHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Bienvenue : "+utilisateur.getNomComplet())));
150
					identificationBouton.setText("Deconnexion");
307 jp_milcent 151
					identificationBouton.setIconStyle(ComposantClass.ICONE_DECONNEXION);
156 jp_milcent 152
					identificationBouton.setId(ComposantId.BTN_DECONNEXION);
153
				} else {
154
					identificationInfoHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Mode anonyme")));
155
					identificationBouton.setText("Identifiez vous...");
307 jp_milcent 156
					identificationBouton.setIconStyle(ComposantClass.ICONE_CONNEXION);
156 jp_milcent 157
					identificationBouton.setId(ComposantId.BTN_CONNEXION);
158
				}
65 jpm 159
			}
156 jp_milcent 160
		} else {
358 jp_milcent 161
			GWT.log("Ce type d'objet n'est pas pris en compte par la méthode rafraichir de la classe "+getClass(), null);
61 jpm 162
		}
156 jp_milcent 163
		layout();
61 jpm 164
	}
60 jpm 165
}