Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
608 aurelien 1
package org.tela_botanica.del.client.composants.fenetreoverlay;
2
 
3
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
4
 
5
import com.google.gwt.event.dom.client.BlurEvent;
6
import com.google.gwt.event.dom.client.BlurHandler;
7
import com.google.gwt.event.dom.client.ClickEvent;
8
import com.google.gwt.event.dom.client.ClickHandler;
9
import com.google.gwt.event.dom.client.FocusEvent;
10
import com.google.gwt.event.dom.client.FocusHandler;
11
import com.google.gwt.event.dom.client.HasBlurHandlers;
12
import com.google.gwt.event.dom.client.HasClickHandlers;
13
import com.google.gwt.event.dom.client.HasFocusHandlers;
14
import com.google.gwt.event.dom.client.HasKeyDownHandlers;
15
import com.google.gwt.event.dom.client.KeyCodes;
16
import com.google.gwt.event.dom.client.KeyDownEvent;
17
import com.google.gwt.event.dom.client.KeyDownHandler;
18
import com.google.gwt.event.shared.HasHandlers;
19
import com.google.gwt.user.client.Window;
20
import com.google.gwt.user.client.ui.HasVisibility;
21
import com.google.gwt.user.client.ui.HasWidgets;
22
import com.google.gwt.user.client.ui.IsWidget;
23
import com.google.gwt.user.client.ui.RootPanel;
24
 
25
public abstract class FenetreOverlayDefilantePresenteur {
26
 
27
	public interface Vue extends IsWidget {
28
		public HasKeyDownHandlers getConteneurGlobal();
29
		public IsWidget getOverlay();
30
		public void afficherBoutonsSuivantsPrecedents(boolean afficher);
31
		public HasClickHandlers getOverlayHasClickHandlers();
32
		public HasVisibility getOverlayVisibility();
33
		public IsWidget getOverlayContenu();
34
		public HasVisibility getOverlayContenuVisibility();
35
		public HasWidgets getOverlayContenuHasWidgets();
36
		public HasClickHandlers getBoutonFermer();
37
		public HasClickHandlers getBoutonSuivant();
38
		public HasClickHandlers getBoutonPrecedent();
39
		public void setStyleOverlay(String style);
40
		public void setStyleOverlayContenu(String style);
41
		public void setOverlayContenu(IsWidget w);
42
		public void viderOverlay();
43
		public void viderOverlayContenu();
44
		public void surOuvertureFenetre();
45
		public void surFermetureFenetre();
46
		public void surSetContenuFenetre();
47
	}
48
 
49
	private Vue vue;
50
 
51
	private boolean fenetreModaleOuverte = false;
52
	private boolean fermableSurClicExterieur = true;
53
	private int indexElementAffiche = 0;
54
 
55
	// Constructeur
56
	public FenetreOverlayDefilantePresenteur(int indexElementAffiche, Vue vue) {
57
		this.indexElementAffiche = indexElementAffiche;
58
		this.vue = vue;
59
		gererEvenements();
60
	}
61
 
62
	// Afficheur
63
	public void go() {
64
		go(null);
65
	}
66
 
67
	public void go(HasWidgets composite) {
68
 
69
	}
70
 
71
	// Gestion des évènements
72
	protected void gererEvenements() {
73
 
74
		vue.getBoutonFermer().addClickHandler(new ClickHandler() {
75
			public void onClick(ClickEvent event) {
76
				fermerFenetreModale();
77
			}
78
		});
79
 
80
		vue.getBoutonPrecedent().addClickHandler(new ClickHandler() {
81
			public void onClick(ClickEvent event) {
82
				surClicBoutonPrecedent();
83
			}
84
		});
85
 
86
		vue.getBoutonSuivant().addClickHandler(new ClickHandler() {
87
			public void onClick(ClickEvent event) {
88
				surClicBoutonSuivant();
89
			}
90
		});
91
 
92
		vue.getConteneurGlobal().addKeyDownHandler(new KeyDownHandler() {
93
			@Override
94
			public void onKeyDown(KeyDownEvent event) {
95
				if(event.getNativeKeyCode() == KeyCodes.KEY_LEFT) {
96
					surClicBoutonPrecedent();
97
				}
98
 
99
				if(event.getNativeKeyCode() == KeyCodes.KEY_RIGHT) {
100
					surClicBoutonSuivant();
101
				}
102
			}
103
		});
104
 
105
		vue.getOverlayHasClickHandlers().addClickHandler(new ClickHandler() {
106
			@Override
107
			public void onClick(ClickEvent event) {
108
				if(fermableSurClicExterieur) {
109
					fermerFenetreModale();
110
				}
111
			}
112
		});
113
	}
114
 
115
	public void ouvrirFenetreModaleDefilante(int indexElementAffiche, Presenteur presenteurModal) {
116
 
117
		vue.setStyleOverlay("overlay");
118
		vue.setStyleOverlayContenu("overlayContenu");
119
		vue.getOverlayContenuVisibility().setVisible(true);
120
		vue.getOverlayVisibility().setVisible(true);
121
		RootPanel.get().add(vue.asWidget());
122
		fenetreModaleOuverte = true;
123
 
124
		setContenuFenetreModale(indexElementAffiche, presenteurModal);
125
		vue.surOuvertureFenetre();
126
	}
127
 
128
	public void setContenuFenetreModale(int indexElementAffiche, Presenteur presenteurModal) {
129
		this.indexElementAffiche = indexElementAffiche;
130
		vue.viderOverlayContenu();
131
		presenteurModal.go(vue.getOverlayContenuHasWidgets());
132
		vue.surSetContenuFenetre();
133
	}
134
 
135
	public abstract void surClicBoutonSuivant();
136
	public abstract void surClicBoutonPrecedent();
137
 
138
	public boolean fenetreModaleEstOuverte() {
139
		return fenetreModaleOuverte;
140
	}
141
 
142
	public void fermerFenetreModale() {
143
		vue.viderOverlay();
144
		vue.viderOverlayContenu();
145
		RootPanel.get().remove(vue.asWidget());
146
		fenetreModaleOuverte = false;
147
		vue.surFermetureFenetre();
148
	}
149
 
150
	public int getIndexElementAffiche() {
151
		return indexElementAffiche;
152
	}
153
 
154
	public void setFermableSurClicExterieur(boolean fermableSurClicExterieur) {
155
		this.fermableSurClicExterieur = fermableSurClicExterieur;
156
	}
157
 
158
	public void afficherBoutonsSuivantsPrecedents(boolean afficher) {
159
		vue.afficherBoutonsSuivantsPrecedents(afficher);
160
	}
161
}