Subversion Repositories eFlore/Applications.del

Rev

Rev 427 | Go to most recent revision | Details | Compare with Previous | 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();
414 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
 
67
		vue.getBoutonFermer().addClickHandler(new ClickHandler() {
68
			public void onClick(ClickEvent event) {
69
				fermerFenetreModale();
70
			}
71
		});
72
 
73
		vue.getBoutonPrecedent().addClickHandler(new ClickHandler() {
74
			public void onClick(ClickEvent event) {
429 aurelien 75
				surClicBoutonPrecedent();
414 aurelien 76
			}
77
		});
78
 
79
		vue.getBoutonSuivant().addClickHandler(new ClickHandler() {
80
			public void onClick(ClickEvent event) {
429 aurelien 81
				surClicBoutonSuivant();
414 aurelien 82
			}
83
		});
429 aurelien 84
 
85
		vue.getConteneurGlobal().addKeyDownHandler(new KeyDownHandler() {
86
			@Override
87
			public void onKeyDown(KeyDownEvent event) {
88
				if(event.getNativeKeyCode() == KeyCodes.KEY_LEFT) {
89
					surClicBoutonPrecedent();
90
				}
91
 
92
				if(event.getNativeKeyCode() == KeyCodes.KEY_RIGHT) {
93
					surClicBoutonSuivant();
94
				}
95
			}
96
		});
414 aurelien 97
	}
98
 
99
	public void ouvrirFenetreModaleDefilante(int indexElementAffiche, Presenteur presenteurModal) {
427 aurelien 100
 
414 aurelien 101
		vue.setStyleOverlay("overlay");
102
		vue.setStyleOverlayContenu("overlayContenu");
103
		vue.getOverlayContenuVisibility().setVisible(true);
104
		vue.getOverlayVisibility().setVisible(true);
105
		RootPanel.get().add(vue.asWidget());
106
		fenetreModaleOuverte = true;
427 aurelien 107
 
108
		setContenuFenetreModale(indexElementAffiche, presenteurModal);
109
		vue.surOuvertureFenetre();
414 aurelien 110
	}
111
 
112
	public void setContenuFenetreModale(int indexElementAffiche, Presenteur presenteurModal) {
113
		this.indexElementAffiche = indexElementAffiche;
114
		vue.viderOverlayContenu();
115
		presenteurModal.go(vue.getOverlayContenuHasWidgets());
427 aurelien 116
		vue.surSetContenuFenetre();
414 aurelien 117
	}
118
 
429 aurelien 119
	public abstract void surClicBoutonSuivant();
120
	public abstract void surClicBoutonPrecedent();
414 aurelien 121
 
122
	public boolean fenetreModaleEstOuverte() {
123
		return fenetreModaleOuverte;
124
	}
125
 
126
	public void fermerFenetreModale() {
127
		vue.viderOverlay();
128
		vue.viderOverlayContenu();
129
		RootPanel.get().remove(vue.asWidget());
130
		fenetreModaleOuverte = false;
427 aurelien 131
		vue.surFermetureFenetre();
414 aurelien 132
	}
133
 
134
	public int getIndexElementAffiche() {
135
		return indexElementAffiche;
136
	}
137
}