1,40 → 1,48 |
package org.tela_botanica.del.client.vues.rechercheimages; |
|
import java.util.ArrayList; |
import java.util.Iterator; |
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.pagination.PaginationPresenteur; |
import org.tela_botanica.del.client.utils.KeyboardKeyListener; |
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.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.Panel; |
|
public class ImageRecherchePresenteur { |
public class RechercheImagePresenteur { |
|
private final MockDatasource observationService = MockDatasource.getInstance(); |
private final ImageRechercheVue vue = new ImageRechercheVue(); |
private static ImageRecherchePresenteur instance; |
private List<ImagePresenteur> observationPresenteurs = new ArrayList<ImagePresenteur>(); |
private final MockDatasource dataSource = MockDatasource.getInstance(); |
private final RechercheImageVue vue = new RechercheImageVue(); |
private String protocoleParDefaut = Protocole.IDENTIFICATION_AUTOMATIQUE; |
private List<Protocole> protocoles; |
|
public ImageRecherchePresenteur() { |
instance = this; |
public RechercheImagePresenteur() { |
|
if (CacheClient.getInstance().getProtocoleCourant() == null) { |
CacheClient.getInstance().setProtocoleCourant(dataSource.getProtocole(protocoleParDefaut)); |
} |
} |
|
public void go(HasWidgets composite) { |
composite.add(vue); |
gererEvenements(); |
chargerProtocoles(); |
} |
|
if (CacheClient.getInstance().getImages() != null) { |
chargerObservations(); |
private void chargerProtocoles() { |
protocoles = dataSource.getProtocoles(); |
for (Protocole protocole : protocoles) { |
vue.getListeProtocoles().addItem(protocole.getNom()); |
} |
vue.getListeProtocoles().setSelectedIndex(protocoles.indexOf(CacheClient.getInstance().getProtocoleCourant())); |
} |
|
@SuppressWarnings("deprecation") |
44,7 → 52,7 |
|
@Override |
public void onClick(ClickEvent event) { |
getImages(); |
chargerImages(); |
} |
}); |
|
53,71 → 61,28 |
|
@Override |
public void onEnterKeyUp() { |
getImages(); |
chargerImages(); |
} |
}); |
} |
|
private void getImages() { |
List<Image> imagesFromDatabase = observationService.getImages(); |
EvenementRechercheImage evenementRechercheImage = new EvenementRechercheImage(imagesFromDatabase); |
BusEvenementiel.getInstance().fireEvent(evenementRechercheImage); |
} |
vue.getListeProtocoles().addChangeHandler(new ChangeHandler() { |
|
private void chargerObservations() { |
|
// Remise à zéro du panneau d'affichage et des composants |
vue.nettoyer(); |
|
// TODO : créer une méthode globale pour l'application ? voir |
// superclasse présenteur ? |
// FIXME : ne s'affiche pas |
vue.startChargement(); |
vue.creerPanneauxObservation(CacheClient.getInstance().getImages()); |
|
Iterator<Panel> panelIterator = vue.getPanneauxImages().iterator(); |
for (Image image : CacheClient.getInstance().getImages()) { |
Panel imagePanel = panelIterator.next(); |
ImagePresenteur observationPresenteur = new ImagePresenteur(image); |
observationPresenteur.go(imagePanel); |
observationPresenteurs.add(observationPresenteur); |
} |
|
vue.afficherPanneauxImage(0, vue.getNbImagesPerPage()); |
createPaginationWidget(CacheClient.getInstance().getImages().size()); |
|
vue.stopChargement(); |
|
} |
|
public void fermerTousPanneauxDetailsObservations() { |
for (ImagePresenteur observationPresenteur : observationPresenteurs) { |
if (observationPresenteur.isDetailsOpen()) { |
observationPresenteur.cacherDetails(); |
} |
} |
} |
|
private void createPaginationWidget(int nbImages) { |
|
new PaginationPresenteur(nbImages) { |
|
@Override |
public void changerPage(int debut, int fin) { |
ImageRecherchePresenteur.getInstance().showImagePanels(debut, fin); |
public void onChange(ChangeEvent event) { |
Protocole protocoleCourant = protocoles.get(vue.getListeProtocoles().getSelectedIndex()); |
EvenementChangementProtocole evenement = new EvenementChangementProtocole(protocoleCourant); |
BusEvenementiel.getInstance().fireEvent(evenement); |
} |
}.go(vue.getPanneauPagination()); |
}); |
} |
|
public void showImagePanels(int first, int last) { |
vue.afficherPanneauxImage(first, last); |
private void chargerImages() { |
List<Image> imagesFromDatabase = dataSource.getImages(); |
EvenementRechercheImage evenementRechercheImage = new EvenementRechercheImage(imagesFromDatabase); |
BusEvenementiel.getInstance().fireEvent(evenementRechercheImage); |
} |
|
public static ImageRecherchePresenteur getInstance() { |
return instance; |
} |
|
public ImageRechercheVue getView() { |
public RechercheImageVue getVue() { |
return vue; |
} |
|