Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues.observation;

import java.util.List;

import org.tela_botanica.client.evenements.observation.ListeObservationRecueEvenement;
import org.tela_botanica.client.evenements.observation.ListeObservationRecueEvenementHandler;
import org.tela_botanica.client.evenements.observation.ObservationBusEvenement;
import org.tela_botanica.client.modeles.observation.Observation;

import com.google.gwt.cell.client.Cell;
import com.google.gwt.cell.client.ImageCell;
import com.google.gwt.cell.client.ImageResourceCell;
import com.google.gwt.cell.client.TextCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.view.client.DefaultSelectionEventManager;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.MultiSelectionModel;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.SelectionModel;

public class ListeObservation extends CellTable<Observation> {
        
    /**
     * Keyprovider pour l'id d'un observation
     */
    public static final ProvidesKey<Observation> KEY_PROVIDER = new ProvidesKey<Observation>() {
      public Object getKey(Observation item) {
        return item == null ? null : item.getNumeroOrdre();
      }
    };
    
    /**
     * Structure contenant la liste des observation
     */
    private ListDataProvider<Observation> dataProvider = new ListDataProvider<Observation>();

        
        public ListeObservation() {
                                
                super(KEY_PROVIDER);
                
                ObservationBusEvenement.get().addHandler(ListeObservationRecueEvenement.TYPE, 
                                new ListeObservationRecueEvenementHandler() {

                                        @Override
                                        public void onReceptionListeObservation(
                                                                ListeObservationRecueEvenement listeObservationRecueEvenement) {

                                                remplirListeObservation(listeObservationRecueEvenement.getListeObservationRecue());
                                                
                                        }
                        
                });
                
            setWidth("100%", true);

            // gestion du tri
            ListHandler<Observation> sortHandler = new ListHandler<Observation>(
                        dataProvider.getList());
            addColumnSortHandler(sortHandler);
            
            final SelectionModel<Observation> selectionModel = new MultiSelectionModel<Observation>(
                        KEY_PROVIDER);
            
            setSelectionModel(selectionModel,
                    DefaultSelectionEventManager.<Observation> createCheckboxManager());
            
            dataProvider.addDataDisplay(this);
               
            initTableColumns(selectionModel, sortHandler);
        }
        
        /**
           * Add the columns to the table.
        */
        private void initTableColumns( final SelectionModel<Observation> selectionModel,
            ListHandler<Observation> sortHandler) {
            
                Column<Observation, String> transmis = new Column<Observation, String>(new ImageCell()) {
                    @Override
                    public String getValue(Observation obs) {
                                String affichage = "vide.png";  

                                if(obs.getTransmis().equals("true")) {
                                        return "tela.png";
                                }
                            return affichage;
                    }
                  };
                
                addColumn(transmis, "Transmis");
                setColumnWidth(transmis, 25, Unit.PCT);
                
                Column<Observation, String> nomSaisi = new Column<Observation, String>(
                    new TextCell()) {

                  public String getValue(Observation obs) {
                    return obs.getNomSaisi();
                  }
                };
                
                addColumn(nomSaisi, "Nom saisi");
                setColumnWidth(nomSaisi, 80, Unit.PCT);
                
                Column<Observation, String> nomRetenu = new Column<Observation, String>(
                    new TextCell()) {

                  public String getValue(Observation obs) {
                    return obs.getNomRetenu();
                  }
                };
                
                addColumn(nomRetenu, "Nom retenu");
                setColumnWidth(nomRetenu, 80, Unit.PCT);

                Column<Observation, String> lieu = new Column<Observation, String>(
                    new TextCell()) {

                  public String getValue(Observation obs) {
                    return obs.getLocalite();
                  }
                };
                
                addColumn(lieu, "Lieu");
                setColumnWidth(lieu, 60, Unit.PCT);

                Column<Observation, String> date = new Column<Observation, String>(
                    new TextCell()) {

                  public String getValue(Observation obs) {
                    return obs.getDate();
                  }
                };
                
                addColumn(date, "Date");
                setColumnWidth(date, 60, Unit.PCT);
                
                // First name.
                Column<Observation, String> ordre = new Column<Observation, String>(
                    new TextCell()) {

                  public String getValue(Observation obs) {
                    return obs.getNumeroOrdre();
                  }
                };
                
                addColumn(ordre, "Ordre");
                setColumnWidth(ordre, 20, Unit.PCT);
        }
        
        private void remplirListeObservation(Observation[] observationsRecues) {
                
                int tailleListeObsRecue = observationsRecues.length; 
                dataProvider.getList().clear();
                for(int i = 0; i < tailleListeObsRecue; i++) {
                        dataProvider.getList().add(observationsRecues[i]);
                }
                
                dataProvider.refresh();
        }
}