Rev 936 | Rev 948 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues.collection;import java.util.Iterator;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.ValeurListe;import org.tela_botanica.client.modeles.collection.Collection;import org.tela_botanica.client.modeles.collection.CollectionAPersonne;import org.tela_botanica.client.modeles.collection.CollectionAPersonneListe;import org.tela_botanica.client.modeles.collection.CollectionAPublication;import org.tela_botanica.client.modeles.collection.CollectionAPublicationListe;import org.tela_botanica.client.modeles.personne.Personne;import org.tela_botanica.client.modeles.projet.ProjetListe;import org.tela_botanica.client.modeles.publication.Publication;import org.tela_botanica.client.modeles.structure.Structure;import org.tela_botanica.client.util.Debug;import org.tela_botanica.client.vues.DetailVue;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.Html;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;public class CollectionDetailVue extends DetailVue implements Rafraichissable {private Collection collection = null;private boolean collectionChargementOk = false;private boolean personnesLieesChargementOk = false;private boolean publicationsLieesChargementOk = false;private Structure structure = null;private String enteteTpl = null;private String generalTpl = null;private String personneTpl = null;private String tableauPersonnesLieesTpl = null;private String lignePersonneLieeTpl = null;private String publicationTpl = null;private String tableauPublicationsLieesTpl = null;private String lignePublicationLieeTpl = null;private String descriptionTpl = null;private String contenuTpl = null;private String inventaireTpl = null;private ContentPanel panneauPrincipal = null;private Html entete = null;private TabPanel onglets = null;private TabItem generalOnglet = null;private TabItem personneOnglet = null;private TabItem publicationOnglet = null;private TabItem descriptionOnglet = null;private TabItem contenuOnglet = null;private TabItem inventaireOnglet = null;public CollectionDetailVue(Mediateur mediateurCourant) {super(mediateurCourant);initialiserTousLesTpl();chargerOntologie();panneauPrincipal = new ContentPanel();panneauPrincipal.setLayout(new FitLayout());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.setBodyBorder(false);generalOnglet = new TabItem(i18nC.structureInfoGeneral());generalOnglet.setLayout(new AnchorLayout());generalOnglet.setScrollMode(Scroll.AUTO);onglets.add(generalOnglet);personneOnglet = new TabItem(i18nC.collectionPersonne());personneOnglet.setLayout(new AnchorLayout());personneOnglet.setScrollMode(Scroll.AUTO);onglets.add(personneOnglet);publicationOnglet = new TabItem(i18nC.collectionPublication());publicationOnglet.setLayout(new AnchorLayout());publicationOnglet.setScrollMode(Scroll.AUTO);onglets.add(publicationOnglet);descriptionOnglet = new TabItem(i18nC.collectionDescription());descriptionOnglet.setLayout(new AnchorLayout());descriptionOnglet.setScrollMode(Scroll.AUTO);onglets.add(descriptionOnglet);contenuOnglet = new TabItem(i18nC.collectionContenu());contenuOnglet.setLayout(new AnchorLayout());contenuOnglet.setScrollMode(Scroll.AUTO);onglets.add(contenuOnglet);inventaireOnglet = new TabItem(i18nC.collectionInventaire());inventaireOnglet.setLayout(new AnchorLayout());inventaireOnglet.setScrollMode(Scroll.AUTO);onglets.add(inventaireOnglet);panneauPrincipal.add(onglets);add(panneauPrincipal);}private void initialiserTousLesTpl() {initialiserEnteteHtmlTpl();initialiserGeneralTpl();initialiserPersonneTpl();initialiserTableauPersonnesLieesTpl();initialiserLignePersonneLieeTpl();initialiserPublicationTpl();initialiserTableauPublicationsLieesTpl();initialiserLignePublicationLieeTpl();initialiserContenuTpl();initialiserDescriptionTpl();initialiserInventaireTpl();}private void initialiserEnteteHtmlTpl() {enteteTpl ="<div id='{css_id}'>"+" <h1>{nom}</h1>"+" <h2>{structure}<span class='{css_meta}'>{projet} <br /> {i18n_id}:{id} - {guid}</span></h2>" +"</div>";}private void initialiserGeneralTpl() {generalTpl ="<div class='{css_corps}'>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_identification}</h2>"+" <span class='{css_label}'>{i18n_nom_alternatif} :</span> {nom_alternatif}<br />"+" <span class='{css_label}'>{i18n_acronyme} :</span> {acronyme}<br />"+" <span class='{css_label}'>{i18n_code} :</span> {code}<br />"+" <span class='{css_label}'>{i18n_cote} :</span> {cote}<br />"+" <span class='{css_label}'>{i18n_mere} :</span> {mere}<br />"+" <span class='{css_label}'>{i18n_type_ncd} :</span> {type_ncd}<br />"+" <span class='{css_label}'>{i18n_type_depot} :</span> {type_depot}<br />"+" </div>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_general_collection_titre}</h2>"+" <span class='{css_label}'>{i18n_description} :</span> {description}<br />"+" <span class='{css_label}'>{i18n_description_specialiste} :</span> {description_specialiste}<br />"+" <span class='{css_label}'>{i18n_historique} :</span> {historique}<br />"+" <span class='{css_label}'>{i18n_web} :</span> {web}<br />"+" <span class='{css_label}'>{i18n_groupement_principe} :</span> {groupement_principe}<br />"+" <span class='{css_label}'>{i18n_groupement_but} :</span> {groupement_but}<br />"+" </div>"+" <hr class='{css_clear}'/>"+"</div>";}private void initialiserPersonneTpl() {personneTpl ="<div class='{css_corps}'>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_personne}</h2>"+" {tableau_personnes_liees}"+" </div>"+" <hr class='{css_clear}'/>"+"</div>";}private void initialiserTableauPersonnesLieesTpl() {tableauPersonnesLieesTpl ="<h3>{i18n_titre_membre}</h3>"+"<table>"+" <thead>"+" <tr>" +" <th>{i18n_prenom}</th>" +" <th>{i18n_nom}</th>" +" </tr>"+" </thead>"+" <tbody>"+" {lignes}"+" </tbody>"+"</table>";}private void initialiserLignePersonneLieeTpl() {lignePersonneLieeTpl ="<tr>"+" <td>{prenom}</td>"+" <td>{nom}</td>"+"</tr>";}private void initialiserPublicationTpl() {publicationTpl ="<div class='{css_corps}'>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_publication}</h2>"+" {tableau_publications_liees}"+" </div>"+" <hr class='{css_clear}'/>"+"</div>";}private void initialiserTableauPublicationsLieesTpl() {tableauPublicationsLieesTpl ="<table>"+" <thead>"+" <tr>" +" <th>{i18n_auteur}</th>" +" <th>{i18n_titre}</th>" +" </tr>"+" </thead>"+" <tbody>"+" {lignes}"+" </tbody>"+"</table>";}private void initialiserLignePublicationLieeTpl() {lignePublicationLieeTpl ="<tr>"+" <td>{auteur}</td>"+" <td>{titre}</td>"+"</tr>";}private void initialiserDescriptionTpl() {descriptionTpl ="<div class='{css_corps}'>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_description}</h2>"+" <span class='{css_label}'>{i18n_type_botanique} :</span> {type_botanique}<br />"+" <span class='{css_label}'>{i18n_nbre_echantillon} :</span> {nbre_echantillon}<br />"+" </div>"+" <hr class='{css_clear}'/>"+"</div>";}private void initialiserContenuTpl() {contenuTpl ="<div class='{css_corps}'>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_contenu}</h2>"+" </div>"+" <hr class='{css_clear}'/>"+"</div>";}private void initialiserInventaireTpl() {inventaireTpl ="<div class='{css_corps}'>"+" <div class='{css_fieldset}'>"+" <h2>{i18n_titre_inventaire}</h2>"+" </div>"+" <hr class='{css_clear}'/>"+"</div>";}private void chargerOntologie() {String[] listesCodes = {"typeCollectionBota", "typeCollectionNcd", "typeDepot", "groupementPrincipe", "realisationBut"};lancerChargementListesValeurs(listesCodes);}public void rafraichir(Object nouvellesDonnees) {if (nouvellesDonnees instanceof Collection) {collection = (Collection) nouvellesDonnees;collectionChargementOk = true;} else if (nouvellesDonnees instanceof ProjetListe) {projets = (ProjetListe) nouvellesDonnees;projetsChargementOk = true;} else if (nouvellesDonnees instanceof ValeurListe) {ValeurListe listeValeursReceptionnee = (ValeurListe) nouvellesDonnees;receptionerListeValeurs(listeValeursReceptionnee);} else if (nouvellesDonnees instanceof Information) {Information info = (Information) nouvellesDonnees;if (info.getType().equals("liste_collection_a_personne")) {lierCollectionAPersonne((CollectionAPersonneListe) info.getDonnee(0));} else if (info.getType().equals("liste_collection_a_publication")) {lierCollectionAPublication((CollectionAPublicationListe) info.getDonnee(0));}} else {GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);}if (avoirDonneesChargees()) {afficherDetail();}}protected void lierCollectionAPersonne(CollectionAPersonneListe personnes) {collection.setPersonnesLiees(personnes);personnesLieesChargementOk = true;}protected void lierCollectionAPublication(CollectionAPublicationListe publications) {collection.setPublicationsLiees(publications);publicationsLieesChargementOk = true;}private boolean avoirDonneesChargees() {boolean ok = false;Debug.log("projetsChargementOk:"+projetsChargementOk+"-collectionChargementOk:"+collectionChargementOk+"-ontologieChargementOk:"+ontologieChargementOk+"-personnesLieesChargementOk:"+personnesLieesChargementOk+"-publicationsLieesChargementOk:"+publicationsLieesChargementOk);if (projetsChargementOk && collectionChargementOk && ontologieChargementOk && personnesLieesChargementOk && publicationsLieesChargementOk) {ok = true;}return ok;}private void afficherDetail() {if (collection != null) {afficherEntete();afficherIdentification();afficherPersonne();afficherPublication();afficherDescription();afficherContenu();afficherInventaire();}layout();}private void afficherEntete() {Params enteteParams = new Params();enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE);enteteParams.set("css_meta", ComposantClass.META);enteteParams.set("i18n_id", i18nC.id());enteteParams.set("nom", collection.getNom());enteteParams.set("structure", collection.getStructureNom());enteteParams.set("id", collection.getId());enteteParams.set("guid", collection.getGuid());enteteParams.set("projet", construireTxtProjet(collection.getIdProjet()));String eHtml = Format.substitute(enteteTpl, enteteParams);entete.getElement().setInnerHTML(eHtml);}private void afficherIdentification() {Params generalParams = new Params();generalParams.set("i18n_titre_identification", i18nC.titreAdministratif());generalParams.set("i18n_nom_alternatif", i18nC.nomAlternatif());generalParams.set("i18n_acronyme", i18nC.acronyme());generalParams.set("i18n_code", i18nC.code());generalParams.set("i18n_cote", i18nC.cote());generalParams.set("i18n_mere", i18nC.collectionMere());generalParams.set("i18n_type_ncd", i18nC.typeCollectionNcd());generalParams.set("i18n_type_depot", i18nC.typeDepot());generalParams.set("i18n_general_collection_titre", i18nC.collectionGeneralTitre());generalParams.set("i18n_description", i18nC.description());generalParams.set("i18n_description_specialiste", i18nC.descriptionSpecialiste());generalParams.set("i18n_historique", i18nC.historique());generalParams.set("i18n_web", i18nC.siteWeb());generalParams.set("i18n_groupement_principe", i18nC.groupementPrincipe());generalParams.set("i18n_groupement_but", i18nC.groupementBut());String acronyme = construireTxtTruck(collection.getIdAlternatif());String code = construireTxtTruck(collection.getCode());String nomAlternatif = construireTxtTruck(collection.getNomAlternatif());String urls = construireTxtTruck(collection.getUrls());String typeNcd = construireTxtListeOntologie(collection.getTypeNcd());String typeDepot = construireTxtListeOntologie(collection.getTypeDepot());String groupementBut = construireTxtListeOntologie(collection.getGroupementBut());String groupementPrincipe = construireTxtListeOntologie(collection.getGroupementPrincipe());generalParams.set("nom_alternatif", nomAlternatif);generalParams.set("acronyme", acronyme);generalParams.set("code", code);generalParams.set("cote", collection.getCote());generalParams.set("mere", collection.getCollectionMereNom());generalParams.set("type_ncd", typeNcd);generalParams.set("type_depot", typeDepot);generalParams.set("description", collection.getDescription());generalParams.set("description_specialiste", collection.getDescriptionSpecialiste());generalParams.set("historique", collection.getHistorique());generalParams.set("web", urls);generalParams.set("groupement_principe", groupementPrincipe);generalParams.set("groupement_but", groupementBut);afficherOnglet(generalTpl, generalParams, generalOnglet);}private void afficherPersonne() {String tableauPersonneHtml = "";if (collection.getPersonnesLiees() != null && collection.getPersonnesLiees().size() > 0) {tableauPersonneHtml = construireTableauPersonnesLiees();}Params personneParams = new Params();personneParams.set("i18n_titre_personne", i18nC.collectionPersonneTitre());personneParams.set("tableau_personnes_liees", tableauPersonneHtml);afficherOnglet(personneTpl, personneParams, personneOnglet);}private String construireTableauPersonnesLiees() {Params contenuParams = new Params();contenuParams.set("i18n_prenom", i18nC.personnePrenom());contenuParams.set("i18n_nom", i18nC.personneNom());String lignesPersonnel = "";Iterator<String> it = collection.getPersonnesLiees().keySet().iterator();while (it.hasNext()) {CollectionAPersonne relationCollectionAPersonne = collection.getPersonnesLiees().get(it.next());Personne personne = relationCollectionAPersonne.getPersonne();Params ligneParams = new Params();ligneParams.set("prenom", personne.getPrenom());ligneParams.set("nom", personne.getNom());lignesPersonnel += Format.substitute(lignePersonneLieeTpl, ligneParams);}contenuParams.set("lignes", lignesPersonnel);String cHtml = Format.substitute(tableauPersonnesLieesTpl, contenuParams);return cHtml;}private void afficherPublication() {Params publicationParams = new Params();publicationParams.set("i18n_titre_publication", i18nC.collectionPublicationTitre());String tableauPublicationHtml = "";if (collection.getPersonnesLiees() != null && collection.getPersonnesLiees().size() > 0) {tableauPublicationHtml = construireTableauPublicationsLiees();}publicationParams.set("tableau_publications_liees", tableauPublicationHtml);afficherOnglet(publicationTpl, publicationParams, publicationOnglet);}private String construireTableauPublicationsLiees() {Params contenuParams = new Params();contenuParams.set("i18n_auteur", i18nC.publicationAuteurs());contenuParams.set("i18n_titre", i18nC.publicationTitre());String lignesPublication = "";Iterator<String> it = collection.getPublicationsLiees().keySet().iterator();while (it.hasNext()) {CollectionAPublication relationCollectionAPublication = collection.getPublicationsLiees().get(it.next());Publication publication = relationCollectionAPublication.getPublication();Params ligneParams = new Params();ligneParams.set("auteur", publication.getAuteur());ligneParams.set("titre", publication.getTitre());lignesPublication += Format.substitute(lignePublicationLieeTpl, ligneParams);}contenuParams.set("lignes", lignesPublication);String cHtml = Format.substitute(tableauPublicationsLieesTpl, contenuParams);return cHtml;}private void afficherDescription() {Params descriptionParams = new Params();descriptionParams.set("i18n_titre_description", i18nC.collectionDescriptionTitre());descriptionParams.set("i18n_type_botanique", i18nC.typeCollectionBotanique());descriptionParams.set("i18n_nbre_echantillon", i18nC.nbreEchantillon());String typeBota = construireTxtListeOntologie(collection.getBotanique().getType());descriptionParams.set("type_botanique", typeBota);descriptionParams.set("nbre_echantillon", collection.getBotanique().getNbreEchantillon());afficherOnglet(descriptionTpl, descriptionParams, descriptionOnglet);}private void afficherContenu() {Params contenuParams = new Params();contenuParams.set("i18n_titre_contenu", i18nC.collectionContenuTitre());afficherOnglet(contenuTpl, contenuParams, contenuOnglet);}private void afficherInventaire() {Params inventaireParams = new Params();inventaireParams.set("i18n_titre_inventaire", i18nC.collectionInventaireTitre());afficherOnglet(inventaireTpl, inventaireParams, inventaireOnglet);}protected String getNomStructure() {String nomStructure = "";if (structure != null) {nomStructure = structure.getNom();} else {nomStructure = collection.getIdStructure();}return nomStructure;}}