Subversion Repositories eFlore/Applications.coel

Rev

Rev 1764 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
985 jpm 1
package org.tela_botanica.client.vues.commentaire;
2
 
3
import java.util.ArrayList;
4
 
5
import org.tela_botanica.client.ComposantClass;
6
import org.tela_botanica.client.Mediateur;
1329 cyprien 7
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
989 jpm 8
import org.tela_botanica.client.composants.ChampSliderPourcentage;
1239 cyprien 9
import org.tela_botanica.client.composants.InfoLogger;
985 jpm 10
import org.tela_botanica.client.interfaces.Rafraichissable;
11
import org.tela_botanica.client.modeles.Information;
12
import org.tela_botanica.client.modeles.MenuApplicationId;
989 jpm 13
import org.tela_botanica.client.modeles.commentaire.Commentaire;
1367 cyprien 14
import org.tela_botanica.client.synchronisation.Sequenceur;
989 jpm 15
import org.tela_botanica.client.util.Debug;
985 jpm 16
import org.tela_botanica.client.util.UtilArray;
17
import org.tela_botanica.client.util.UtilString;
18
import org.tela_botanica.client.vues.Formulaire;
19
 
1329 cyprien 20
import com.extjs.gxt.ui.client.data.ModelData;
21
import com.extjs.gxt.ui.client.data.ModelType;
985 jpm 22
import com.extjs.gxt.ui.client.event.Events;
23
import com.extjs.gxt.ui.client.widget.MessageBox;
989 jpm 24
import com.extjs.gxt.ui.client.widget.form.CheckBox;
999 jpm 25
import com.extjs.gxt.ui.client.widget.form.Field;
989 jpm 26
import com.extjs.gxt.ui.client.widget.form.TextArea;
985 jpm 27
import com.extjs.gxt.ui.client.widget.form.TextField;
999 jpm 28
import com.extjs.gxt.ui.client.widget.form.Validator;
985 jpm 29
import com.extjs.gxt.ui.client.widget.layout.FormData;
30
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
1613 aurelien 31
import com.google.gwt.user.client.Window;
985 jpm 32
 
33
 
34
public class CommentaireForm extends Formulaire implements Rafraichissable {
35
 
989 jpm 36
	private Commentaire commentaire;
37
 
38
	private TextField<String> titreChp;
39
	private TextArea texteChp;
40
	private ChampSliderPourcentage ponderationChp;
41
	private CheckBox publicChp;
985 jpm 42
 
43
	private static boolean formulaireValideOk = false;
989 jpm 44
	private static boolean commentaireValideOk = false;
1367 cyprien 45
 
46
	private Sequenceur sequenceur = new Sequenceur();
985 jpm 47
 
989 jpm 48
	public CommentaireForm(Mediateur mediateurCourrant, String commentaireId) {
49
		initialiserCommentaireForm(mediateurCourrant, commentaireId);
985 jpm 50
	}
51
 
989 jpm 52
	public CommentaireForm(Mediateur mediateurCourrant, String commentaireId, Rafraichissable vueARafraichirApresValidation) {
985 jpm 53
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
989 jpm 54
		initialiserCommentaireForm(mediateurCourrant, commentaireId);
985 jpm 55
	}
56
 
989 jpm 57
	private void initialiserCommentaireForm(Mediateur mediateurCourrant, String commentaireId) {
985 jpm 58
		initialiserValidation();
59
 
989 jpm 60
		commentaire = new Commentaire();
61
		commentaire.setId(commentaireId);
985 jpm 62
 
989 jpm 63
		String modeDeCreation = (UtilString.isEmpty(commentaire.getId()) ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
64
		initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.COMMENTAIRE);
985 jpm 65
 
989 jpm 66
		panneauFormulaire.setLayout(new FormLayout());
1099 jpm 67
		genererTitreFormulaire();
989 jpm 68
		creerChamps();
69
 
985 jpm 70
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
1367 cyprien 71
			mediateur.selectionnerCommentaire(this, commentaireId, null);
985 jpm 72
		}
73
	}
74
 
1099 jpm 75
	private void genererTitreFormulaire() {
989 jpm 76
		String titre = i18nC.commentaireTitreFormAjout();
985 jpm 77
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
1099 jpm 78
			 titre = i18nC.commentaireTitreFormModif();
79
			 if (commentaire != null) {
80
				 titre += " - "+i18nC.id()+": "+commentaire.getId();
81
			 }
985 jpm 82
		}
1680 raphael 83
		panneauFormulaire.setHeadingHtml(titre);
985 jpm 84
	}
85
 
989 jpm 86
	private void creerChamps() {
1764 aurelien 87
 
985 jpm 88
		titreChp = new TextField<String>();
989 jpm 89
		titreChp.setFieldLabel(i18nC.commentaireTitre());
1077 jpm 90
		titreChp.setAllowBlank(false);
985 jpm 91
		titreChp.addStyleName(ComposantClass.OBLIGATOIRE);
92
		titreChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
1077 jpm 93
		titreChp.addListener(Events.Invalid, creerEcouteurChampObligatoire());
989 jpm 94
		panneauFormulaire.add(titreChp, new FormData(450, 0));
985 jpm 95
 
989 jpm 96
		texteChp = new TextArea();
97
		texteChp.setFieldLabel(i18nC.commentaireTexte());
98
		panneauFormulaire.add(texteChp, new FormData(450, 250));
985 jpm 99
 
989 jpm 100
		ponderationChp = new ChampSliderPourcentage(i18nC.commentairePonderation());
101
		panneauFormulaire.add(ponderationChp, new FormData(450, 0));
102
 
103
		publicChp = new CheckBox();
104
		publicChp.setFieldLabel(i18nC.donneePublic());
105
		panneauFormulaire.add(publicChp, new FormData(50, 0));
985 jpm 106
	}
107
 
108
	public void rafraichir(Object nouvellesDonnees) {
989 jpm 109
		if (nouvellesDonnees instanceof Commentaire) {
985 jpm 110
			// Si on a reçu les details d'une publication
989 jpm 111
			rafraichirCommentaire((Commentaire) nouvellesDonnees);
985 jpm 112
		} else if (nouvellesDonnees instanceof Information) {
113
			rafraichirInformation((Information) nouvellesDonnees);
114
		} else {
989 jpm 115
			Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
985 jpm 116
		}
117
 
118
		if (etreValide()) {
119
			initialiserValidation();
120
			repandreRafraichissement();
1239 cyprien 121
			controlerFermeture();
985 jpm 122
		}
123
	}
124
 
989 jpm 125
	private void rafraichirCommentaire(Commentaire commentaireRecu) {
126
		commentaire = commentaireRecu;
985 jpm 127
		peuplerFormulaire();
1100 jpm 128
		genererTitreFormulaire();
985 jpm 129
	}
130
 
131
	private void rafraichirInformation(Information info) {
1099 jpm 132
		// Gestion des messages d'erreur
133
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
134
			Debug.log("MESSAGES:\n"+info.getMessages().toString());
135
		}
136
 
137
		// Gestion des actions
989 jpm 138
		String type = info.getType();
139
		if (type.equals("ajout_commentaire") || type.equals("modif_commentaire")) {
140
			commentaireValideOk = true;
985 jpm 141
		}
1099 jpm 142
		if (info.getType().equals("ajout_commentaire")) {
143
				String noteId = (String) info.getDonnee(0);
144
				commentaire.setId(noteId);
1617 aurelien 145
				this.mode = MODE_MODIFIER;
1099 jpm 146
		}
147
 
148
		// Gestion des messages
149
		if (info.getType().equals("modif_commentaire")) {
1239 cyprien 150
			InfoLogger.display("Modification d'une note", info.toString());
1099 jpm 151
		} else if (info.getType().equals("ajout_commentaire")) {
152
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
153
				String noteId = (String) info.getDonnee(0);
1239 cyprien 154
				InfoLogger.display("Ajout d'une note", "La note '"+noteId+"' a bien été ajoutée");
1099 jpm 155
			} else {
1239 cyprien 156
				InfoLogger.display("Ajout d'une note", info.toString());
1099 jpm 157
			}
158
		}
985 jpm 159
	}
160
 
161
	private Boolean etreValide() {
162
		Boolean valide = false;
989 jpm 163
		if (formulaireValideOk && commentaireValideOk) {
985 jpm 164
			valide = true;
165
		}
166
		return valide;
167
	}
168
 
169
	private void initialiserValidation() {
170
		formulaireValideOk = false;
989 jpm 171
		commentaireValideOk = false;
985 jpm 172
	}
173
 
174
	private void repandreRafraichissement() {
175
		if (vueExterneARafraichirApresValidation != null) {
989 jpm 176
			String type = "commentaire_modifiee";
985 jpm 177
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
989 jpm 178
				type = "commentaire_ajoutee";
985 jpm 179
			}
180
			Information info = new Information(type);
989 jpm 181
			info.setDonnee(0, commentaire);
985 jpm 182
			vueExterneARafraichirApresValidation.rafraichir(info);
183
		}
184
	}
185
 
186
	public boolean soumettreFormulaire() {
187
		formulaireValideOk = verifierFormulaire();
188
		if (formulaireValideOk) {
989 jpm 189
			soumettreCommentaire();
985 jpm 190
		}
191
		return formulaireValideOk;
192
	}
193
 
989 jpm 194
	private void soumettreCommentaire() {
195
		Commentaire commentaireCollectee = collecterCommentaire();
196
		if (commentaireCollectee != null) {
985 jpm 197
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
989 jpm 198
				mediateur.ajouterCommentaire(this, commentaireCollectee);
985 jpm 199
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
989 jpm 200
				mediateur.modifierCommentaire(this, commentaireCollectee);
985 jpm 201
			}
1617 aurelien 202
		} else {
203
			if(clicBoutonvalidation) {
204
				fermerFormulaire();
205
			}
985 jpm 206
		}
207
	}
208
 
209
	public boolean verifierFormulaire() {
210
		boolean valide = true;
211
		ArrayList<String> messages = new ArrayList<String>();
212
 
213
		String titre = titreChp.getValue();
214
		if (titre == null || titre.equals("")) {
989 jpm 215
			messages.add(i18nC.commentaireMessageTitre());
985 jpm 216
		}
217
 
218
		if (messages.size() != 0) {
219
			String[] tableauDeMessages = {};
220
			tableauDeMessages = messages.toArray(tableauDeMessages);
989 jpm 221
			MessageBox.alert(i18nC.erreurSaisieTitre(), UtilArray.implode(tableauDeMessages, "<br />"), null);
985 jpm 222
			valide = false;
223
		}
224
		return valide;
225
	}
226
 
227
	private void peuplerFormulaire() {
989 jpm 228
		titreChp.setValue(commentaire.getTitre());
229
		texteChp.setValue(commentaire.getTexte());
230
		ponderationChp.peupler(commentaire.getPonderation());
231
		boolean acces = (commentaire.etrePublic() ? true : false);
232
		publicChp.setValue(acces);
985 jpm 233
	}
234
 
989 jpm 235
	private Commentaire collecterCommentaire() {
236
		Commentaire commentaireCollectee = (Commentaire) commentaire.cloner(new Commentaire());
985 jpm 237
 
238
		String titre = titreChp.getValue();
989 jpm 239
		commentaireCollectee.setTitre(titre);
985 jpm 240
 
989 jpm 241
		String texte = texteChp.getValue();
242
		commentaireCollectee.setTexte(texte);
985 jpm 243
 
989 jpm 244
		String ponderation = ponderationChp.getValeur();
245
		commentaireCollectee.setPonderation(ponderation);
985 jpm 246
 
989 jpm 247
		String acces = (publicChp.getValue() ? "1" : "0");
248
		commentaireCollectee.setPublic(acces);
985 jpm 249
 
989 jpm 250
		Commentaire commentaireARetourner = null;
251
		if (!commentaireCollectee.comparer(commentaire)) {
252
			commentaireARetourner = commentaire = commentaireCollectee;
985 jpm 253
		}
989 jpm 254
		return commentaireARetourner;
985 jpm 255
	}
1661 raphael 256
}