Subversion Repositories eFlore/Applications.del

Rev

Rev 414 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 414 Rev 427
Line 1... Line 1...
1
package org.tela_botanica.del.client.composants.fenetreOverlayDefilante;
1
package org.tela_botanica.del.client.composants.fenetreOverlayDefilante;
Line 2... Line 2...
2
 
2
 
Line -... Line 3...
-
 
3
import org.tela_botanica.del.client.composants.fenetreOverlayDefilante.FenetreOverlayDefilantePresenteur.Vue;
3
import org.tela_botanica.del.client.composants.fenetreOverlayDefilante.FenetreOverlayDefilantePresenteur.Vue;
4
 
4
 
5
import com.google.gwt.animation.client.Animation;
-
 
6
import com.google.gwt.core.client.GWT;
-
 
7
import com.google.gwt.event.dom.client.LoadEvent;
-
 
8
import com.google.gwt.event.dom.client.LoadHandler;
-
 
9
import com.google.gwt.event.dom.client.MouseMoveEvent;
-
 
10
import com.google.gwt.event.dom.client.MouseMoveHandler;
-
 
11
import com.google.gwt.event.dom.client.MouseOverEvent;
-
 
12
import com.google.gwt.event.dom.client.MouseOverHandler;
-
 
13
import com.google.gwt.event.logical.shared.AttachEvent;
-
 
14
import com.google.gwt.event.logical.shared.AttachEvent.Handler;
5
import com.google.gwt.core.client.GWT;
15
import com.google.gwt.event.logical.shared.ResizeEvent;
6
import com.google.gwt.event.dom.client.ClickEvent;
16
import com.google.gwt.event.logical.shared.ResizeHandler;
-
 
17
import com.google.gwt.uibinder.client.UiBinder;
-
 
18
import com.google.gwt.uibinder.client.UiField;
7
import com.google.gwt.uibinder.client.UiBinder;
19
import com.google.gwt.user.client.DOM;
-
 
20
import com.google.gwt.user.client.Timer;
-
 
21
import com.google.gwt.user.client.Window;
8
import com.google.gwt.uibinder.client.UiField;
22
import com.google.gwt.user.client.Window.ScrollEvent;
9
import com.google.gwt.user.client.Window;
23
import com.google.gwt.user.client.Window.ScrollHandler;
-
 
24
import com.google.gwt.user.client.ui.Button;
10
import com.google.gwt.user.client.ui.Button;
25
import com.google.gwt.user.client.ui.Composite;
11
import com.google.gwt.user.client.ui.Composite;
26
import com.google.gwt.user.client.ui.FlowPanel;
12
import com.google.gwt.user.client.ui.HTMLPanel;
27
import com.google.gwt.user.client.ui.HTMLPanel;
-
 
28
import com.google.gwt.user.client.ui.HasVisibility;
13
import com.google.gwt.user.client.ui.HasVisibility;
29
import com.google.gwt.user.client.ui.HasWidgets;
-
 
30
import com.google.gwt.user.client.ui.HorizontalPanel;
-
 
31
import com.google.gwt.user.client.ui.IsWidget;
-
 
32
import com.google.gwt.user.client.ui.LayoutPanel;
-
 
33
import com.google.gwt.user.client.ui.RootPanel;
14
import com.google.gwt.user.client.ui.HasWidgets;
34
import com.google.gwt.user.client.ui.UIObject;
Line 15... Line 35...
15
import com.google.gwt.user.client.ui.IsWidget;
35
import com.google.gwt.user.client.ui.VerticalPanel;
Line 16... Line -...
16
import com.google.gwt.user.client.ui.Widget;
-
 
17
 
-
 
18
public class FenetreOverlayDefilanteVue extends Composite implements Vue {
36
import com.google.gwt.user.client.ui.Widget;
19
 
37
 
-
 
38
public class FenetreOverlayDefilanteVue extends Composite implements Vue {
-
 
39
 
-
 
40
	interface MyUiBinder extends UiBinder<Widget, FenetreOverlayDefilanteVue> {
Line 20... Line 41...
20
	// Annotation can be used to change the name of the associated xml file
41
	}
21
	// @UiTemplate("ObservationRechercheVue.ui.xml")
42
	
Line 22... Line 43...
22
	interface MyUiBinder extends UiBinder<Widget, FenetreOverlayDefilanteVue> {
43
	@UiField
23
	}
44
	VerticalPanel conteneurGlobal;
Line -... Line 45...
-
 
45
 
-
 
46
	@UiField
-
 
47
	HTMLPanel overlay, overlayContenu;
-
 
48
 
-
 
49
	@UiField
-
 
50
	Button boutonFermer, boutonSuivant, boutonPrecedent;
-
 
51
	
-
 
52
	@UiField 
24
 
53
	HorizontalPanel conteneurOverlayContenu;
25
	@UiField
54
	
26
	HTMLPanel overlay, overlayContenu;
55
	private int hauteurContenu = 0;
Line 27... Line 56...
27
 
56
	private int largeurContenu = 0;
Line 49... Line 78...
49
	}
78
	}
Line 50... Line 79...
50
 
79
 
Line 51... Line 80...
51
	private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
80
	private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
-
 
81
 
52
 
82
	public FenetreOverlayDefilanteVue() {
53
	public FenetreOverlayDefilanteVue() {
83
		
54
		initWidget(uiBinder.createAndBindUi(this));
84
		initWidget(uiBinder.createAndBindUi(this));
55
		boutonFermer.setStyleName("fermerOverlay");
85
		boutonFermer.setStyleName("fermerOverlay");
-
 
86
		boutonPrecedent.setStyleName("precedentOverlay");
-
 
87
		boutonSuivant.setStyleName("suivantOverlay");
-
 
88
				
-
 
89
		Window.addResizeHandler(new ResizeHandler() {
-
 
90
			@Override
-
 
91
			public void onResize(ResizeEvent event) {
-
 
92
				gererDimensions();
56
		boutonPrecedent.setStyleName("precedentOverlay");
93
			}
Line 57... Line 94...
57
		boutonSuivant.setStyleName("suivantOverlay");
94
		});
58
	}
95
	}
59
 
96
 
Line 95... Line 132...
95
 
132
 
96
	@Override
133
	@Override
97
	public void viderOverlayContenu() {
134
	public void viderOverlayContenu() {
98
		overlayContenu.clear();
135
		overlayContenu.clear();
-
 
136
	}
-
 
137
	
-
 
138
	private void gererDimensions() {
-
 
139
				
-
 
140
		UIObject overlayContenuUi = overlayContenu.getWidget(0);
-
 
141
				
-
 
142
		int topBoutonsSuivantsPrecedent = (overlayContenuUi.getAbsoluteTop() + overlayContenuUi.getOffsetHeight())/2 + 20;
-
 
143
		int topBoutonFermer = overlayContenuUi.getAbsoluteTop() - 10;
-
 
144
		int left = overlayContenuUi.getAbsoluteLeft() - 20;
-
 
145
		int right = overlayContenuUi.getAbsoluteLeft() + overlayContenuUi.getOffsetWidth() - 12;
-
 
146
		
-
 
147
		DOM.setStyleAttribute(boutonPrecedent.getElement(), "left",left+"px");
-
 
148
		DOM.setStyleAttribute(boutonPrecedent.getElement(), "top", topBoutonsSuivantsPrecedent+"px");
-
 
149
		
-
 
150
		DOM.setStyleAttribute(boutonSuivant.getElement(), "left",right+"px");
-
 
151
		DOM.setStyleAttribute(boutonSuivant.getElement(), "top", topBoutonsSuivantsPrecedent+"px");
-
 
152
		
-
 
153
		DOM.setStyleAttribute(boutonFermer.getElement(), "left",(right - 10)+"px");
-
 
154
		DOM.setStyleAttribute(boutonFermer.getElement(), "top", topBoutonFermer+"px");	
-
 
155
		
-
 
156
		setDimensionsContenu(overlayContenuUi.getOffsetHeight(), overlayContenuUi.getOffsetWidth());
-
 
157
	}
-
 
158
	
-
 
159
	private void setDimensionsContenu(int hauteur, int largeur) {
-
 
160
		largeurContenu = largeur;
-
 
161
		hauteurContenu = hauteur;
-
 
162
	}
-
 
163
 
-
 
164
	@Override
-
 
165
	public void surOuvertureFenetre() {
-
 
166
		Window.enableScrolling(false);
-
 
167
		// Pas trouvé mieux que le timer pour bien redimensionner
-
 
168
		// à voir si l'existe une meilleure solution qui n'oblige pas 
-
 
169
		// par avance à connaitre le type d'objet contenu dans l'overlayContenu
-
 
170
		// ou bien la taille de la fenetre
-
 
171
		timerPlacement = new Timer() {
-
 
172
			@Override
-
 
173
			public void run() {
-
 
174
				// on vérifie si la taille du contenu a changé 
-
 
175
				if(tailleDuContenuModifie()) {
-
 
176
					// et on repositionne les boutons
-
 
177
					gererDimensions();
-
 
178
				}
-
 
179
			}
-
 
180
		};
-
 
181
		timerPlacement.scheduleRepeating(30);
-
 
182
	}
-
 
183
	
-
 
184
	private boolean tailleDuContenuModifie() {
-
 
185
		UIObject overlayContenuUi = overlayContenu.getWidget(0);
-
 
186
		return overlayContenuUi != null 
-
 
187
				&& (overlayContenuUi.getOffsetHeight() != hauteurContenu 
-
 
188
				|| overlayContenuUi.getOffsetWidth() != largeurContenu);
-
 
189
	}
-
 
190
 
-
 
191
	@Override
-
 
192
	public void surFermetureFenetre() {
-
 
193
		Window.enableScrolling(true);
-
 
194
		timerPlacement.cancel();
-
 
195
	}
-
 
196
	
-
 
197
	@Override
-
 
198
	public void surSetContenuFenetre() {
-
 
199
 
99
	}
200
	}