Subversion Repositories eFlore/Applications.coel

Rev

Rev 936 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
935 jpm 1
package org.tela_botanica.client.vues.projet;
834 aurelien 2
 
3
import org.tela_botanica.client.ComposantClass;
4
import org.tela_botanica.client.ComposantId;
5
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
908 aurelien 7
import org.tela_botanica.client.modeles.ValeurListe;
935 jpm 8
import org.tela_botanica.client.modeles.projet.Projet;
9
import org.tela_botanica.client.modeles.projet.ProjetListe;
1114 jpm 10
import org.tela_botanica.client.util.Pattern;
11
import org.tela_botanica.client.util.UtilString;
936 jpm 12
import org.tela_botanica.client.vues.DetailVue;
834 aurelien 13
 
14
import com.extjs.gxt.ui.client.util.Format;
15
import com.extjs.gxt.ui.client.util.Params;
16
import com.extjs.gxt.ui.client.widget.ContentPanel;
17
import com.extjs.gxt.ui.client.widget.Html;
18
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
19
import com.google.gwt.core.client.GWT;
20
 
21
public class ProjetDetailVue extends DetailVue implements Rafraichissable {
22
 
23
	private String enteteTpl = null;
24
	private String contenuTpl = null;
25
 
26
	private ContentPanel panneauPrincipal = null;
27
	private Html entete = null;
28
	private Html contenu = null;
29
 
928 jpm 30
	private final String listeValeurIndexationDureeId = "dureesIndexation";
31
	private final int listeValeurIndexationDureeInt = 1072;
32
	private final String listeValeurIndexationFrequenceId = "frequencesIndexation";
33
	private final int listeValeurIndexationFrequenceInt = 1073;
34
	private final String listeLanguesId = "langues";
35
	private final int listeLanguesInt = 1071;
36
 
834 aurelien 37
	private Projet projet = null;
38
	private boolean projetChargementOk = false;
928 jpm 39
	private ValeurListe valeurListeIndexationDuree = null;
40
	private boolean listeIndexationDureeChargee = false;
908 aurelien 41
	private ValeurListe valeurListeIndexationFrequence = null;
928 jpm 42
	private boolean listeIndexationFrequenceChargee = false;
908 aurelien 43
	private ValeurListe valeurListeLangue = null;
44
	private boolean listeLangueChargee = false;
834 aurelien 45
 
46
	public ProjetDetailVue(Mediateur mediateurCourant) {
47
		super(mediateurCourant);
48
 
49
		initialiserTousLesTpl();
50
 
51
		panneauPrincipal = new ContentPanel();
52
		panneauPrincipal.setLayout(new FitLayout());
53
		panneauPrincipal.setHeaderVisible(false);
54
		panneauPrincipal.setBodyBorder(false);
55
 
56
	    entete = new Html();
57
	    entete.setId(ComposantId.ZONE_DETAIL_ENTETE);
58
	    panneauPrincipal.setTopComponent(entete);
59
 
60
	    contenu = new Html();
61
	    panneauPrincipal.add(contenu);
62
 
63
		add(panneauPrincipal);
908 aurelien 64
 
65
		mediateurCourant.obtenirListeValeurEtRafraichir(this, listeValeurIndexationDureeId);
66
		mediateurCourant.obtenirListeValeurEtRafraichir(this, listeValeurIndexationFrequenceId);
67
		mediateurCourant.obtenirListeValeurEtRafraichir(this, listeLanguesId);
834 aurelien 68
	}
69
 
70
	private void initialiserTousLesTpl() {
71
		initialiserEnteteHtmlTpl();
72
		initialiserGeneralTpl();
73
	}
74
 
75
	private void initialiserEnteteHtmlTpl() {
76
		enteteTpl =
77
			"<div id='{css_id}'>"+
877 aurelien 78
			"	<h1>{projet}</h1>"+
79
			"	<h2>{abreviation} <span class='{css_meta}'>{projet} <br /> {i18n_id}:{id} - {guid}</span></h2>" +
834 aurelien 80
			"</div>";
81
	}
82
 
83
	private void initialiserGeneralTpl() {
84
		contenuTpl =
85
			"<div class='{css_corps}'>"+
86
			"	<div class='{css_fieldset}'>"+
928 jpm 87
			"		<h2>{i18n_titre_info_generale}</h2>"+
877 aurelien 88
			"		<span class='{css_label}'>{i18n_nom} :</span> {nom}<br />"+
89
			"		<span class='{css_label}'>{i18n_abreviation} :</span> {abreviation}<br />"+
90
			"		<span class='{css_label}'>{i18n_resume} :</span> {resume}<br />"+
91
			"		<span class='{css_label}'>{i18n_description} :</span> {description}<br />"+
928 jpm 92
			"	</div>"+
93
			"	<div class='{css_fieldset}'>"+
94
			"		<h2>{i18n_titre_complement}</h2>"+
95
			"		<span class='{css_label}'>{i18n_mot_cles} :</span> {mot_cles}<br />"+
877 aurelien 96
			"		<span class='{css_label}'>{i18n_citation} :</span> {citation}<br />"+
97
			"		<span class='{css_label}'>{i18n_licence} :</span> {licence}<br />"+
98
			"		<span class='{css_label}'>{i18n_langue} :</span> {langue}<br />"+
928 jpm 99
			"	</div>"+
100
			"	<hr class='{css_clear}'/>"+
101
			"	<div class='{css_fieldset}'>"+
102
			"		<h2>{i18n_titre_indexation}</h2>"+
877 aurelien 103
			"		<span class='{css_label}'>{i18n_indexation_heure} :</span> {indexation_heure}<br />"+
104
			"		<span class='{css_label}'>{i18n_indexation_duree} :</span> {indexation_duree}<br />"+
105
			"		<span class='{css_label}'>{i18n_indexation_frequence} :</span> {indexation_frequence}<br />"+
106
			"		<span class='{css_label}'>{i18n_mark_public} :</span> {mark_public}<br />"+
834 aurelien 107
			"	</div>"+
108
			"</div>";
109
	}
110
 
111
	public void afficherDetail() {
112
		if (projet != null) {
113
			afficherEntete();
114
			afficherDetailProjet();
115
		}
116
		layout();
117
	}
118
 
119
	private void afficherEntete() {
120
		Params enteteParams = new Params();
121
		enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE);
122
		enteteParams.set("css_meta", ComposantClass.META);
123
 
124
		enteteParams.set("i18n_id", i18nC.id());
125
 
126
		enteteParams.set("id", projet.getId());
127
		enteteParams.set("guid", getGuid());
128
		enteteParams.set("projet", construireTxtProjet(projet.getId()));
877 aurelien 129
		enteteParams.set("abreviation", projet.getAbreviation());
834 aurelien 130
		GWT.log("entete généré", null);
131
		String eHtml = Format.substitute(enteteTpl, enteteParams);
132
		entete.getElement().setInnerHTML(eHtml);
133
	}
134
 
135
	public String getGuid() {
136
		String guid = "URN:tela-botanica.org:";
137
		guid += "coel"+projet.getId()+":";
138
		guid += "pro"+projet.getId();
139
		return guid;
140
	}
141
 
142
	public void afficherDetailProjet() {
143
		Params contenuParams = new Params();
144
 
928 jpm 145
		contenuParams.set("i18n_titre_info_generale", i18nC.projetTitreInfoGenerale());
834 aurelien 146
 
877 aurelien 147
		contenuParams.set("i18n_nom", i18nC.nom());
148
		contenuParams.set("nom", projet.getNom());
149
 
150
		contenuParams.set("i18n_abreviation", i18nC.projetAbreviation());
151
		contenuParams.set("abreviation", projet.getAbreviation());
152
 
153
		contenuParams.set("i18n_resume", i18nC.projetResume());
154
		contenuParams.set("resume", projet.getResume());
155
 
156
		contenuParams.set("i18n_description", i18nC.projetDescription());
157
		contenuParams.set("description", projet.getDescription());
158
 
928 jpm 159
		contenuParams.set("i18n_titre_complement", i18nC.projetTitreComplement());
877 aurelien 160
 
928 jpm 161
		contenuParams.set("i18n_mot_cles", i18nC.projetMotsCles());
162
		contenuParams.set("mot_cles", projet.getMotsCles());
163
 
877 aurelien 164
		contenuParams.set("i18n_citation", i18nC.projetCitation());
165
		contenuParams.set("citation", projet.getCitation());
166
 
167
		contenuParams.set("i18n_licence", i18nC.projetLicence());
168
		contenuParams.set("licence", projet.getLicence());
169
 
170
		contenuParams.set("i18n_langue", i18nC.projetLangue());
908 aurelien 171
		contenuParams.set("langue", obtenirValeurLangue(projet.getLangue()));
877 aurelien 172
 
928 jpm 173
		contenuParams.set("i18n_titre_indexation", i18nC.projetTitreIndexation());
174
 
877 aurelien 175
		contenuParams.set("i18n_indexation_heure", i18nC.projetIndexationHeure());
1114 jpm 176
		contenuParams.set("indexation_heure", corrigerIndexationHeure(projet.getIndexationHeure()));
877 aurelien 177
 
178
		contenuParams.set("i18n_indexation_duree", i18nC.projetIndexationDuree());
908 aurelien 179
		contenuParams.set("indexation_duree", obtenirValeurIndexationDuree(projet.getIndexationDuree()));
877 aurelien 180
 
181
		contenuParams.set("i18n_indexation_frequence", i18nC.projetIndexationFrequence());
908 aurelien 182
		contenuParams.set("indexation_frequence", obtenirValeurIndexationFrequence(projet.getIndexationFreq()));
877 aurelien 183
 
184
		contenuParams.set("i18n_mark_public", i18nC.projetMarkPublic());
908 aurelien 185
		contenuParams.set("mark_public", obtenirValeurPublic(projet.getMarkPublic()));
877 aurelien 186
 
834 aurelien 187
		String gHtml = formaterContenu(contenuTpl, contenuParams);
188
		contenu.getElement().setInnerHTML(gHtml);
189
	}
190
 
1114 jpm 191
	private String corrigerIndexationHeure(String heureMinuteSecondeEnBdd) {
192
		String heureMinute = "";
193
		if (!UtilString.isEmpty(heureMinuteSecondeEnBdd)) {
194
			heureMinute = heureMinuteSecondeEnBdd.replaceAll(":00$", "");
195
		}
196
		return heureMinute;
197
	}
198
 
834 aurelien 199
	public void rafraichir(Object nouvellesDonnees) {
200
		if (nouvellesDonnees instanceof Projet) {
201
			projet = (Projet) nouvellesDonnees;
202
			projetChargementOk = true;
203
		} else if (nouvellesDonnees instanceof ProjetListe) {
204
			projets = (ProjetListe) nouvellesDonnees;
205
			projetsChargementOk = true;
908 aurelien 206
		} else if(nouvellesDonnees instanceof ValeurListe) {
207
			ValeurListe nValeurListe = (ValeurListe)nouvellesDonnees;
208
 
924 jpm 209
			if (nValeurListe.getId() == listeValeurIndexationDureeInt) {
908 aurelien 210
				valeurListeIndexationDuree = (ValeurListe)nouvellesDonnees;
211
				listeIndexationDureeChargee = true;
212
			}
213
 
924 jpm 214
			if (nValeurListe.getId() == listeValeurIndexationFrequenceInt) {
908 aurelien 215
				valeurListeIndexationFrequence = (ValeurListe)nouvellesDonnees;
216
				listeIndexationFrequenceChargee = true;
217
			}
218
 
924 jpm 219
			if (nValeurListe.getId() == listeLanguesInt) {
908 aurelien 220
				valeurListeLangue = (ValeurListe)nouvellesDonnees;
221
				listeLangueChargee = true;
222
			}
928 jpm 223
		} else {
834 aurelien 224
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
225
		}
226
 
227
		if (avoirDonneesChargees()) {
228
			afficherDetail();
229
		}
230
	}
231
 
232
	private boolean avoirDonneesChargees() {
233
		boolean ok = false;
928 jpm 234
		if (projetsChargementOk && projetChargementOk && listeIndexationDureeChargee && listeIndexationFrequenceChargee && listeLangueChargee) {
834 aurelien 235
			ok = true;
236
		}
237
		return ok;
238
	}
908 aurelien 239
 
240
	private String obtenirValeurIndexationDuree(String id) {
924 jpm 241
		if (valeurListeIndexationDuree.get(id) != null) {
908 aurelien 242
			return valeurListeIndexationDuree.get(id).getNom();
243
		}
244
		return "";
245
	}
246
 
247
	private String obtenirValeurIndexationFrequence(String id) {
924 jpm 248
		if (valeurListeIndexationFrequence.get(id) != null) {
908 aurelien 249
			return valeurListeIndexationFrequence.get(id).getNom();
250
		}
251
		return "";
252
	}
253
 
254
	private String obtenirValeurLangue(String id) {
924 jpm 255
		if (valeurListeLangue.get(id) != null) {
908 aurelien 256
			return valeurListeLangue.get(id).getNom();
257
		}
258
		return "";
259
	}
260
 
261
	private String obtenirValeurPublic(String ouiNon) {
924 jpm 262
		if (ouiNon.equals("1")) {
908 aurelien 263
			return i18nC.oui();
264
		}
265
		return i18nC.non();
266
	}
834 aurelien 267
}