Subversion Repositories eFlore/Applications.del

Rev

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