Rev 499 | Rev 544 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues;
import org.tela_botanica.client.ComposantClass;
import org.tela_botanica.client.ComposantId;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
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 com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style;
import com.extjs.gxt.ui.client.Style.Orientation;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.MenuEvent;
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.HtmlContainer;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.ButtonBar;
import com.extjs.gxt.ui.client.widget.button.SplitButton;
import com.extjs.gxt.ui.client.widget.layout.RowData;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;
import com.google.gwt.core.client.GWT;
public class EnteteVue extends LayoutContainer implements Rafraichissable {
private Mediateur mediateur = null;
private ButtonBar barreBoutons = null;
private Button identificationBouton = null;
private String identificationInfoTpl = null;
private HtmlContainer identificationInfoHtml = null;
public EnteteVue(Mediateur mediateurCourant) {
mediateur = mediateurCourant;
setLayout(new RowLayout(Orientation.HORIZONTAL));
setId(ComposantId.PANNEAU_ENTETE);
// TODO : ajouter la gestion de l'identification
HtmlContainer html = new HtmlContainer();
StringBuffer sb = new StringBuffer();
sb.append(" <div id='"+ComposantId.DIV_TITRE+"'>Collections en Ligne Demo</div>");
html.setHtml(sb.toString());
html.setEnabled(false);
identificationInfoHtml = new HtmlContainer();
identificationInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION+"'>{0}</div>";
identificationInfoHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Mode anonyme")));
identificationInfoHtml.setEnabled(false);
// Création des écouteurs
SelectionListener<ButtonEvent> boutonEcouteur = new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent be) {
Button btn = (Button) be.getComponent();
String message = Format.substitute("Chargement de la fenêtre «{0}» en cours...", btn.getText());
if (btn.getId().equals(ComposantId.BTN_AIDE)) {
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirAide();
} else if (btn.getId().equals(ComposantId.BTN_PARAMETRES)) {
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirParametres();
} else if (btn.getId().equals(ComposantId.BTN_CONNEXION)) {
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirIdentification();
} else if (btn.getId().equals(ComposantId.BTN_DECONNEXION)) {
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).deconnecterUtilisateur();
Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);
message = Format.substitute("Déconnexion de l'utilisateur «{0}» en cours...", utilisateurCourant.getNomComplet());
} else if (btn.getId().equals(ComposantId.BTN_APPLIS)) {
btn.getMenu().show(btn);
message = "";
}
if (!message.equals("")) {
Info.display(mediateur.i18nC.chargement(), message);
}
}
};
barreBoutons = new ButtonBar();
barreBoutons.setAlignment(Style.HorizontalAlignment.RIGHT);
identificationBouton = new Button("Identifiez vous...", boutonEcouteur);
identificationBouton.setId(ComposantId.BTN_CONNEXION);
barreBoutons.add(identificationBouton);
Button parametresBouton = new Button("Paramêtres", boutonEcouteur);
parametresBouton.setId(ComposantId.BTN_PARAMETRES);
parametresBouton.setIcon(Images.ICONES.engrenages());
barreBoutons.add(parametresBouton);
Button aideBouton = new Button("Aide", boutonEcouteur);
aideBouton.setId(ComposantId.BTN_AIDE);
aideBouton.setIcon(Images.ICONES.aide());
barreBoutons.add(aideBouton);
SplitButton applisBouton = new SplitButton("Changez d'application...");
applisBouton.setId(ComposantId.BTN_APPLIS);
applisBouton.addSelectionListener(boutonEcouteur);
Menu menu = new Menu();
MenuItem menuCel = new MenuItem("Carnet en ligne");
menuCel.addSelectionListener(new SelectionListener<MenuEvent>() {
@Override
public void componentSelected(MenuEvent mEvent) {
Menu me = (Menu) mEvent.getComponent();
MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_CEL);
Info.display(mediateur.i18nC.chargement(), "Ouverture de l'application «{0}» en cours...", mi.getText());
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirApplis(ComposantId.MENU_CEL);
}
});
menuCel.setId(ComposantId.MENU_CEL);
menuCel.setIcon(Images.ICONES.images());
menu.add(menuCel);
MenuItem menuBel = new MenuItem("Biblio en ligne");
menuBel.addSelectionListener(new SelectionListener<MenuEvent>() {
@Override
public void componentSelected(MenuEvent mEvent) {
Menu me = (Menu) mEvent.getComponent();
MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_BEL);
Info.display(mediateur.i18nC.chargement(), "Ouverture de l'application «{0}» en cours...", mi.getText());
((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirApplis(ComposantId.MENU_BEL);
}
});
menuBel.setId(ComposantId.MENU_BEL);
menuBel.setIcon(Images.ICONES.livreOuvert());
menu.add(menuBel);
applisBouton.setMenu(menu);
applisBouton.setIcon(Images.ICONES.flecheBascule());
barreBoutons.add(applisBouton);
add(html, new RowData(.3, 1));
add(identificationInfoHtml, new RowData(.3, 1));
add(barreBoutons, new RowData(.4, 1));
}
public void rafraichir(Object nouvelleDonnees) {
if (nouvelleDonnees instanceof Information) {
Information info = (Information) nouvelleDonnees;
if (info.getType().equals("maj_utilisateur")) {
Utilisateur utilisateur = ((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT));
if (utilisateur.isIdentifie() == true) {
identificationInfoHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Bienvenue : "+utilisateur.getNomComplet())));
identificationBouton.setText("Deconnexion");
identificationBouton.setIcon(Images.ICONES.deconnexion());
identificationBouton.setId(ComposantId.BTN_DECONNEXION);
} else {
identificationInfoHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Mode anonyme")));
identificationBouton.setText("Identifiez vous...");
identificationBouton.setIcon(Images.ICONES.connexion());
identificationBouton.setId(ComposantId.BTN_CONNEXION);
}
}
} else {
GWT.log("Ce type d'objet n'est pas pris en compte par la méthode rafraichir de la classe "+getClass(), null);
}
layout();
}
}