/src/org/tela_botanica/del/client/vues/rechercheobservations/detail/ObservationDetailPresenteur.java |
---|
New file |
0,0 → 1,22 |
package org.tela_botanica.del.client.vues.rechercheobservations.detail; |
import org.tela_botanica.del.client.modeles.Observation; |
import com.google.gwt.user.client.ui.HasWidgets; |
public class ObservationDetailPresenteur { |
private ObservationDetailVue view = new ObservationDetailVue(); |
private Observation observation; |
public ObservationDetailPresenteur(Observation imageCel) { |
this.observation = imageCel; |
} |
public void go(HasWidgets container) { |
view.loadDetails(observation); |
container.add(view); |
} |
} |
/src/org/tela_botanica/del/client/vues/rechercheobservations/detail/ObservationDetailVue.java |
---|
New file |
0,0 → 1,30 |
package org.tela_botanica.del.client.vues.rechercheobservations.detail; |
import org.tela_botanica.del.client.modeles.Observation; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.HTML; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.VerticalPanel; |
public class ObservationDetailVue extends Composite { |
private final Panel mainPanel = new VerticalPanel(); |
protected ObservationDetailVue() { |
initWidget(mainPanel); |
} |
protected void loadDetails(Observation observation) { |
mainPanel.add(new HTML("Observateur:" + observation.getAuteur())); |
mainPanel.add(new HTML("Nom retenu:" + observation.getNameKept())); |
mainPanel.add(new HTML("Date: " + observation.getDate())); |
mainPanel.add(new HTML("Famille: " + observation.getFamille())); |
mainPanel.add(new HTML("Localite " + observation.getLocalite())); |
} |
public Panel getMainPanel() { |
return mainPanel; |
} |
} |
/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationRechercheVue.java |
---|
New file |
0,0 → 1,138 |
package org.tela_botanica.del.client.vues.rechercheobservations; |
import java.util.ArrayList; |
import java.util.List; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.FlexTable; |
import com.google.gwt.user.client.ui.FlowPanel; |
import com.google.gwt.user.client.ui.HTML; |
import com.google.gwt.user.client.ui.HasHorizontalAlignment; |
import com.google.gwt.user.client.ui.HorizontalPanel; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.TextBox; |
import com.google.gwt.user.client.ui.VerticalPanel; |
public class ObservationRechercheVue extends Composite { |
private final VerticalPanel mainPanel = new VerticalPanel(); |
private final Panel loadPanel = 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 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; |
} |
protected ObservationRechercheVue() { |
textBox.setText("apifera"); |
textBox.setFocus(true); |
mainPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); |
mainPanel.setSize("100%", "100%"); |
Panel textBoxPanel = new HorizontalPanel(); |
textBoxPanel.add(searchHtml); |
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èce, un nom de commune, un numéro de departement, l'email d'un utilisateur ou un mot-clef")); |
searchPanel.add(loadPanel); |
taxaPanel.add(imageTable); |
mainPanel.add(searchPanel); |
mainPanel.add(paginationPanel); |
mainPanel.add(taxaPanel); |
initWidget(mainPanel); |
} |
protected void addImagePanel(Panel imagePanel) { |
this.imagePanels.add(imagePanel); |
} |
protected void showImagePanels(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); |
} catch (Exception e) { |
break; |
} |
positionImage++; |
} |
} |
public FlexTable getImageTable() { |
return imageTable; |
} |
public int getNumImage() { |
return numImage; |
} |
public void setNumImage(int numImage) { |
this.numImage = numImage; |
} |
public Panel getLoadPanel() { |
return loadPanel; |
} |
public HTML getSearchHtml() { |
return searchHtml; |
} |
public Panel getPaginationPanel() { |
return paginationPanel; |
} |
public int getNbImagesPerPage() { |
return nbImagesPerPage; |
} |
public List<Panel> getImagePanels() { |
return imagePanels; |
} |
public HTML getContactingServerHTML() { |
return contactingServerHTML; |
} |
} |
/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationPresenteur.java |
---|
New file |
0,0 → 1,78 |
package org.tela_botanica.del.client.vues.rechercheobservations; |
import java.util.List; |
import org.tela_botanica.del.client.modeles.Observation; |
import org.tela_botanica.del.client.modeles.ObservationValidation; |
import org.tela_botanica.del.client.navigation.event.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.event.validationobservation.EvenementValidation; |
import org.tela_botanica.del.client.utils.MockDatasource; |
import org.tela_botanica.del.client.vues.rechercheobservations.detail.ObservationDetailPresenteur; |
import org.tela_botanica.del.client.vues.rechercheobservations.vote.MoyenneVotePresenteur; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.user.client.ui.HasWidgets; |
public class ObservationPresenteur { |
private final MockDatasource validationService = MockDatasource.getInstance(); |
private ObservationVue view = new ObservationVue(); |
private final Observation observation; |
private boolean detailsOpen = false; |
public ObservationPresenteur(Observation observation) { |
this.observation = observation; |
} |
public void go(HasWidgets composite) { |
composite.add(view); |
view.loadImage(observation); |
loadValidationData(); |
handleEvents(); |
} |
private void loadValidationData() { |
List<ObservationValidation> observationValidationDatas = validationService |
.getValidationData(observation.getIdImage()); |
observation.setImageCelValidationDatas(observationValidationDatas); |
new MoyenneVotePresenteur(observationValidationDatas).go(view |
.getRatePanel()); |
view.showValidationData(observationValidationDatas); |
} |
private void handleEvents() { |
view.getMoreDetailsHtml().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
if (detailsOpen) { |
view.clearDetails(); |
} else { |
new ObservationDetailPresenteur(observation).go(view |
.getDetailsPanel()); |
view.getMoreDetailsHtml().setHTML( |
"<img src='img/icon_minus.png' />"); |
} |
detailsOpen = !detailsOpen; |
} |
}); |
view.getProposeValidationDataHtml().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
BusEvenementiel.getInstance().fireEvent( |
new EvenementValidation(observation)); |
} |
}); |
} |
} |
/src/org/tela_botanica/del/client/vues/rechercheobservations/pagination/NumeroPagePresenteur.java |
---|
New file |
0,0 → 1,51 |
package org.tela_botanica.del.client.vues.rechercheobservations.pagination; |
import org.tela_botanica.del.client.vues.rechercheobservations.ObservationRecherchePresenteur; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.user.client.ui.HasWidgets; |
public class NumeroPagePresenteur { |
private final NumeroPageVue view; |
private int nbPage = 1; |
public NumeroPagePresenteur(int nbPage) { |
this.nbPage = nbPage; |
view = new NumeroPageVue(nbPage); |
} |
public void go(HasWidgets container) { |
container.add(view); |
handleEvents(); |
} |
public void handleEvents() { |
view.getNbPageHtml().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
int firstImage; |
int lastImage; |
int nbImagePerPage = ObservationRecherchePresenteur.getInstance() |
.getView().getNbImagesPerPage(); |
if (nbPage == 1) { |
firstImage = 0; |
} else { |
firstImage = ((nbPage - 1) * nbImagePerPage); |
} |
lastImage = (nbPage - 1) * nbImagePerPage + nbImagePerPage; |
ObservationRecherchePresenteur.getInstance().showImagePanels(firstImage, |
lastImage); |
} |
}); |
} |
} |
/src/org/tela_botanica/del/client/vues/rechercheobservations/pagination/NumeroPageVue.java |
---|
New file |
0,0 → 1,21 |
package org.tela_botanica.del.client.vues.rechercheobservations.pagination; |
import org.tela_botanica.del.client.history.ConstantesNavigation; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.HTML; |
public class NumeroPageVue extends Composite { |
private final HTML nbPageHtml = new HTML(); |
public NumeroPageVue(int nbPage) { |
nbPageHtml.setHTML("<h2><a href='#"+ConstantesNavigation.SEARCH_IMAGES_PAGE+"'>" + nbPage + " </a></h2>"); |
initWidget(nbPageHtml); |
} |
public HTML getNbPageHtml() { |
return nbPageHtml; |
} |
} |
/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationVue.java |
---|
New file |
0,0 → 1,93 |
package org.tela_botanica.del.client.vues.rechercheobservations; |
import java.util.List; |
import org.tela_botanica.del.client.modeles.Observation; |
import org.tela_botanica.del.client.modeles.ObservationValidation; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.HTML; |
import com.google.gwt.user.client.ui.HorizontalPanel; |
import com.google.gwt.user.client.ui.Image; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.VerticalPanel; |
public class ObservationVue extends Composite { |
private final Panel flowPanel = new VerticalPanel(); |
private final Panel detailsPanel = new VerticalPanel(); |
private final HTML moreDetailsHtml = new HTML( |
"<img src='img/icon_plus.gif' alig='center'>"); |
private final Image waitImage = new Image("img/wait.gif"); |
private final HTML proposeValidationDataHtml = new HTML( |
"<a>Cliquez ici pour proposer votre validation</a>"); |
private final HTML noValidationDataHtml = new HTML( |
"Pas de validation actuellement."); |
private final Panel ratePanel = new HorizontalPanel(); |
protected ObservationVue() { |
flowPanel.add(waitImage); |
initWidget(flowPanel); |
} |
protected void loadImage(Observation observation) { |
flowPanel.clear(); |
flowPanel.add(new HTML(observation.getSpecies())); |
flowPanel.add(new HTML(observation.getAuteur())); |
flowPanel.add(new HTML( |
"<a href='http://www.tela-botanica.org/eflore/BDNFF/4.02/nn/" |
+ observation.getNumNomenclatural() |
+ "' target='_blank'><img src='" + observation.getUrl() |
+ "' /img></a>")); |
flowPanel.add(moreDetailsHtml); |
flowPanel.add(detailsPanel); |
flowPanel.add(ratePanel); |
} |
protected void showValidationData( |
List<ObservationValidation> validationDatas) { |
if (validationDatas == null || validationDatas.size() == 0) { |
flowPanel.add(noValidationDataHtml); |
} |
flowPanel.add(proposeValidationDataHtml); |
} |
protected void clearDetails() { |
detailsPanel.clear(); |
moreDetailsHtml.setHTML("<img src='img/icon_plus.gif' >"); |
} |
public Panel getFlowPanel() { |
return flowPanel; |
} |
public Panel getDetailsPanel() { |
return detailsPanel; |
} |
public HTML getMoreDetailsHtml() { |
return moreDetailsHtml; |
} |
public HTML getNoValidationDataHtml() { |
return noValidationDataHtml; |
} |
public HTML getProposeValidationDataHtml() { |
return proposeValidationDataHtml; |
} |
public Panel getRatePanel() { |
return ratePanel; |
} |
} |
/src/org/tela_botanica/del/client/vues/rechercheobservations/vote/DetailVotePresenteur.java |
---|
New file |
0,0 → 1,20 |
package org.tela_botanica.del.client.vues.rechercheobservations.vote; |
import java.util.List; |
import org.tela_botanica.del.client.modeles.ObservationValidation; |
import com.google.gwt.user.client.ui.HasWidgets; |
public class DetailVotePresenteur { |
private DetailVoteVue view; |
public DetailVotePresenteur(List<ObservationValidation> validationDatas) { |
view = new DetailVoteVue(validationDatas); |
} |
public void go(HasWidgets container) { |
container.add(view); |
} |
} |
/src/org/tela_botanica/del/client/vues/rechercheobservations/vote/DetailVoteVue.java |
---|
New file |
0,0 → 1,28 |
package org.tela_botanica.del.client.vues.rechercheobservations.vote; |
import java.util.List; |
import org.tela_botanica.del.client.modeles.ObservationValidation; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.HTML; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.VerticalPanel; |
public class DetailVoteVue extends Composite { |
private Panel mainPanel = new VerticalPanel(); |
protected DetailVoteVue(List<ObservationValidation> validationDatas) { |
for (ObservationValidation imageCelValidationData : validationDatas) { |
mainPanel.add(new HTML("Vote " + imageCelValidationData.getVote() |
+ " par " + imageCelValidationData.getContributor())); |
} |
initWidget(mainPanel); |
} |
} |
/src/org/tela_botanica/del/client/vues/rechercheobservations/vote/MoyenneVotePresenteur.java |
---|
New file |
0,0 → 1,20 |
package org.tela_botanica.del.client.vues.rechercheobservations.vote; |
import java.util.List; |
import org.tela_botanica.del.client.modeles.ObservationValidation; |
import com.google.gwt.user.client.ui.HasWidgets; |
public class MoyenneVotePresenteur { |
private MoyenneVoteVue view; |
public MoyenneVotePresenteur(List<ObservationValidation> validationDatas) { |
view = new MoyenneVoteVue(validationDatas); |
} |
public void go(HasWidgets container) { |
container.add(view); |
} |
} |
/src/org/tela_botanica/del/client/vues/rechercheobservations/vote/MoyenneVoteVue.java |
---|
New file |
0,0 → 1,44 |
package org.tela_botanica.del.client.vues.rechercheobservations.vote; |
import java.util.List; |
import org.cobogw.gwt.user.client.ui.Rating; |
import org.tela_botanica.del.client.modeles.ObservationValidation; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.HTML; |
import com.google.gwt.user.client.ui.HorizontalPanel; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.VerticalPanel; |
public class MoyenneVoteVue extends Composite { |
private Panel mainPanel = new VerticalPanel(); |
protected MoyenneVoteVue(List<ObservationValidation> validationDatas) { |
int meanVote = 0; |
int nbVote = 0; |
for (ObservationValidation imageCelValidationData : validationDatas) { |
meanVote += imageCelValidationData.getVote(); |
nbVote++; |
} |
if (nbVote > 0) |
meanVote /= nbVote; |
Panel ratePanel = new HorizontalPanel(); |
Rating rating = new Rating(meanVote, 5); |
rating.setReadOnly(true); |
ratePanel.add(new HTML("Moyenne: ")); |
ratePanel.add(rating); |
ratePanel.add(new HTML(" Nb votes: " |
+ validationDatas.size())); |
mainPanel.add(ratePanel); |
initWidget(mainPanel); |
} |
} |
/src/org/tela_botanica/del/client/vues/rechercheobservations/ObservationRecherchePresenteur.java |
---|
New file |
0,0 → 1,118 |
package org.tela_botanica.del.client.vues.rechercheobservations; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
import org.tela_botanica.del.client.modeles.Observation; |
import org.tela_botanica.del.client.utils.KeyboardKeyListener; |
import org.tela_botanica.del.client.utils.MockDatasource; |
import org.tela_botanica.del.client.vues.rechercheobservations.pagination.NumeroPagePresenteur; |
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; |
import com.google.gwt.user.client.ui.VerticalPanel; |
public class ObservationRecherchePresenteur { |
private final MockDatasource observationService = MockDatasource |
.getInstance(); |
private final ObservationRechercheVue view = new ObservationRechercheVue(); |
private static ObservationRecherchePresenteur instance; |
private List<Observation> observations; |
public ObservationRecherchePresenteur() { |
instance = this; |
} |
public void go(HasWidgets composite) { |
composite.add(view); |
handleEvents(); |
} |
@SuppressWarnings("deprecation") |
public void handleEvents() { |
view.getSearchHtml().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
loadObservations(); |
} |
}); |
view.getTextBox().addKeyboardListener(new KeyboardKeyListener() { |
@Override |
public void onEnterKeyUp() { |
loadObservations(); |
} |
}); |
} |
private void loadObservations() { |
view.getPaginationPanel().clear(); |
view.setNumImage(0); |
view.getImageTable().clear(); |
view.getLoadPanel().add(view.getContactingServerHTML()); |
// String taxaName = URL.encode(view.getTextBox().getText()); |
observations = observationService.getObservations(); |
view.getImagePanels().clear(); |
List<Panel> imagePanels = new ArrayList<Panel>(); |
for (int i = 0; i < observations.size(); i++) { |
Panel imagePanel = new VerticalPanel(); |
imagePanels.add(imagePanel); |
view.addImagePanel(imagePanel); |
} |
view.showImagePanels(0, view.getNbImagesPerPage()); |
Iterator<Panel> panelIterator = imagePanels.iterator(); |
for (Observation observation : observations) { |
Panel imagePanel = panelIterator.next(); |
new ObservationPresenteur(observation).go(imagePanel); |
} |
createPaginationWidget(observations.size()); |
view.getLoadPanel().clear(); |
} |
private void createPaginationWidget(int nbImages) { |
int nbPages = nbImages / view.getNbImagesPerPage(); |
if (nbImages % view.getNbImagesPerPage() == 0) { |
nbPages--; |
} |
for (int i = 0; i <= nbPages; i++) { |
new NumeroPagePresenteur(i + 1).go(view.getPaginationPanel()); |
} |
} |
public void showImagePanels(int first, int last) { |
view.showImagePanels(first, last); |
} |
public static ObservationRecherchePresenteur getInstance() { |
return instance; |
} |
public ObservationRechercheVue getView() { |
return view; |
} |
public List<Observation> getObservations() { |
return observations; |
} |
} |