Subversion Repositories eFlore/Applications.del

Rev

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