New file |
0,0 → 1,137 |
package org.tela_botanica.client.vues; |
|
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.observation.ObservationMediateur; |
|
import com.google.gwt.user.client.DOM; |
import com.google.gwt.user.client.Event; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.Image; |
import com.gwtext.client.widgets.Panel; |
import com.gwtext.client.widgets.Window.CloseAction; |
|
/** |
* Un panneau affichant une image generique provenant d eflore |
* |
* @author David Delon |
* |
*/ |
public class ImageGeneriqueVue extends Panel implements Rafraichissable { |
|
/** |
* Le médiateur associé |
*/ |
|
private ObservationMediateur observationMediateur = null; |
|
|
/** |
* l'image à afficher |
*/ |
private Image image = new Image(); |
|
private String urlImage = "" ; |
|
private com.gwtext.client.widgets.Window imgZoom = new com.gwtext.client.widgets.Window("Agrandissement") ; |
|
|
/** |
* Constructeur sans argument (privé car ne doit pas être utilisé) |
*/ |
|
@SuppressWarnings("unused") |
private ImageGeneriqueVue() { |
super(); |
} |
|
/** |
* Constructeur avec argument |
* @param obs le médiateur à associer |
*/ |
|
|
public ImageGeneriqueVue(ObservationMediateur obs) { |
|
|
this.observationMediateur = obs; |
imgZoom.setCloseAction(com.gwtext.client.widgets.Window.HIDE) ; |
image = new Image() { |
|
public void onBrowserEvent(Event event) { |
|
// lors du double clic |
if (Event.ONDBLCLICK == DOM.eventGetType(event)) { |
|
// on notifie le médiateur |
agrandirImage() ; |
} |
} |
|
}; |
|
|
this.setCls("x-image-gen") ; |
image.setPixelSize(150, 150); |
add(image); |
|
image.sinkEvents(Event.ONDBLCLICK); |
|
// on ajoute les listeners |
ajouterListeners(); |
|
} |
|
|
/** |
* Affichage image generique |
* |
*/ |
|
public void rafraichir(Object nouvelleDonnees,boolean repandreRaffraichissement) { |
|
// si on recoit une String contenant une URL |
if (nouvelleDonnees instanceof String) { |
|
urlImage=(String) nouvelleDonnees; |
|
if (urlImage.length()==0) { |
raz() ; |
} |
else { |
image.setUrl(urlImage); |
} |
} |
|
observationMediateur.deMasquerChargementInfosObservations() ; |
|
} |
|
public void agrandirImage() { |
|
if(!imgZoom.isVisible()) |
{ |
String urlAgrandie = urlImage.replace("min", "max") ; |
imgZoom.setHtml("<img src=\""+urlAgrandie+"\" />") ; |
imgZoom.setPagePosition( Window.getClientWidth()/2, Window.getClientHeight()/5) ; |
imgZoom.setAutoHeight(true) ; |
imgZoom.setAutoWidth(true) ; |
imgZoom.show(this.getElement()) ; |
} |
|
|
} |
|
|
/** |
* Ajoute les listeners pour la gestions d'évènement |
*/ |
public void ajouterListeners() { |
|
} |
|
public void raz() { |
image.setUrl(""); |
} |
|
|
} |