Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 25 → Rev 26

/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationRechercheVue.java
16,39 → 16,19
public class ObservationRechercheVue extends Composite {
 
private final VerticalPanel mainPanel = new VerticalPanel();
 
private final Panel loadPanel = new FlowPanel();
 
private final Panel panneauChargement = new FlowPanel();
private final Panel taxaPanel = new FlowPanel();
 
private final FlexTable imageTable = new FlexTable();
 
private final Panel paginationPanel = new HorizontalPanel();
 
private final List<Panel> imagePanels = new ArrayList<Panel>();
 
private final HTML contactingServerHTML = new HTML(
"<img src='img/wait.gif' />Contact du serveur du CEL...");
 
private final HTML searchHtml = new HTML(
"<img src='img/search_icon.gif' />Search &nbsp;&nbsp; taxon:");
 
private final Panel panneauPagination = new HorizontalPanel();
private final List<Panel> panneauxImages = new ArrayList<Panel>();
private final HTML labelChargement = new HTML("<img src='img/wait.gif' />Contact du serveur du CEL...");
private final HTML labelChercher = new HTML("<img src='img/search_icon.gif' />Search &nbsp;&nbsp; taxon:");
private int nbCol = 5;
 
private final int nbImagesPerPage = 10;
 
private int numImage = 0;
 
public Panel getPanel() {
return mainPanel;
}
 
private final TextBox textBox = new TextBox();
 
public TextBox getTextBox() {
return textBox;
}
 
// Constructeur
protected ObservationRechercheVue() {
 
textBox.setText("apifera");
58,39 → 38,50
mainPanel.setSize("100%", "100%");
 
Panel textBoxPanel = new HorizontalPanel();
textBoxPanel.add(searchHtml);
textBoxPanel.add(labelChercher);
textBoxPanel.add(textBox);
 
Panel searchPanel = new VerticalPanel();
searchPanel.add(new HTML("Rechercher une image"));
searchPanel.add(textBoxPanel);
searchPanel
.add(new HTML(
"Entrez un nom de genre ou d'esp&egrave;ce, un nom de commune, un num&eacute;ro de departement, l'email d'un utilisateur ou un mot-clef"));
searchPanel.add(loadPanel);
searchPanel.add(new HTML("Entrez un nom de genre ou d'esp&egrave;ce, un nom de commune, un num&eacute;ro de departement, l'email d'un utilisateur ou un mot-clef"));
 
panneauChargement.add(labelChargement);
panneauChargement.setVisible(false);
 
mainPanel.add(panneauChargement);
 
taxaPanel.add(imageTable);
 
mainPanel.add(searchPanel);
mainPanel.add(paginationPanel);
mainPanel.add(panneauPagination);
mainPanel.add(taxaPanel);
 
initWidget(mainPanel);
}
 
/**
* Nettoie et remet à zéro les composants du panneau qui doivent l'être
* */
protected void nettoyer() {
panneauPagination.clear();
setNumImage(0);
imageTable.clear();
panneauxImages.clear();
}
 
protected void addImagePanel(Panel imagePanel) {
this.imagePanels.add(imagePanel);
this.panneauxImages.add(imagePanel);
}
 
protected void showImagePanels(int first, int last) {
protected void afficherPanneauxImage(int first, int last) {
imageTable.clear();
 
int positionImage = 0;
for (int numImage = first; numImage < last; numImage++) {
try {
Panel panel = imagePanels.get(numImage);
imageTable.setWidget((positionImage) / nbCol, (positionImage)
% nbCol, panel);
Panel panel = panneauxImages.get(numImage);
imageTable.setWidget((positionImage) / nbCol, (positionImage) % nbCol, panel);
} catch (Exception e) {
break;
}
99,6 → 90,18
}
}
 
public void setNumImage(int numImage) {
this.numImage = numImage;
}
 
protected void startChargement() {
panneauChargement.setVisible(true);
}
 
protected void stopChargement() {
// panneauChargement.setVisible(false);
}
 
public FlexTable getImageTable() {
return imageTable;
}
107,32 → 110,28
return numImage;
}
 
public void setNumImage(int numImage) {
this.numImage = numImage;
public Panel getPanneauChargement() {
return panneauChargement;
}
 
public Panel getLoadPanel() {
return loadPanel;
public HTML getLabelChercher() {
return labelChercher;
}
 
public HTML getSearchHtml() {
return searchHtml;
public Panel getPanneauPagination() {
return panneauPagination;
}
 
public Panel getPaginationPanel() {
return paginationPanel;
}
 
public int getNbImagesPerPage() {
return nbImagesPerPage;
}
 
public List<Panel> getImagePanels() {
return imagePanels;
public TextBox getTextBox() {
return textBox;
}
 
public HTML getContactingServerHTML() {
return contactingServerHTML;
public Panel getPanel() {
return mainPanel;
}
 
}
/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationRecherchePresenteur.java
17,13 → 17,9
 
public class ObservationRecherchePresenteur {
 
private final MockDatasource observationService = MockDatasource
.getInstance();
 
private final ObservationRechercheVue view = new ObservationRechercheVue();
 
private final MockDatasource observationService = MockDatasource.getInstance();
private final ObservationRechercheVue vue = new ObservationRechercheVue();
private static ObservationRecherchePresenteur instance;
 
private List<Observation> observations;
 
public ObservationRecherchePresenteur() {
31,51 → 27,53
}
 
public void go(HasWidgets composite) {
composite.add(view);
handleEvents();
composite.add(vue);
gererEvenements();
}
 
@SuppressWarnings("deprecation")
public void handleEvents() {
view.getSearchHtml().addClickHandler(new ClickHandler() {
public void gererEvenements() {
 
vue.getLabelChercher().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
loadObservations();
vue.startChargement();
chargerObservations();
}
});
 
view.getTextBox().addKeyboardListener(new KeyboardKeyListener() {
// TODO : remplacer par KeyUp, KeyDown ... etc.
vue.getTextBox().addKeyboardListener(new KeyboardKeyListener() {
 
@Override
public void onEnterKeyUp() {
loadObservations();
chargerObservations();
}
});
 
}
 
private void loadObservations() {
private void chargerObservations() {
 
view.getPaginationPanel().clear();
view.setNumImage(0);
view.getImageTable().clear();
view.getLoadPanel().add(view.getContactingServerHTML());
observations = observationService.getObservations();
 
// String taxaName = URL.encode(view.getTextBox().getText());
// Remise à zéro du panneau d'affichage et des composants
vue.nettoyer();
 
observations = observationService.getObservations();
// TODO : créer une méthode globale pour l'application ? voir
// superclasse présenteur ?
 
view.getImagePanels().clear();
 
// TODO : déplacer dans la vue
List<Panel> imagePanels = new ArrayList<Panel>();
for (int i = 0; i < observations.size(); i++) {
Panel imagePanel = new VerticalPanel();
imagePanels.add(imagePanel);
view.addImagePanel(imagePanel);
vue.addImagePanel(imagePanel);
}
 
view.showImagePanels(0, view.getNbImagesPerPage());
vue.afficherPanneauxImage(0, vue.getNbImagesPerPage());
 
Iterator<Panel> panelIterator = imagePanels.iterator();
for (Observation observation : observations) {
Panel imagePanel = panelIterator.next();
84,23 → 82,23
 
createPaginationWidget(observations.size());
 
view.getLoadPanel().clear();
vue.stopChargement();
 
}
 
private void createPaginationWidget(int nbImages) {
 
int nbPages = nbImages / view.getNbImagesPerPage();
if (nbImages % view.getNbImagesPerPage() == 0) {
int nbPages = nbImages / vue.getNbImagesPerPage();
if (nbImages % vue.getNbImagesPerPage() == 0) {
nbPages--;
}
for (int i = 0; i <= nbPages; i++) {
new NumeroPagePresenteur(i + 1).go(view.getPaginationPanel());
new NumeroPagePresenteur(i + 1).go(vue.getPanneauPagination());
}
}
 
public void showImagePanels(int first, int last) {
view.showImagePanels(first, last);
vue.afficherPanneauxImage(first, last);
}
 
public static ObservationRecherchePresenteur getInstance() {
108,7 → 106,7
}
 
public ObservationRechercheVue getView() {
return view;
return vue;
}
 
public List<Observation> getObservations() {