Subversion Repositories eFlore/Applications.cel

Rev

Rev 97 | Blame | Last modification | View Log | RSS feed

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.HTML;
import com.google.gwt.user.client.ui.Image;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.ToolTip;
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") ;
        
        private ToolTip tp = new ToolTip("<div class=\"x-tooltip-help\"> Double cliquez pour agrandir l'image </div>") ;
        
        /**
         * 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() ;
                                }
                        }
                        
                };
                
                tp.applyTo(image.getElement()) ;
                
                
                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("");
        }
        

}