Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
414 aurelien 1
package org.tela_botanica.del.client.composants.fenetreOverlayDefilante;
2
 
3
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
4
 
5
import com.google.gwt.event.dom.client.ClickEvent;
6
import com.google.gwt.event.dom.client.ClickHandler;
7
import com.google.gwt.event.dom.client.HasClickHandlers;
8
import com.google.gwt.user.client.Window;
9
import com.google.gwt.user.client.ui.Button;
10
import com.google.gwt.user.client.ui.HTMLPanel;
11
import com.google.gwt.user.client.ui.HasVisibility;
12
import com.google.gwt.user.client.ui.HasWidgets;
13
import com.google.gwt.user.client.ui.IsWidget;
14
import com.google.gwt.user.client.ui.Panel;
15
import com.google.gwt.user.client.ui.RootPanel;
16
 
17
public abstract class FenetreOverlayDefilantePresenteur {
18
 
19
	private IsWidget overlay;
20
	private IsWidget overlayContenu;
21
	public interface Vue extends IsWidget {
22
		public IsWidget getOverlay();
23
		public HasVisibility getOverlayVisibility();
24
		public IsWidget getOverlayContenu();
25
		public HasVisibility getOverlayContenuVisibility();
26
		public HasWidgets getOverlayContenuHasWidgets();
27
		public HasClickHandlers getBoutonFermer();
28
		public HasClickHandlers getBoutonSuivant();
29
		public HasClickHandlers getBoutonPrecedent();
30
		public void setStyleOverlay(String style);
31
		public void setStyleOverlayContenu(String style);
32
		public void setOverlayContenu(IsWidget w);
33
		public void viderOverlay();
34
		public void viderOverlayContenu();
35
	}
36
 
37
	private Vue vue;
38
 
39
	private boolean fenetreModaleOuverte = false;
40
	private int indexElementAffiche = 0;
41
 
42
	// Constructeur
43
	public FenetreOverlayDefilantePresenteur(int indexElementAffiche, Vue vue) {
44
		this.indexElementAffiche = indexElementAffiche;
45
		this.vue = vue;
46
		gererEvenements();
47
	}
48
 
49
	// Afficheur
50
	public void go() {
51
		go(null);
52
	}
53
 
54
	public void go(HasWidgets composite) {
55
 
56
	}
57
 
58
	// Gestion des évènements
59
	protected void gererEvenements() {
60
 
61
		vue.getBoutonFermer().addClickHandler(new ClickHandler() {
62
			public void onClick(ClickEvent event) {
63
				fermerFenetreModale();
64
			}
65
		});
66
 
67
		vue.getBoutonPrecedent().addClickHandler(new ClickHandler() {
68
			public void onClick(ClickEvent event) {
69
				surClicBoutonPrecedent(event);
70
			}
71
		});
72
 
73
		vue.getBoutonSuivant().addClickHandler(new ClickHandler() {
74
			public void onClick(ClickEvent event) {
75
				surClicBoutonSuivant(event);
76
			}
77
		});
78
	}
79
 
80
	public void ouvrirFenetreModaleDefilante(int indexElementAffiche, Presenteur presenteurModal) {
81
		this.indexElementAffiche = indexElementAffiche;
82
		overlay = vue.getOverlay();
83
		vue.setStyleOverlay("overlay");
84
		vue.getOverlayVisibility().setVisible(false);
85
		overlayContenu = vue.getOverlayContenu();
86
		vue.setStyleOverlayContenu("overlayContenu");
87
 
88
		presenteurModal.go(vue.getOverlayContenuHasWidgets());
89
 
90
		vue.getOverlayContenuVisibility().setVisible(true);
91
		vue.getOverlayVisibility().setVisible(true);
92
 
93
		RootPanel.get().add(vue.asWidget());
94
		fenetreModaleOuverte = true;
95
	}
96
 
97
	public void setContenuFenetreModale(int indexElementAffiche, Presenteur presenteurModal) {
98
		this.indexElementAffiche = indexElementAffiche;
99
		vue.viderOverlayContenu();
100
		presenteurModal.go(vue.getOverlayContenuHasWidgets());
101
	}
102
 
103
	public abstract void surClicBoutonSuivant(ClickEvent evt);
104
	public abstract void surClicBoutonPrecedent(ClickEvent evt);
105
 
106
	public boolean fenetreModaleEstOuverte() {
107
		return fenetreModaleOuverte;
108
	}
109
 
110
	public void fermerFenetreModale() {
111
		vue.viderOverlay();
112
		vue.viderOverlayContenu();
113
		RootPanel.get().remove(vue.asWidget());
114
		fenetreModaleOuverte = false;
115
	}
116
 
117
	public int getIndexElementAffiche() {
118
		return indexElementAffiche;
119
	}
120
}