Subversion Repositories eFlore/Applications.del

Rev

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

package org.tela_botanica.del.client.vues.rechercheimages;

import java.util.List;

import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementRechercheImage;
import org.tela_botanica.del.client.utils.MockDatasource;

import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.user.client.ui.HasWidgets;

public class RechercheImagePresenteur {

        private final MockDatasource dataSource = MockDatasource.getInstance();
        private final RechercheImageVue vue = new RechercheImageVue();
        private String protocoleParDefaut = Protocole.IDENTIFICATION_AUTOMATIQUE;
        private List<Protocole> protocoles;

        public RechercheImagePresenteur() {

                if (CacheClient.getInstance().getProtocoleCourant() == null) {
                        CacheClient.getInstance().setProtocoleCourant(dataSource.getProtocole(protocoleParDefaut));
                }
        }

        public void go(HasWidgets composite) {
                composite.add(vue);
                gererEvenements();
                chargerProtocoles();
        }

        private void chargerProtocoles() {
                protocoles = dataSource.getProtocoles();
                for (Protocole protocole : protocoles) {
                        vue.getListeProtocoles().addItem(protocole.getNom());
                }
                vue.getListeProtocoles().setSelectedIndex(protocoles.indexOf(CacheClient.getInstance().getProtocoleCourant()));
        }

        public void gererEvenements() {

                vue.getBoutonChercher().addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent event) {
                                chargerImages();
                        }
                });

                vue.getTextBox().addKeyPressHandler(new KeyPressHandler() {

                        public void onKeyPress(KeyPressEvent event) {
                                if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
                                        chargerImages();
                                }
                        }
                });

                vue.getListeProtocoles().addChangeHandler(new ChangeHandler() {

                        @Override
                        public void onChange(ChangeEvent event) {
                                Protocole protocoleCourant = protocoles.get(vue.getListeProtocoles().getSelectedIndex());
                                EvenementChangementProtocole evenement = new EvenementChangementProtocole(protocoleCourant);
                                BusEvenementiel.getInstance().fireEvent(evenement);
                        }
                });
        }

        private void chargerImages() {
                List<Image> imagesFromDatabase = dataSource.getImages();
                EvenementRechercheImage evenementRechercheImage = new EvenementRechercheImage(imagesFromDatabase);
                BusEvenementiel.getInstance().fireEvent(evenementRechercheImage);
        }

        public RechercheImageVue getVue() {
                return vue;
        }

}