Subversion Repositories eFlore/Applications.del

Rev

Rev 1563 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1563 Rev 1842
1
package org.tela_botanica.del.client.composants.images;
1
package org.tela_botanica.del.client.composants.images;
2
 
2
 
3
import org.tela_botanica.del.client.i18n.I18n;
3
import org.tela_botanica.del.client.i18n.I18n;
-
 
4
 
4
import com.google.gwt.core.client.GWT;
5
import com.google.gwt.core.client.GWT;
-
 
6
import com.google.gwt.dom.client.DivElement;
-
 
7
import com.google.gwt.event.dom.client.ClickEvent;
-
 
8
import com.google.gwt.event.dom.client.ClickHandler;
5
import com.google.gwt.event.dom.client.LoadEvent;
9
import com.google.gwt.event.dom.client.LoadEvent;
6
import com.google.gwt.event.dom.client.LoadHandler;
10
import com.google.gwt.event.dom.client.LoadHandler;
-
 
11
import com.google.gwt.event.dom.client.MouseOutEvent;
-
 
12
import com.google.gwt.event.dom.client.MouseOutHandler;
-
 
13
import com.google.gwt.event.dom.client.MouseOverEvent;
-
 
14
import com.google.gwt.event.dom.client.MouseOverHandler;
7
import com.google.gwt.event.logical.shared.ResizeEvent;
15
import com.google.gwt.event.logical.shared.ResizeEvent;
8
import com.google.gwt.event.logical.shared.ResizeHandler;
16
import com.google.gwt.event.logical.shared.ResizeHandler;
9
import com.google.gwt.uibinder.client.UiBinder;
17
import com.google.gwt.uibinder.client.UiBinder;
10
import com.google.gwt.uibinder.client.UiField;
18
import com.google.gwt.uibinder.client.UiField;
11
import com.google.gwt.user.client.Timer;
19
import com.google.gwt.user.client.Timer;
12
import com.google.gwt.user.client.Window;
20
import com.google.gwt.user.client.Window;
13
import com.google.gwt.user.client.ui.Composite;
21
import com.google.gwt.user.client.ui.Composite;
14
import com.google.gwt.user.client.ui.HTML;
22
import com.google.gwt.user.client.ui.HTML;
15
import com.google.gwt.user.client.ui.Image;
23
import com.google.gwt.user.client.ui.Image;
16
import com.google.gwt.user.client.ui.Widget;
24
import com.google.gwt.user.client.ui.Widget;
17
 
25
 
18
public class DetailImageVue extends Composite implements DetailImagePresenteur.Vue {
26
public class DetailImageVue extends Composite implements DetailImagePresenteur.Vue {
19
 
27
 
20
	// Gestion d'UiBinder
28
	// Gestion d'UiBinder
21
	interface Binder extends UiBinder<Widget, DetailImageVue> {
29
	interface Binder extends UiBinder<Widget, DetailImageVue> {
22
	}
30
	}
23
 
31
 
24
	private static Binder binder = GWT.create(Binder.class);
32
	private static Binder binder = GWT.create(Binder.class);
25
 
33
 
26
	@UiField
34
	@UiField
27
	protected Image photoPrincipale;
35
	protected Image photoPrincipale;
28
 
36
 
29
	@UiField
37
	@UiField
-
 
38
	protected HTML superpositionImage;
-
 
39
 
-
 
40
	@UiField
30
	protected HTML texteAlternatif;
41
	protected HTML texteAlternatif;
31
 
42
 
32
	public DetailImageVue() {
43
	public DetailImageVue() {
33
		initWidget(binder.createAndBindUi(this));
44
		initWidget(binder.createAndBindUi(this));
34
		photoPrincipale.addLoadHandler(new LoadHandler() {		
45
		photoPrincipale.addLoadHandler(new LoadHandler() {		
35
			@Override
46
			@Override
36
			public void onLoad(LoadEvent event) {
47
			public void onLoad(LoadEvent event) {
37
				setTailleOptimale();
48
				setTailleOptimale();
38
			}
49
			}
39
		});
50
		});
40
		
-
 
41
		Window.addResizeHandler(new ResizeHandler() {
51
		Window.addResizeHandler(new ResizeHandler() {
42
			
52
			
43
			Timer resizeTimer = new Timer() {  
53
			Timer resizeTimer = new Timer() {  
44
			    @Override
54
			    @Override
45
			    public void run() {
55
			    public void run() {
46
			    	setTailleOptimale();
56
			    	setTailleOptimale();
47
			    }
57
			    }
48
			};
58
			};
49
			  
59
			  
50
			@Override
60
			@Override
51
			public void onResize(ResizeEvent event) {
61
			public void onResize(ResizeEvent event) {
52
				resizeTimer.cancel();
62
				resizeTimer.cancel();
53
			    resizeTimer.schedule(250);
63
			    resizeTimer.schedule(250);
54
			}
64
			}
55
		});
65
		});
56
	}
66
	}
57
 
67
 
58
	public void chargerImage(org.tela_botanica.del.client.modeles.Image imageCourante) {
68
	public void chargerImage(org.tela_botanica.del.client.modeles.Image imageCourante) {
59
		setUrlImage(imageCourante.getUrlFormat("L"));
69
		setUrlImage(imageCourante.getUrlFormat("L"));
60
		setTitle(imageCourante.getUrlFormat("L"));
70
		//setTitle(imageCourante.getUrlFormat("L"));
-
 
71
		setTitle("Cliquer pour ouvrir l'image originale dans un nouvel onglet");
61
		setTexteAlternatif("<strong> "+I18n.getVocabulary().imageNumero()+""+ imageCourante.getIdImage() +" - "+ imageCourante.getObservation().getNomRetenuFormateReferentiel() + " "  + I18n.getVocabulary().par() + " " + imageCourante.getObservation().getAuteur() + "</strong><br />"
72
		setTexteAlternatif("<strong> "+I18n.getVocabulary().imageNumero()+""+ imageCourante.getIdImage() +" - "+ imageCourante.getObservation().getNomRetenuFormateReferentiel() + " "  + I18n.getVocabulary().par() + " " + imageCourante.getObservation().getAuteur() + "</strong><br />"
62
				+ I18n.getVocabulary().publiee() + " "+ imageCourante.getObservation().getDateReleve() + " - " + imageCourante.getObservation().getLocaliteAvecIdFormatee());
73
				+ I18n.getVocabulary().publiee() + " "+ imageCourante.getObservation().getDateReleve() + " - " + imageCourante.getObservation().getLocaliteAvecIdFormatee());
-
 
74
		final String urlImageOriginale = imageCourante.getUrlFormat("O");
-
 
75
 
-
 
76
		// ouvre l'image originale dans un nouvel onglet, en attendant un futur outil de zoom
-
 
77
		superpositionImage.addClickHandler(new ClickHandler() {
-
 
78
			@Override
-
 
79
			public void onClick(ClickEvent event) {
-
 
80
				Window.open(urlImageOriginale, "_blank", "");
-
 
81
			}
-
 
82
		});
63
	}
83
	}
64
 
84
 
65
	public void setUrlImage(String urlImage) {
85
	public void setUrlImage(String urlImage) {
66
		photoPrincipale.setUrl(urlImage);
86
		photoPrincipale.setUrl(urlImage);
67
	}
87
	}
68
 
88
 
69
	public void setTexteAlternatif(String texteAlternatif) {
89
	public void setTexteAlternatif(String texteAlternatif) {
70
		this.texteAlternatif.setHTML(texteAlternatif);
90
		this.texteAlternatif.setHTML(texteAlternatif);
71
	}
91
	}
72
	
92
	
73
	public void setTailleOptimale() {
93
	public void setTailleOptimale() {
74
		
94
		
75
		double fenetreH = Window.getClientHeight();
95
		double fenetreH = Window.getClientHeight();
76
		double fenetreW = Window.getClientWidth();
96
		double fenetreW = Window.getClientWidth();
77
		
97
		
78
		double photoH = photoPrincipale.getHeight();
98
		double photoH = photoPrincipale.getHeight();
79
		double photoW = photoPrincipale.getWidth();
99
		double photoW = photoPrincipale.getWidth();
80
		
100
		
81
		double rapport = 0;
101
		double rapport = 0;
82
		double reduction = 150;
102
		double reduction = 150;
83
		
103
		
84
		if(photoH > (fenetreH - reduction) || photoW > (fenetreW - reduction)) {
104
		if(photoH > (fenetreH - reduction) || photoW > (fenetreW - reduction)) {
85
			
105
			
86
			if(photoH >= (fenetreH - reduction)) {				
106
			if(photoH >= (fenetreH - reduction)) {				
87
				rapport = photoW/photoH;
107
				rapport = photoW/photoH;
88
				photoH = fenetreH-reduction;
108
				photoH = fenetreH-reduction;
89
				photoW = photoH*rapport;
109
				photoW = photoH*rapport;
90
			} 
110
			} 
91
			
111
			
92
			if(photoW >= (fenetreW - reduction)) {
112
			if(photoW >= (fenetreW - reduction)) {
93
				rapport = photoH/photoW;
113
				rapport = photoH/photoW;
94
				photoW = fenetreW-reduction;
114
				photoW = fenetreW-reduction;
95
				photoH = photoW*rapport;
115
				photoH = photoW*rapport;
96
			}
116
			}
97
		}
117
		}
98
		
118
		
99
		setWidth(photoW+"px");
119
		setWidth(photoW+"px");
100
		setHeight(photoH+"px");
120
		setHeight(photoH+"px");
101
	}
121
	}
102
}
122
}