Subversion Repositories eFlore/Applications.coel

Rev

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