Subversion Repositories eFlore/Applications.del

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
41 aurelien 1
package org.tela_botanica.del.client.vues.plateformedetermination.forum;
2
 
893 gduche 3
import java.util.List;
159 benjamin 4
import org.tela_botanica.del.client.cache.CacheClient;
658 benjamin 5
import org.tela_botanica.del.client.modeles.InterventionForum;
159 benjamin 6
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
303 aurelien 7
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
8
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
159 benjamin 9
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
10
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
663 benjamin 11
import org.tela_botanica.del.client.vues.plateformedetermination.forum.interventions.ForumInterventionPresenteur;
12
import org.tela_botanica.del.client.vues.plateformedetermination.forum.interventions.ForumInterventionVue;
41 aurelien 13
 
876 gduche 14
import com.google.gwt.user.client.Window;
41 aurelien 15
import com.google.gwt.user.client.ui.HasWidgets;
303 aurelien 16
import com.google.gwt.user.client.ui.IsWidget;
41 aurelien 17
 
159 benjamin 18
public class ForumPresenteur {
658 benjamin 19
 
303 aurelien 20
	public interface Vue extends IsWidget {
658 benjamin 21
 
663 benjamin 22
		public abstract HasWidgets getPanneauInterventions();
303 aurelien 23
	}
84 benjamin 24
 
303 aurelien 25
	private Vue vue;
84 benjamin 26
 
303 aurelien 27
	public ForumPresenteur(Vue vue) {
28
		this.vue = vue;
29
	}
658 benjamin 30
 
41 aurelien 31
	public void go(HasWidgets composite) {
84 benjamin 32
 
159 benjamin 33
		chargerDeterminations();
303 aurelien 34
		composite.add(vue.asWidget());
159 benjamin 35
 
36
		gererEvenements();
41 aurelien 37
	}
84 benjamin 38
 
159 benjamin 39
	private void chargerDeterminations() {
893 gduche 40
		//for (InterventionForum interventionForum : CacheClient.getInstance().getObservationCourante().getInterventionsForum()) {
41
		List<InterventionForum> interventions = CacheClient.getInstance().getObservationCourante().getInterventionsForum();
42
		while (interventions.size() > 0) {
43
			interventions = afficherParent(interventions, interventions.get(0));
44
		}
45
	}
46
 
47
	private List<InterventionForum> afficherParent(List<InterventionForum> interventions, InterventionForum interventionForum) {
48
		InterventionForum interventionParent = interventionForum.getParent();
49
		if (interventionParent != null) {
50
			interventions = afficherParent(interventions, interventionParent);
663 benjamin 51
			new ForumInterventionPresenteur(new ForumInterventionVue(), interventionForum).go(vue.getPanneauInterventions());
893 gduche 52
			interventions.remove(interventionForum);
53
		} else {
54
			new ForumInterventionPresenteur(new ForumInterventionVue(), interventionForum).go(vue.getPanneauInterventions());
55
			interventions.remove(interventionForum);
171 aurelien 56
		}
893 gduche 57
		return interventions;
41 aurelien 58
	}
159 benjamin 59
 
60
	private void gererEvenements() {
61
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
62
 
63
			@Override
64
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
663 benjamin 65
				new ForumInterventionPresenteur(new ForumInterventionVue(), event.getPropositionDetermination()).go(vue.getPanneauInterventions());
159 benjamin 66
			}
67
		});
658 benjamin 68
 
303 aurelien 69
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
658 benjamin 70
 
303 aurelien 71
			@Override
72
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
663 benjamin 73
				new ForumInterventionPresenteur(new ForumInterventionVue(), event.getCommentaire()).go(vue.getPanneauInterventions());
303 aurelien 74
			}
75
		});
94 aurelien 76
	}
658 benjamin 77
 
41 aurelien 78
}