Rev 390 | Blame | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues;import java.util.Iterator;import java.util.Map.Entry;import org.tela_botanica.client.ComposantClass;import org.tela_botanica.client.ComposantId;import org.tela_botanica.client.Mediateur;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.Information;import org.tela_botanica.client.modeles.Structure;import org.tela_botanica.client.modeles.StructureAPersonne;import org.tela_botanica.client.modeles.StructureAPersonneListe;import org.tela_botanica.client.modeles.StructureConservation;import org.tela_botanica.client.modeles.StructureValorisation;import com.extjs.gxt.ui.client.Events;import com.extjs.gxt.ui.client.Style.Scroll;import com.extjs.gxt.ui.client.util.Format;import com.extjs.gxt.ui.client.util.Params;import com.extjs.gxt.ui.client.widget.ContentPanel;import com.extjs.gxt.ui.client.widget.HorizontalPanel;import com.extjs.gxt.ui.client.widget.Html;import com.extjs.gxt.ui.client.widget.HtmlContainer;import com.extjs.gxt.ui.client.widget.LayoutContainer;import com.extjs.gxt.ui.client.widget.TabItem;import com.extjs.gxt.ui.client.widget.TabPanel;import com.extjs.gxt.ui.client.widget.layout.AnchorLayout;import com.extjs.gxt.ui.client.widget.layout.FitLayout;import com.extjs.gxt.ui.client.widget.layout.FlowLayout;import com.google.gwt.core.client.GWT;import com.google.gwt.i18n.client.DateTimeFormat;public class StructureDetailPanneauVue extends LayoutContainer implements Rafraichissable {private Mediateur mediateur = null;private String enteteTpl = null;private String identificationTpl = null;private String personnelTpl = null;private String tableauPersonnelTpl = null;private String lignePersonnelTpl = null;private String conservationTpl = null;private String valorisationTpl = null;private Structure structure = null;private StructureAPersonneListe personnel = null;private StructureValorisation valorisation = null;private StructureConservation conservation = null;private ContentPanel panneauPrincipal = null;private Html entete = null;private TabPanel onglets = null;private TabItem identificationOnglet = null;private TabItem personnelOnglet = null;private TabItem conservationOnglet = null;private TabItem valorisationOnglet = null;public StructureDetailPanneauVue(Mediateur mediateurCourant) {mediateur = mediateurCourant;initialiserTousLesTpl();setLayout(new FitLayout());setBorders(false);setScrollMode(Scroll.AUTO);panneauPrincipal = new ContentPanel();panneauPrincipal.setLayout(new FlowLayout());panneauPrincipal.setHeaderVisible(false);panneauPrincipal.setBodyBorder(false);entete = new Html();entete.setId(ComposantId.ZONE_DETAIL_ENTETE);panneauPrincipal.setTopComponent(entete);onglets = new TabPanel();onglets.setId(ComposantId.ZONE_DETAIL_CORPS);onglets.setHeight("100%");onglets.setBodyBorder(false);identificationOnglet = new TabItem("Général");identificationOnglet.setLayout(new AnchorLayout());identificationOnglet.setScrollMode(Scroll.AUTO);onglets.add(identificationOnglet);personnelOnglet = new TabItem("Personnel");personnelOnglet.setLayout(new AnchorLayout());personnelOnglet.setScrollMode(Scroll.AUTO);onglets.add(personnelOnglet);conservationOnglet = new TabItem("Conservation");conservationOnglet.setLayout(new AnchorLayout());conservationOnglet.setScrollMode(Scroll.AUTO);onglets.add(conservationOnglet);valorisationOnglet = new TabItem("Valorisation");valorisationOnglet.setLayout(new AnchorLayout());valorisationOnglet.setScrollMode(Scroll.AUTO);onglets.add(valorisationOnglet);panneauPrincipal.add(onglets);add(panneauPrincipal);}private void afficherDetailInstitution() {if (structure != null) {personnel = structure.getPersonnel();valorisation = structure.getValorisation();conservation = structure.getConservation();afficherEntete();afficherIdentification();if (personnel != null) {afficherPersonnel();}if (conservation != null) {//afficherConservation();}if (valorisation != null) {//afficherValorisation();}}layout();}private void afficherEntete() {Params enteteParams = new Params();enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE);enteteParams.set("css_meta", ComposantClass.META);enteteParams.set("nom", structure.getNom());enteteParams.set("ville", structure.getVille());enteteParams.set("id", structure.getId());enteteParams.set("guid", structure.getGuid());enteteParams.set("projet", structure.getIdProjet());String eHtml = Format.substitute(enteteTpl, enteteParams);entete.getElement().setInnerHTML(eHtml);}private void afficherIdentification() {Params contenuParams = new Params();contenuParams.set("css_corps", ComposantClass.DETAIL_CORPS_CONTENU);contenuParams.set("css_label", ComposantClass.LABEL);contenuParams.set("css_fieldset", ComposantClass.FIELDSET);contenuParams.set("css_clear", ComposantClass.CLEAR);contenuParams.set("i18n_titre_administratif", mediateur.i18nC.titreAdministratif());contenuParams.set("i18n_acronyme", mediateur.i18nC.acronyme());contenuParams.set("i18n_statut", mediateur.i18nC.statut());contenuParams.set("i18n_date_fondation", mediateur.i18nC.dateFondation());contenuParams.set("i18n_nbre_personnel", mediateur.i18nC.nbrePersonnel());contenuParams.set("i18n_titre_description", mediateur.i18nC.description());contenuParams.set("i18n_description", mediateur.i18nC.description());contenuParams.set("i18n_titre_adresse", mediateur.i18nC.adresse());contenuParams.set("i18n_adresse", mediateur.i18nC.adresse());contenuParams.set("i18n_cp", mediateur.i18nC.codePostal());contenuParams.set("i18n_ville", mediateur.i18nC.ville());contenuParams.set("i18n_region", mediateur.i18nC.region());contenuParams.set("i18n_pays", mediateur.i18nC.pays());contenuParams.set("i18n_titre_communication", mediateur.i18nC.titreCommunication());contenuParams.set("i18n_tel", mediateur.i18nC.telephone());contenuParams.set("i18n_fax", mediateur.i18nC.fax());contenuParams.set("i18n_courriel", mediateur.i18nC.courriel());contenuParams.set("i18n_acces", mediateur.i18nC.acces());contenuParams.set("i18n_web", mediateur.i18nC.siteWeb());contenuParams.set("acronyme", structure.getIdAlternatif());contenuParams.set("statut", structure.getTypePrive()+structure.getTypePublic());contenuParams.set("date_fondation", structure.getDateFondationFormatLong());contenuParams.set("nbre_personnel", structure.getNbrePersonne());contenuParams.set("description", structure.getDescription());contenuParams.set("adresse", structure.getAdresse());contenuParams.set("cp", structure.getCodePostal());contenuParams.set("ville", structure.getVille());contenuParams.set("region", structure.getRegion());contenuParams.set("pays", structure.getPays());contenuParams.set("tel", structure.getTelephone());contenuParams.set("fax", structure.getFax());contenuParams.set("courriel", structure.getCourriel());contenuParams.set("acces", structure.getConditionAcces());contenuParams.set("web", structure.getUrl());String cHtml = Format.substitute(identificationTpl, contenuParams);HtmlContainer corpsConteneurDuHtml = new HtmlContainer(cHtml);identificationOnglet.removeAll();identificationOnglet.add(corpsConteneurDuHtml);}private void afficherPersonnel() {String tableauPersonnelHtml = "";if (personnel.size() > 0) {tableauPersonnelHtml = construireTableauDuPersonnel();}Params contenuParams = new Params();contenuParams.set("css_corps", ComposantClass.DETAIL_CORPS_CONTENU);contenuParams.set("i18n_titre_personnel", mediateur.i18nC.titrePersonnel());contenuParams.set("i18n_nbre_personnel_collection", mediateur.i18nC.nbrePersonnelCollection());contenuParams.set("nbre_personnel_collection", personnel.size());contenuParams.set("tableau_personnel", tableauPersonnelHtml);String cHtml = Format.substitute(personnelTpl, contenuParams);HtmlContainer corpsConteneurDuHtml = new HtmlContainer(cHtml);personnelOnglet.removeAll();personnelOnglet.add(corpsConteneurDuHtml);}private String construireTableauDuPersonnel() {Params contenuParams = new Params();contenuParams.set("i18n_titre_membre", mediateur.i18nC.titreMembre());contenuParams.set("i18n_fonction", mediateur.i18nC.fonction());contenuParams.set("i18n_prenom", mediateur.i18nC.prenom());contenuParams.set("i18n_nom", mediateur.i18nC.nom());contenuParams.set("i18n_tel", mediateur.i18nC.telephoneFixe());contenuParams.set("i18n_fax", mediateur.i18nC.fax());contenuParams.set("i18n_courriel", mediateur.i18nC.courrielPrincipal());contenuParams.set("i18n_statut", mediateur.i18nC.statut());contenuParams.set("i18n_tps_w", mediateur.i18nC.tpsTravail());contenuParams.set("i18n_specialite", mediateur.i18nC.specialite());contenuParams.set("i18n_contact", mediateur.i18nC.boolContact());String lignesPersonnel = "";Iterator<String> it = personnel.keySet().iterator();while (it.hasNext()) {StructureAPersonne personne = personnel.get(it.next());Params ligneParams = new Params();ligneParams.set("fonction", personne.getFonction());ligneParams.set("prenom", personne.getPrenom());ligneParams.set("nom", personne.getNom());ligneParams.set("tel", personne.getTelephone());ligneParams.set("fax", personne.getFax());ligneParams.set("courriel", personne.getCourriel());ligneParams.set("statut", personne.getStatut());ligneParams.set("tps_w", personne.getBotaTravailHebdoTps());ligneParams.set("specialite", personne.afficherSpecialite());ligneParams.set("contact", personne.getContact());lignesPersonnel += Format.substitute(lignePersonnelTpl, ligneParams);}contenuParams.set("lignes", lignesPersonnel);String cHtml = Format.substitute(tableauPersonnelTpl, contenuParams);return cHtml;}private void initialiserTousLesTpl() {initialiserEnteteHtmlTpl();initialiserIdentificationTpl();initialiserPersonnelTpl();initialiserTableauPersonnelTpl();initialiserLignePersonnelTpl();initialiserConservationTpl();initialiserValorisationTpl();}private void initialiserEnteteHtmlTpl() {enteteTpl = "<div id='{css_id}'>"+" <h1>{nom}</h1>"+" <h2>{ville}<span class='{css_meta}'>{projet} - {id} - {guid}</span></h2>" +" " +"</div>";}private void initialiserIdentificationTpl() {identificationTpl ="<div class='{css_corps}'>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_administratif}</h2>"+" <span class='{css_label}'>{i18n_acronyme} :</span> {acronyme}<br />"+" <span class='{css_label}'>{i18n_acces} :</span> {acces}<br />"+" <span class='{css_label}'>{i18n_statut} :</span> {statut}<br />"+" <span class='{css_label}'>{i18n_date_fondation} :</span> {date_fondation}<br />"+" <span class='{css_label}'>{i18n_nbre_personnel} :</span> {nbre_personnel}<br />"+" </div>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_description}</h2>"+" {description}"+" </div>"+" <hr class='{css_clear}'/>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_adresse}</h2>"+" <span class='{css_label}'>{i18n_adresse} :</span> {adresse}<br />" +" <span class='{css_label}'>{i18n_cp} :</span> {cp}<br />" +" <span class='{css_label}'>{i18n_ville} :</span> {ville}<br />" +" <span class='{css_label}'>{i18n_region} :</span> {region}<br />" +" <span class='{css_label}'>{i18n_pays} :</span> {pays}<br />" +" </div>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_communication}</h2>"+" <span class='{css_label}'>{i18n_tel} :</span> {tel}<br />"+" <span class='{css_label}'>{i18n_fax} :</span> {fax}<br />"+" <span class='{css_label}'>{i18n_courriel} :</span> {courriel}<br />"+" <span class='{css_label}'>{i18n_web} :</span> {web}<br />"+" </div>"+"</div>";}private void initialiserPersonnelTpl() {personnelTpl ="<div class='{css_corps}'>"+" <h2>{i18n_titre_personnel}</h2>"+" <p><span class='{css_label}'>{i18n_nbre_personnel_collection} :</span> {nbre_personnel_collection}</p>"+" {tableau_personnel}"+"</div>";}private void initialiserTableauPersonnelTpl() {tableauPersonnelTpl ="<h3>{i18n_titre_membre}</h3>"+"<table>"+" <thead>"+" <tr>" +" <th>{i18n_fonction}</th>" +" <th>{i18n_prenom}</th>" +" <th>{i18n_nom}</th>" +" <th>{i18n_tel}</th>" +" <th>{i18n_fax}</th>" +" <th>{i18n_courriel}</th>" +" <th>{i18n_statut}</th>" +" <th>{i18n_tps_w}</th>" +" <th>{i18n_specialite}</th>" +" <th>{i18n_contact}</th>" +" </tr>"+" </thead>"+" <tbody>"+" {lignes}"+" </tbody>"+"</table>";}private void initialiserLignePersonnelTpl() {lignePersonnelTpl ="<tr>"+" <td>{fonction}</td>"+" <td>{prenom}</td>"+" <td>{nom}</td>"+" <td>{tel}</td>" +" <td>{fax}</td>" +" <td>{courriel}</td>" +" <td>{statut}</td>" +" <td>{tps_w}</td>" +" <td>{specialite}</td>" +" <td>{contact}</td>" +"</tr>";}private void initialiserConservationTpl() {conservationTpl ="<div class='{css_corps}'>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_conservation_personnel}</h2>"+" <span class='{css_label}'>{i18n_formation} :</span> {formation_interet}<br />"+" <span class='{css_label}'>{i18n_formation_interet} :</span> {formation_interet}<br />"+" </div>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_local}</h2>"+" <span class='{css_label}'>{i18n_local_specifique} :</span> {local_specifique}<br />"+" <span class='{css_label}'>{i18n_meuble_specifique} :</span> {meuble_specifique}<br />"+" <span class='{css_label}'>{i18n_local_parametre} :</span> {local_parametre}<br />"+" <span class='{css_label}'>{i18n_conservation_en_commun} :</span> {conservation_en_commun}<br />"+" <span class='{css_label}'>{i18n_acces_control} :</span> {acces_control}<br />"+" </div>"+" <hr class='{css_clear}'/>"+"</div>";}private void initialiserValorisationTpl() {valorisationTpl ="<div class='{css_corps}'>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_action_valorisation}</h2>"+" </div>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_recherche_scientifique}</h2>"+" </div>"+" <hr class='{css_clear}'/>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_acces_usage}</h2>"+" </div>"+"</div>";}public void rafraichir(Object nouvelleDonnees) {if (nouvelleDonnees instanceof Structure) {structure = (Structure) nouvelleDonnees;afficherDetailInstitution();} if (nouvelleDonnees instanceof Information) {Information info = (Information) nouvelleDonnees;if (info.getType().equals("liste_structure_a_personne")) {allouerPersonnelAStructure((StructureAPersonneListe) info.getDonnee(0));afficherDetailInstitution();}} else {GWT.log("Pas de correspondance dans la méthode rafraichir() de la classe "+this.getClass(), null);}}private void allouerPersonnelAStructure(StructureAPersonneListe personnel) {structure.setPersonnel(personnel);}}