Subversion Repositories eFlore/Applications.del

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1151 aurelien 1
package org.tela_botanica.del.client.composants.motsclesimages;
2
import java.util.List;
3
 
4
import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImagePresenteur;
1162 aurelien 5
import org.tela_botanica.del.client.composants.motsclesimages.motcle.MotClePresenteur;
6
import org.tela_botanica.del.client.composants.motsclesimages.motcle.MotCleVue;
7
import org.tela_botanica.del.client.i18n.I18n;
8
import org.tela_botanica.del.client.modeles.MotCle;
1151 aurelien 9
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
10
import org.tela_botanica.del.client.navigation.evenement.ajoutmotcleimage.EvenementAjoutMotCleImage;
11
import org.tela_botanica.del.client.navigation.evenement.ajoutmotcleimage.GestionnaireEvenementAjoutMotCleImage;
1162 aurelien 12
import org.tela_botanica.del.client.navigation.evenement.supressionmotcleimage.EvenementSuppressionMotCleImage;
13
import org.tela_botanica.del.client.navigation.evenement.supressionmotcleimage.GestionnaireEvenementSuppressionMotCleImage;
1151 aurelien 14
import org.tela_botanica.del.client.services.rest.MotsClesService;
15
import org.tela_botanica.del.client.services.rest.MotsClesServiceConcret;
16
import org.tela_botanica.del.client.services.rest.async.ListeMotsClesImageCallBack;
1162 aurelien 17
import org.tela_botanica.del.client.services.rest.async.SuppressionMotCleImageCallback;
1151 aurelien 18
 
19
import com.google.gwt.user.client.Window;
20
import com.google.gwt.user.client.ui.HasWidgets;
21
import com.google.gwt.user.client.ui.IsWidget;
22
 
23
public class MotsClesImagePresenteur {
24
 
1162 aurelien 25
	List<MotCle> motsCles;
1151 aurelien 26
	FormulaireSaisieMotsClesImagePresenteur formulaireSaisieMotsClesPresenteur;
27
	MotsClesService motsClesService;
28
	String idImage;
29
 
30
	public interface Vue extends IsWidget {
1162 aurelien 31
		public HasWidgets getZoneMotsCles();
1151 aurelien 32
		HasWidgets getZoneSaisieMotsCles();
1162 aurelien 33
		void viderZoneMotsCles();
1151 aurelien 34
	}
35
 
36
	private Vue vue;
37
 
38
	public MotsClesImagePresenteur(MotsClesService motsClesService, FormulaireSaisieMotsClesImagePresenteur formulaireSaisieMotsClesPresenteur, Vue vue) {
39
		this.formulaireSaisieMotsClesPresenteur = formulaireSaisieMotsClesPresenteur;
40
		this.vue = vue;
41
		this.motsClesService = motsClesService;
42
		gererEvemenements();
43
	}
44
 
45
	public void go(HasWidgets composite) {
46
		formulaireSaisieMotsClesPresenteur.go(vue.getZoneSaisieMotsCles());
47
		composite.add(vue.asWidget());
48
	}
49
 
50
	public void chargerMotsCles(String idImage) {
51
		this.idImage = idImage;
52
		if(motsCles == null) {
53
			MotsClesService motsClesService = new MotsClesServiceConcret();
54
			motsClesService.getMotsClesImage(idImage, new ListeMotsClesImageCallBack() {
55
				@Override
1162 aurelien 56
				public void surRetour(List<MotCle> objetRetour) {
1151 aurelien 57
					motsCles = objetRetour;
1162 aurelien 58
					vue.viderZoneMotsCles();
59
					afficherMotsCles(objetRetour);
1151 aurelien 60
				}
61
			});
62
		}
63
	}
64
 
65
	public void gererEvemenements() {
66
		BusEvenementiel.getInstance().addHandler(EvenementAjoutMotCleImage.TYPE, new GestionnaireEvenementAjoutMotCleImage() {
67
			@Override
68
			public void onAjoutMotCleImage(EvenementAjoutMotCleImage event) {
69
				if(idImage != null && idImage.equals(event.getIdImage())) {
1162 aurelien 70
					motsCles = null;
71
					chargerMotsCles(idImage);
1151 aurelien 72
					formulaireSaisieMotsClesPresenteur.viderChampSaisie();
73
				}
74
			}
75
		});
1162 aurelien 76
 
77
		BusEvenementiel.getInstance().addHandler(EvenementSuppressionMotCleImage.TYPE, new GestionnaireEvenementSuppressionMotCleImage() {
78
			@Override
79
			public void onSuppressionMotCleImage(EvenementSuppressionMotCleImage event) {
80
				if(idImage != null && idImage.equals(event.getIdImage())) {
81
					motsCles = null;
82
					chargerMotsCles(idImage);
83
				}
84
			}
85
		});
1151 aurelien 86
	}
1162 aurelien 87
 
88
	public void afficherMotsCles(List<MotCle> listeMotsCles) {
89
		this.motsCles = listeMotsCles;
90
		Object[] tabMotsCles = motsCles.toArray();
91
		for (int i = 0; i < motsCles.toArray().length; i++) {
92
			MotCle motCleEnCours = (MotCle)tabMotsCles[i];
93
			MotClePresenteur mcP = new MotClePresenteur(new MotCleVue(motCleEnCours.getMotCle()), motCleEnCours.getMotCle(), motCleEnCours.getIdMotCle()) {
94
				public void surSuppression(String idMotCle) {
95
					if(Window.confirm(I18n.getVocabulary().indiceSupprimerMotCle()+" ?")) {
96
						motsClesService.supprimerMotCleImage(idMotCle, new SuppressionMotCleImageCallback() {
97
							@Override
98
							public void surRetour(String objetRetour) {
99
								motsCles = null;
100
								chargerMotsCles(idImage);
101
							}
102
						});
103
					}
104
				};
105
			};
106
			mcP.go(vue.getZoneMotsCles());
107
		}
108
	}
1152 aurelien 109
 
110
	public void focuserChampsSaisie() {
111
		formulaireSaisieMotsClesPresenteur.focuserChampSaisie();
112
	}
1151 aurelien 113
}