Rev 1107 | Rev 1286 | 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.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.i18n.ErrorMessages;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;import com.extjs.gxt.ui.client.Style.Orientation;import com.extjs.gxt.ui.client.event.ButtonEvent;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;public class EnteteVue extends LayoutContainer implements Rafraichissable {private Mediateur mediateur = null;private Constantes i18nC = null;private ErrorMessages i18nM = null;private String identificationInfoTpl = null;private String titreTpl = null;private HtmlContainer conteneurHtml = null;private SelectionListener<ButtonEvent> boutonEcouteur = null;private ButtonBar barreBoutons = null;private Button identificationBouton = null;private SplitButton feedbackBouton = null;private SplitButton aideBouton = null;private SplitButton applisBouton = null;public EnteteVue(Mediateur mediateurCourant) {mediateur = mediateurCourant;i18nC = Mediateur.i18nC;i18nM = Mediateur.i18nM;setId(ComposantId.PANNEAU_ENTETE);setLayout(new RowLayout(Orientation.HORIZONTAL));initialiserSquelettes();boutonEcouteur = getEcouteurDesBoutons();conteneurHtml = getIdentification();identificationBouton = getBoutonIdentification();feedbackBouton = getBoutonAFeedback();aideBouton = getBoutonAide();applisBouton = getBoutonApplications();barreBoutons = new ButtonBar();barreBoutons.setAlignment(Style.HorizontalAlignment.RIGHT);barreBoutons.add(conteneurHtml);barreBoutons.add(identificationBouton);barreBoutons.add(aideBouton);barreBoutons.add(feedbackBouton);barreBoutons.add(applisBouton);add(getTitre(), new RowData(.20, 1));add(barreBoutons, new RowData(.8, 1));}private void initialiserSquelettes() {identificationInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION+"'>{0}</div>";titreTpl = "<div id='"+ComposantId.DIV_TITRE+"'>{0}</div>";}private HtmlContainer getTitre() {HtmlContainer titreConteneurHtml = new HtmlContainer();titreConteneurHtml.setHtml(Format.substitute(titreTpl, Registry.get(RegistreId.APPLI_NOM)));return titreConteneurHtml;}private HtmlContainer getIdentification() {HtmlContainer conteneurHtml = new HtmlContainer();conteneurHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add(i18nC.modeAnonyme())));return conteneurHtml;}private SelectionListener<ButtonEvent> getEcouteurDesBoutons() {SelectionListener<ButtonEvent> boutonEcouteur = new SelectionListener<ButtonEvent>() {public void componentSelected(ButtonEvent be) {Button btn = (Button) be.getComponent();String id = btn.getId();String message = "";if (id.equals(ComposantId.BTN_AIDE)|| id.equals(ComposantId.BTN_FEEDBACK)|| id.equals(ComposantId.BTN_APPLIS)) {btn.showMenu();} else if (id.equals(ComposantId.BTN_CONNEXION)) {mediateur.ouvrirIdentification();message = i18nM.chargementFenetre(btn.getText());} else if (id.equals(ComposantId.BTN_DECONNEXION)) {mediateur.deconnecterUtilisateur();Utilisateur utilisateurCourant = mediateur.getUtilisateur();message = i18nM.deconnexion(utilisateurCourant.getNomComplet());} else if (id.equals(ComposantId.BTN_APPLIS)) {btn.getMenu().show(btn);}if (!message.equals("")) {Info.display(i18nC.chargement(), message);}}};return boutonEcouteur;}private Button getBoutonIdentification() {Button bouton = new Button(i18nC.identification(), boutonEcouteur);bouton.setId(ComposantId.BTN_CONNEXION);return bouton;}private SplitButton getBoutonAide() {MenuItem menuDoc = new MenuItem(i18nC.doc());menuDoc.addSelectionListener(new SelectionListener<MenuEvent>() {@Overridepublic void componentSelected(MenuEvent mEvent) {mediateur.ouvrirAide();}});menuDoc.setId(ComposantId.MENU_DOC);menuDoc.setIcon(Images.ICONES.aide());MenuItem menuApropos = new MenuItem(i18nC.apropos());menuApropos.addSelectionListener(new SelectionListener<MenuEvent>() {@Overridepublic void componentSelected(MenuEvent mEvent) {mediateur.ouvrirParametres();}});menuApropos.setId(ComposantId.MENU_APROPOS);menuApropos.setIcon(Images.ICONES.engrenages());Menu menuAide = new Menu();menuAide.add(menuDoc);menuAide.add(menuApropos);SplitButton boutonAvecMenus = new SplitButton(i18nC.aide());boutonAvecMenus.setId(ComposantId.BTN_AIDE);boutonAvecMenus.setIcon(Images.ICONES.aide());boutonAvecMenus.addSelectionListener(boutonEcouteur);boutonAvecMenus.setMenu(menuAide);return boutonAvecMenus;}private SplitButton getBoutonAFeedback() {MenuItem menuBogue = new MenuItem(i18nC.bogue());menuBogue.addSelectionListener(new SelectionListener<MenuEvent>() {@Overridepublic void componentSelected(MenuEvent mEvent) {Menu me = (Menu) mEvent.getComponent();MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_BOGUE);Info.display(Mediateur.i18nC.chargement(), i18nM.ouvertureLienExterne(mi.getText()));mediateur.ouvrirUrlExterne(ComposantId.MENU_BOGUE);}});menuBogue.setId(ComposantId.MENU_BOGUE);menuBogue.setIcon(Images.ICONES.bogue());MenuItem menuCommentaire = new MenuItem(i18nC.remarques());menuCommentaire.addSelectionListener(new SelectionListener<MenuEvent>() {@Overridepublic void componentSelected(MenuEvent mEvent) {Menu me = (Menu) mEvent.getComponent();MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_COMMENTAIRE);Info.display(Mediateur.i18nC.chargement(), i18nM.ouvertureLienExterne(mi.getText()));mediateur.ouvrirUrlExterne(ComposantId.MENU_COMMENTAIRE);}});menuCommentaire.setId(ComposantId.MENU_COMMENTAIRE);menuCommentaire.setIcon(Images.ICONES.commentaire());Menu menuFeedback = new Menu();menuFeedback.add(menuBogue);menuFeedback.add(menuCommentaire);SplitButton boutonAvecMenus = new SplitButton(i18nC.feedback());boutonAvecMenus.setId(ComposantId.BTN_FEEDBACK);boutonAvecMenus.addSelectionListener(boutonEcouteur);boutonAvecMenus.setMenu(menuFeedback);boutonAvecMenus.setIcon(Images.ICONES.flecheDedansDehors());return boutonAvecMenus;}private SplitButton getBoutonApplications() {MenuItem menuCel = new MenuItem(i18nC.cel());menuCel.addSelectionListener(new SelectionListener<MenuEvent>() {@Overridepublic void componentSelected(MenuEvent mEvent) {Menu me = (Menu) mEvent.getComponent();MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_CEL);Info.display(i18nC.chargement(), i18nM.ouvertureAppliExterne(mi.getText()));mediateur.ouvrirUrlExterne(ComposantId.MENU_CEL);}});menuCel.setId(ComposantId.MENU_CEL);menuCel.setIcon(Images.ICONES.images());MenuItem menuBel = new MenuItem(i18nC.bel());menuBel.addSelectionListener(new SelectionListener<MenuEvent>() {@Overridepublic void componentSelected(MenuEvent mEvent) {Menu me = (Menu) mEvent.getComponent();MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_BEL);Info.display(i18nC.chargement(), i18nM.ouvertureAppliExterne(mi.getText()));mediateur.ouvrirUrlExterne(ComposantId.MENU_BEL);}});menuBel.setId(ComposantId.MENU_BEL);menuBel.setIcon(Images.ICONES.livreOuvert());Menu menu = new Menu();menu.add(menuCel);menu.add(menuBel);SplitButton boutonAvecMenus = new SplitButton(i18nC.applicationExterne());boutonAvecMenus.setId(ComposantId.BTN_APPLIS);boutonAvecMenus.addSelectionListener(boutonEcouteur);boutonAvecMenus.setMenu(menu);boutonAvecMenus.setIcon(Images.ICONES.flecheBascule());return boutonAvecMenus;}public void rafraichir(Object nouvellesDonnees) {if (nouvellesDonnees instanceof Information) {Information info = (Information) nouvellesDonnees;if (info.getType().equals("maj_utilisateur")) {Utilisateur utilisateur = mediateur.getUtilisateur();if (utilisateur.isIdentifie()) {conteneurHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add(i18nC.bienvenue()+utilisateur.getNomComplet())));identificationBouton.setText(i18nC.deconnexion());identificationBouton.setIcon(Images.ICONES.deconnexion());identificationBouton.setId(ComposantId.BTN_DECONNEXION);} else {conteneurHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add(i18nC.modeAnonyme())));identificationBouton.setText(i18nC.identification());identificationBouton.setIcon(Images.ICONES.connexion());identificationBouton.setId(ComposantId.BTN_CONNEXION);}}} else {Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));}layout();}}