Subversion Repositories eFlore/Applications.del

Rev

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

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