Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 147 → Rev 148

/src/org/tela_botanica/del/client/vues/rechercheimages/ImageVue.ui.xml
New file
0,0 → 1,47
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default">
 
<ui:with field='res' type='org.tela_botanica.del.client.Ressources'/>
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<ui:style src="observation.css" />
 
<g:HTMLPanel styleName="{style.observations}">
<g:Image ui:field="imagePrincipale" resource='{res.logo}' />
<g:VerticalPanel styleName="{style.zonePlus}">
<g:Label ui:field="enSavoirPlus" text=" "/>
<g:VerticalPanel styleName="{style.zoneCache}" ui:field="zoneCache">
<g:VerticalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.observateur} : "/>
<g:Label ui:field="nomObservateur">Nom observateur</g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.nom_retenu} : "/>
<g:Label ui:field="nomRetenu">Nom retenu</g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.date_observation} : "/>
<g:Label ui:field="dateObservation">Date observation</g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.famille} : "/>
<g:Label ui:field="famille">Famille</g:Label>
</g:HorizontalPanel>
<g:HorizontalPanel>
<g:Label text="{constants.localite} : "/>
<g:Label ui:field="localite">Localite</g:Label>
</g:HorizontalPanel>
</g:VerticalPanel>
</g:VerticalPanel>
<g:Label ui:field="ajoutValidation" styleName="{style.ajoutValidation}">Ajouter votre validation</g:Label>
</g:VerticalPanel>
<g:HorizontalPanel ui:field="voter"/>
<g:VerticalPanel>
<g:Label ui:field="nomAuteur" styleName="petit">Auteur</g:Label>
<g:Label ui:field="nomEspece" styleName="{style.espece}">Nom</g:Label>
</g:VerticalPanel>
</g:HTMLPanel>
</ui:UiBinder>
/src/org/tela_botanica/del/client/vues/rechercheimages/vote/MoyenneVoteVue.java
New file
0,0 → 1,54
package org.tela_botanica.del.client.vues.rechercheimages.vote;
 
import java.util.List;
 
import org.cobogw.gwt.user.client.ui.Rating;
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FocusPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
 
public class MoyenneVoteVue extends Composite {
 
// Annotation can be used to change the name of the associated xml file
// @UiTemplate("MoyenneVoteVue.ui.xml")
interface MyUiBinder extends UiBinder<Widget, MoyenneVoteVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
private Panel mainPanel = new VerticalPanel();
 
@UiField
FocusPanel voter;
 
@UiField
Label nbVotes;
 
protected MoyenneVoteVue(List<VoteProtocole> validationDatas) {
initWidget(uiBinder.createAndBindUi(this));
 
int meanVote = 0;
int nbVote = 0;
for (VoteProtocole imageCelValidationData : validationDatas) {
 
meanVote += imageCelValidationData.getVote();
nbVote++;
}
if (nbVote > 0)
meanVote /= nbVote;
Rating rating = new Rating(meanVote, 5);
rating.setReadOnly(true);
voter.add(rating);
 
nbVotes.setText(String.valueOf(validationDatas.size()));
 
}
}
/src/org/tela_botanica/del/client/vues/rechercheimages/vote/DetailVotePresenteur.java
New file
0,0 → 1,20
package org.tela_botanica.del.client.vues.rechercheimages.vote;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class DetailVotePresenteur {
 
private DetailVoteVue view;
 
public DetailVotePresenteur(List<VoteProtocole> validationDatas) {
view = new DetailVoteVue(validationDatas);
}
 
public void go(HasWidgets container) {
container.add(view);
}
}
/src/org/tela_botanica/del/client/vues/rechercheimages/vote/DetailVoteVue.java
New file
0,0 → 1,28
package org.tela_botanica.del.client.vues.rechercheimages.vote;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
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<VoteProtocole> validationDatas) {
 
for (VoteProtocole imageCelValidationData : validationDatas) {
 
mainPanel.add(new HTML("Vote " + imageCelValidationData.getVote()
+ " par " + imageCelValidationData.getContributeur()));
}
 
initWidget(mainPanel);
 
}
 
}
/src/org/tela_botanica/del/client/vues/rechercheimages/vote/moyenne.css
New file
0,0 → 1,3
.moyenne {}
.petit {font-size:11px; color:#AAA}
.voter {position:absolute; margin-top:65px; margin-left:20px;}
/src/org/tela_botanica/del/client/vues/rechercheimages/vote/MoyenneVoteVue.ui.xml
New file
0,0 → 1,10
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" ui:generateLocales="default">
 
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<ui:style src="moyenne.css" />
 
<g:HTMLPanel styleName="{style.moyenne}">
<g:HorizontalPanel styleName="{style.voter}"><g:FocusPanel ui:field="voter"/><g:Label text="Votes :" styleName="{style.petit}"/><g:Label ui:field="nbVotes" styleName="{style.petit}"/></g:HorizontalPanel>
</g:HTMLPanel>
</ui:UiBinder>
/src/org/tela_botanica/del/client/vues/rechercheimages/vote/MoyenneVotePresenteur.java
New file
0,0 → 1,20
package org.tela_botanica.del.client.vues.rechercheimages.vote;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.user.client.ui.HasWidgets;
 
public class MoyenneVotePresenteur {
 
private MoyenneVoteVue view;
 
public MoyenneVotePresenteur(List<VoteProtocole> validationDatas) {
view = new MoyenneVoteVue(validationDatas);
}
 
public void go(HasWidgets container) {
container.add(view);
}
}
/src/org/tela_botanica/del/client/vues/rechercheimages/ImagePresenteur.java
New file
0,0 → 1,101
package org.tela_botanica.del.client.vues.rechercheimages;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
import org.tela_botanica.del.client.utils.MockDatasource;
import org.tela_botanica.del.client.vues.rechercheimages.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;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
 
public class ImagePresenteur {
 
private final MockDatasource validationService = MockDatasource.getInstance();
private ImageVue vue = new ImageVue();
private final Image image;
private boolean detailsOpen = false;
 
public ImagePresenteur(Image image) {
this.image = image;
}
 
public void go(HasWidgets composite) {
composite.add(vue);
vue.loadImage(image);
loadValidationData();
handleEvents();
 
}
 
private void loadValidationData() {
 
List<VoteProtocole> observationValidationDatas = validationService.getValidationData(image.getIdImage());
image.setVoteProtocoles(observationValidationDatas);
new MoyenneVotePresenteur(observationValidationDatas).go(vue.getVoter());
//vue.showValidationData(observationValidationDatas);
 
}
 
private void handleEvents() {
 
vue.getEnSavoirPlus().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
 
if (!detailsOpen) {
afficherDetails();
} else {
cacherDetails();
}
 
}
});
 
vue.getAjoutValidation().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
BusEvenementiel.getInstance().fireEvent(new EvenementValidation(image));
}
});
}
 
public void cacherDetails() {
VerticalPanel zoneCache = vue.getZoneCache();
Label enSavoirPlus = vue.getEnSavoirPlus();
 
zoneCache.setVisible(false);
enSavoirPlus.setStyleName("boutonPlus");
 
detailsOpen = false;
}
 
public void afficherDetails() {
ImageRecherchePresenteur.getInstance().fermerTousPanneauxDetailsObservations();
 
VerticalPanel zoneCache = vue.getZoneCache();
Label enSavoirPlus = vue.getEnSavoirPlus();
 
zoneCache.setVisible(true);
enSavoirPlus.setStyleName("boutonMoins");
 
detailsOpen = true;
}
 
public boolean isDetailsOpen() {
return detailsOpen;
}
 
public ImageVue getVue() {
return vue;
}
}
/src/org/tela_botanica/del/client/vues/rechercheimages/ImageVue.java
New file
0,0 → 1,110
package org.tela_botanica.del.client.vues.rechercheimages;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
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.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
 
public class ImageVue extends Composite {
 
// Annotation can be used to change the name of the associated xml file
// @UiTemplate("ObservationVue.ui.xml")
interface MyUiBinder extends UiBinder<Widget, ImageVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField
protected Label nomEspece, nomAuteur, nomObservateur, nomRetenu, dateObservation, famille, localite;
 
@UiField
protected HorizontalPanel voter;
 
@UiField
protected VerticalPanel zoneCache;
 
@UiField
Image imagePrincipale;
 
@UiField
Label enSavoirPlus, ajoutValidation;
 
public ImageVue() {
// sets listBox
initWidget(uiBinder.createAndBindUi(this));
}
 
protected void loadImage(org.tela_botanica.del.client.modeles.Image image) {
enSavoirPlus.setStyleName("boutonPlus");
zoneCache.setVisible(false);
nomEspece.setText(image.getObservation().getSpecies());
nomAuteur.setText(image.getObservation().getAuteur());
imagePrincipale.setUrl(image.getUrl());
nomObservateur.setText(image.getObservation().getAuteur());
nomRetenu.setText(image.getObservation().getNomRetenu());
dateObservation.setText(image.getObservation().getDate());
famille.setText(image.getObservation().getFamille());
localite.setText(image.getObservation().getLocalite());
 
}
 
protected void clearDetails() {
/*
* detailsPanel.clear();
* moreDetailsHtml.setHTML("<img src='img/icon_plus.gif' >");
*/
}
 
public Panel getFlowPanel() {
// return flowPanel;
return new FlowPanel();
}
 
public Panel getDetailsPanel() {
// return detailsPanel;
return new FlowPanel();
}
 
public HTML getMoreDetailsHtml() {
// return moreDetailsHtml;
return new HTML();
}
 
public HTML getNoValidationDataHtml() {
// return noValidationDataHtml;
return new HTML();
}
 
public HTML getProposeValidationDataHtml() {
// return proposeValidationDataHtml;
return new HTML();
}
 
public HorizontalPanel getVoter() {
return voter;
}
 
public VerticalPanel getZoneCache() {
return zoneCache;
}
 
public Label getEnSavoirPlus() {
return enSavoirPlus;
}
 
public Image getImagePrincipale() {
return imagePrincipale;
}
 
public Label getAjoutValidation() {
return ajoutValidation;
}
}
/src/org/tela_botanica/del/client/vues/rechercheimages/detail/ObservationDetailPresenteur.java
New file
0,0 → 1,22
package org.tela_botanica.del.client.vues.rechercheimages.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/rechercheimages/detail/ObservationDetailVue.java
New file
0,0 → 1,30
package org.tela_botanica.del.client.vues.rechercheimages.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.getNomRetenu()));
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/rechercheimages/observation.css
New file
0,0 → 1,9
.observations {border: solid 1px #DDD; padding:10px; width:150px; height:250px; -moz-border-radius:10px; -webkit-border-radius:10px; }
.observations img {width:150px}
.zoneCache {position:absolute; padding:15px; border:solid 1px #CCC; background:white; z-index:1000; -moz-border-radius:5px; -webkit-border-radius:5px; -moz-box-shadow:2px 2px 2px 2px #AAA; -webkit-box-shadow:2px 2px 2px 2px #AAA }
 
.ajoutValidation {background:url(./img/add.png) no-repeat; font-size:11px; padding:2px 0px 2px 18px; margin-top:4px; cursor:pointer}
.espece {font-size:12px; font-weight:bold; color:#454341}
 
.zonePlus {position:absolute; margin-top:65px;}
.voter {/*position:absolute; margin-top:65px; margin-left:20px;*/}
/src/org/tela_botanica/del/client/vues/rechercheimages/ImageRechercheVue.ui.xml
New file
0,0 → 1,23
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
ui:generateLocales="default">
 
<ui:with field='res' type='org.tela_botanica.del.client.Ressources' />
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="observationRecherche.css" />
<g:HTMLPanel styleName="{style.observationsRecherche}">
<g:VerticalPanel>
<g:Label text="{constants.rechercher_image}" styleName="titre" />
<g:Label text="{constants.entrer_mot_clef}" styleName="petit" />
 
<g:HorizontalPanel>
<g:TextBox ui:field="nomEspece" text="apifera" styleName="test" />
<g:Button text="{constants.rechercher_taxon}" ui:field="boutonChercher" />
</g:HorizontalPanel>
<g:FlexTable ui:field="imageTable" />
<g:VerticalPanel ui:field="panneauPagination" />
</g:VerticalPanel>
</g:HTMLPanel>
</ui:UiBinder>
/src/org/tela_botanica/del/client/vues/rechercheimages/ImageRecherchePresenteur.java
New file
0,0 → 1,124
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.navigation.evenement.BusEvenementiel;
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.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 {
 
private final MockDatasource observationService = MockDatasource.getInstance();
private final ImageRechercheVue vue = new ImageRechercheVue();
private static ImageRecherchePresenteur instance;
private List<ImagePresenteur> observationPresenteurs = new ArrayList<ImagePresenteur>();
 
public ImageRecherchePresenteur() {
instance = this;
}
 
public void go(HasWidgets composite) {
composite.add(vue);
gererEvenements();
 
if (CacheClient.getInstance().getImages() != null) {
chargerObservations();
}
}
 
@SuppressWarnings("deprecation")
public void gererEvenements() {
 
vue.getBoutonChercher().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
getImages();
}
});
 
// TODO : remplacer par KeyUp, KeyDown ... etc.
vue.getTextBox().addKeyboardListener(new KeyboardKeyListener() {
 
@Override
public void onEnterKeyUp() {
getImages();
}
});
}
 
private void getImages() {
List<Image> imagesFromDatabase = observationService.getImages();
EvenementRechercheImage evenementRechercheImage = new EvenementRechercheImage(imagesFromDatabase);
BusEvenementiel.getInstance().fireEvent(evenementRechercheImage);
}
 
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);
}
}.go(vue.getPanneauPagination());
}
 
public void showImagePanels(int first, int last) {
vue.afficherPanneauxImage(first, last);
}
 
public static ImageRecherchePresenteur getInstance() {
return instance;
}
 
public ImageRechercheVue getView() {
return vue;
}
 
}
/src/org/tela_botanica/del/client/vues/rechercheimages/pagination/NumeroPagePresenteur.java
New file
0,0 → 1,51
package org.tela_botanica.del.client.vues.rechercheimages.pagination;
 
import org.tela_botanica.del.client.vues.rechercheimages.ImageRecherchePresenteur;
 
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 = ImageRecherchePresenteur.getInstance()
.getView().getNbImagesPerPage();
 
if (nbPage == 1) {
firstImage = 0;
} else {
firstImage = ((nbPage - 1) * nbImagePerPage);
}
 
lastImage = (nbPage - 1) * nbImagePerPage + nbImagePerPage;
 
ImageRecherchePresenteur.getInstance().showImagePanels(firstImage,
lastImage);
 
}
});
}
}
/src/org/tela_botanica/del/client/vues/rechercheimages/pagination/NumeroPageVue.java
New file
0,0 → 1,21
package org.tela_botanica.del.client.vues.rechercheimages.pagination;
 
import org.tela_botanica.del.client.gestionhistorique.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.PAGE_PRINCIPALE+"'>" + nbPage + "&nbsp;</a></h2>");
initWidget(nbPageHtml);
}
 
public HTML getNbPageHtml() {
return nbPageHtml;
}
 
}
/src/org/tela_botanica/del/client/vues/rechercheimages/ImageRechercheVue.java
New file
0,0 → 1,146
package org.tela_botanica.del.client.vues.rechercheimages;
 
import java.util.ArrayList;
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Image;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Button;
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.Panel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
 
public class ImageRechercheVue extends Composite {
 
private final VerticalPanel mainPanel = new VerticalPanel();
private final Panel panneauChargement = new FlowPanel();
private final Panel taxaPanel = new FlowPanel();
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;
private final TextBox textBox = new TextBox();
 
// Annotation can be used to change the name of the associated xml file
// @UiTemplate("ObservationRechercheVue.ui.xml")
interface MyUiBinder extends UiBinder<Widget, ImageRechercheVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField
TextBox nomEspece;
 
@UiField
Panel panneauPagination;
 
@UiField
Button boutonChercher;
 
@UiField
FlexTable imageTable;
 
// Constructeur
protected ImageRechercheVue() {
 
initWidget(uiBinder.createAndBindUi(this));
nomEspece.setFocus(true);
}
 
/**
* 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 creerPanneauxObservation(List<Image> images) {
 
for (int i = 0; i < images.size(); i++) {
Panel imagePanel = new VerticalPanel();
panneauxImages.add(imagePanel);
}
 
}
 
protected void afficherPanneauxImage(int first, int last) {
imageTable.clear();
 
int positionImage = 0;
for (int numImage = first; numImage < last; numImage++) {
try {
Panel panel = panneauxImages.get(numImage);
imageTable.setWidget((positionImage) / nbCol, (positionImage) % nbCol, panel);
} catch (Exception e) {
break;
}
 
positionImage++;
}
}
 
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;
}
 
public int getNumImage() {
return numImage;
}
 
public Panel getPanneauChargement() {
return panneauChargement;
}
 
public HTML getLabelChercher() {
return labelChercher;
}
 
public Panel getPanneauPagination() {
return panneauPagination;
}
 
public int getNbImagesPerPage() {
return nbImagesPerPage;
}
 
public TextBox getTextBox() {
return nomEspece;
}
 
public Panel getPanel() {
return mainPanel;
}
 
public List<Panel> getPanneauxImages() {
return panneauxImages;
}
public Button getBoutonChercher() {
return boutonChercher;
}
}
/src/org/tela_botanica/del/client/vues/rechercheimages/observationRecherche.css
New file
0,0 → 1,2
.observationsRecherche {width:50%; margin:0 auto;}
 
/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionPresenteur.java
1,26 → 1,15
package org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.Observable;
import java.util.Observer;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.validation.NumericFormValidator;
import org.tela_botanica.del.client.composants.validation.TextNotNullFormValidator;
import org.tela_botanica.del.client.exceptions.ExceptionClient;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.utils.GwtObservable;
import org.tela_botanica.del.client.utils.GwtObserver;
import org.tela_botanica.del.client.utils.MockDatasource;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasWidgets;
 
public class FormulairePropositionPresenteur {
62,7 → 51,7
private PropositionDetermination collecterValeursSaisieProposition() {
PropositionDetermination propositionAjoutee = new PropositionDetermination();
propositionAjoutee.setId(CacheClient.getInstance().getCurrentObservation().getIdImage());
propositionAjoutee.setId(CacheClient.getInstance().getImageCourante().getIdImage());
String auteur = formulairePropositionVue.getNomPrenom().getText();
if(formulairePropositionVue.getCommentaires().getText() != "") {
/src/org/tela_botanica/del/client/vues/plateformedetermination/formulaireproposition/FormulairePropositionVue.java
1,11 → 1,8
package org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.del.client.utils.MockDatasource;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
17,34 → 14,36
import com.google.gwt.user.client.ui.Widget;
 
public class FormulairePropositionVue extends Composite {
 
@UiField(provided = true)
public TextBox nomPrenom = new TextBox();
 
@UiField(provided = true)
public TextBox propositionTaxon = new TextBox();
 
@UiField(provided = true)
public ListBox pourcentageConfiance = new ListBox();
 
@UiField(provided = true)
public TextArea commentaires = new TextArea();
 
@UiField(provided = true)
public Button boutonValidationProposition = new Button();
interface FormulairePropositionUIiBinder extends UiBinder<Widget, FormulairePropositionVue>{};
 
interface FormulairePropositionUIiBinder extends UiBinder<Widget, FormulairePropositionVue> {
};
 
FormulairePropositionUIiBinder uiBinder = GWT.create(FormulairePropositionUIiBinder.class);
 
public FormulairePropositionVue() {
initWidget(uiBinder.createAndBindUi(this));
initWidget(uiBinder.createAndBindUi(this));
}
public void chargerPourcentagesConfiance(ArrayList<String> pourcentagesConfiance) {
 
public void chargerPourcentagesConfiance(List<String> pourcentagesConfiance) {
 
pourcentageConfiance.clear();
for(Iterator<String> it = pourcentagesConfiance.iterator(); it.hasNext();) {
 
for (Iterator<String> it = pourcentagesConfiance.iterator(); it.hasNext();) {
pourcentageConfiance.addItem(it.next());
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/VoteProtocolePresenteur.java
2,8 → 2,8
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.moyenne.MoyenneVoteProtocolePresenteur;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.personnel.MonVoteProtocolePresenteur;
 
15,9 → 15,9
 
private Protocole protocole;
 
private List<PropositionDetermination> validationDatas;
private List<VoteProtocole> validationDatas;
 
public VoteProtocolePresenteur(Protocole protocole, List<PropositionDetermination> validationDatas) {
public VoteProtocolePresenteur(Protocole protocole, List<VoteProtocole> validationDatas) {
this.protocole = protocole;
this.validationDatas = validationDatas;
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/moyenne/MoyenneVoteProtocoleVue.java
3,8 → 3,8
import java.util.List;
 
import org.cobogw.gwt.user.client.ui.Rating;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
27,7 → 27,7
@UiField
Label nbVotes, nomProtocole;
 
protected MoyenneVoteProtocoleVue(Protocole protocole, List<PropositionDetermination> validationDatas) {
protected MoyenneVoteProtocoleVue(Protocole protocole, List<VoteProtocole> validationDatas) {
initWidget(uiBinder.createAndBindUi(this));
 
nomProtocole.setText(protocole.getNom());
34,9 → 34,8
 
int meanVote = 0;
int nbVote = 0;
for (PropositionDetermination validationData : validationDatas) {
 
//meanVote += validationData.getVote();
for (VoteProtocole validationData : validationDatas) {
meanVote += validationData.getVote();
nbVote++;
}
if (nbVote > 0)
/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/protocole/moyenne/MoyenneVoteProtocolePresenteur.java
2,8 → 2,8
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.personnel.MonVoteProtocolePresenteur;
 
import com.google.gwt.user.client.ui.HasWidgets;
14,7 → 14,7
private Protocole protocole;
 
public MoyenneVoteProtocolePresenteur(Protocole protocole, List<PropositionDetermination> validationDatas) {
public MoyenneVoteProtocolePresenteur(Protocole protocole, List<VoteProtocole> validationDatas) {
view = new MoyenneVoteProtocoleVue(protocole, validationDatas);
}
 
/src/org/tela_botanica/del/client/vues/plateformedetermination/vote/EnsembleVotesPresenteur.java
3,8 → 3,8
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.utils.MockDatasource;
import org.tela_botanica.del.client.vues.plateformedetermination.vote.protocole.moyenne.MoyenneVoteProtocolePresenteur;
 
23,14 → 23,14
 
private void afficherVotes() {
 
String idImageCourante = CacheClient.getInstance().getCurrentObservation().getIdImage();
String idImageCourante = CacheClient.getInstance().getImageCourante().getIdImage();
 
Protocole protocoleEsthetisme = validationService.getProtocole(Protocole.ESTHETISME);
List<PropositionDetermination> observationValidationsEsthetisme = validationService.getValidationDataByImageAndProtocol(idImageCourante, Protocole.ESTHETISME);
List<VoteProtocole> observationValidationsEsthetisme = validationService.getValidationDataByImageAndProtocol(idImageCourante, Protocole.ESTHETISME);
new MoyenneVoteProtocolePresenteur(protocoleEsthetisme, observationValidationsEsthetisme).go(vue.getPanneauVotes());
 
Protocole protocoleIdentification = validationService.getProtocole(Protocole.IDENTIFICATION_AUTOMATIQUE);
List<PropositionDetermination> observationValidationsIdentification = validationService.getValidationDataByImageAndProtocol(idImageCourante, Protocole.IDENTIFICATION_AUTOMATIQUE);
List<VoteProtocole> observationValidationsIdentification = validationService.getValidationDataByImageAndProtocol(idImageCourante, Protocole.IDENTIFICATION_AUTOMATIQUE);
new MoyenneVoteProtocolePresenteur(protocoleIdentification, observationValidationsIdentification).go(vue.getPanneauVotes());
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/detail/DetailImageObservationPresenteur.java
1,17 → 1,9
package org.tela_botanica.del.client.vues.plateformedetermination.detail;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.utils.MockDatasource;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Widget;
 
public class DetailImageObservationPresenteur {
20,7 → 12,7
private DetailImageObservationVue detailImageObservationVue = new DetailImageObservationVue();
public void go(HasWidgets composite) {
detailImageObservationVue.chargerInformationsObservation(CacheClient.getInstance().getCurrentObservation());
detailImageObservationVue.chargerInformationsObservation(CacheClient.getInstance().getImageCourante());
composite.add(detailImageObservationVue);
}
}
/src/org/tela_botanica/del/client/vues/plateformedetermination/detail/DetailImageObservationVue.java
1,7 → 1,7
package org.tela_botanica.del.client.vues.plateformedetermination.detail;
 
import org.tela_botanica.del.client.modeles.Observation;
 
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
27,12 → 27,12
initWidget(uiBinder.createAndBindUi(this));
}
 
public void chargerInformationsObservation(Observation o) {
imageObservation.setUrl(o.getUrl());
nomObservateur.setText(o.getAuteur());
nomRetenu.setText(o.getNomRetenu());
famille.setText(o.getFamille());
localite.setText(o.getLocalite());
dateObservation.setText(o.getDate());
public void chargerInformationsObservation(org.tela_botanica.del.client.modeles.Image image) {
imageObservation.setUrl(image.getUrl());
nomObservateur.setText(image.getObservation().getAuteur());
nomRetenu.setText(image.getObservation().getNomRetenu());
famille.setText(image.getObservation().getFamille());
localite.setText(image.getObservation().getLocalite());
dateObservation.setText(image.getObservation().getDate());
}
}
/src/org/tela_botanica/del/client/vues/comparaisoneflore/ComparaisonEflorePresenteur.java
3,8 → 3,8
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.ObservationValidation;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.utils.MockDatasource;
 
import com.google.gwt.event.dom.client.ClickEvent;
19,14 → 19,14
 
private final MockDatasource validationService = MockDatasource.getInstance();
 
private Observation observationPrincipale;
private Image imagePrincipale;
 
private String nomTaxonComparaison;
 
private List<Observation> observationsEflore;
private List<org.tela_botanica.del.client.modeles.Image> imagesEflore;
 
public ComparaisonEflorePresenteur() {
this.observationPrincipale = CacheClient.getInstance().getCurrentObservation();
this.imagePrincipale = CacheClient.getInstance().getImageCourante();
this.nomTaxonComparaison = CacheClient.getInstance().getTaxonPourRechercheEflore();
}
 
33,19 → 33,19
public void go(HasWidgets composite) {
composite.add(vue);
chargerValidationObservationPrincipale();
vue.chargerImagePrincipale(observationPrincipale);
vue.chargerImagePrincipale(imagePrincipale);
chargerObservationsEflore();
gererEvenements();
}
 
private void chargerValidationObservationPrincipale() {
List<ObservationValidation> observationValidations = validationService.getValidationData(observationPrincipale.getIdImage());
observationPrincipale.setImageCelValidationDatas(observationValidations);
List<VoteProtocole> observationValidations = validationService.getValidationData(imagePrincipale.getIdImage());
imagePrincipale.setVoteProtocoles(observationValidations);
}
 
private void chargerObservationsEflore() {
observationsEflore = observationService.getObservationsEfloreParTaxon(nomTaxonComparaison);
vue.chargerImagesEflore(observationsEflore, 0);
imagesEflore = observationService.getImagesEfloreParTaxon(nomTaxonComparaison);
vue.chargerImagesEflore(imagesEflore, 0);
}
 
private void gererEvenements() {
53,7 → 53,7
 
@Override
public void onClick(ClickEvent event) {
vue.chargerImagesEflore(observationsEflore, vue.getCurrentIndexImages() - 1);
vue.chargerImagesEflore(imagesEflore, vue.getCurrentIndexImages() - 1);
}
});
 
61,7 → 61,7
 
@Override
public void onClick(ClickEvent event) {
vue.chargerImagesEflore(observationsEflore, vue.getCurrentIndexImages() + 1);
vue.chargerImagesEflore(imagesEflore, vue.getCurrentIndexImages() + 1);
}
});
}
/src/org/tela_botanica/del/client/vues/comparaisoneflore/ComparaisonEfloreVue.java
3,8 → 3,7
import java.util.Date;
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.modeles.VoteProtocole;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.DateTimeFormat;
47,11 → 46,11
initWidget(uiBinder.createAndBindUi(this));
}
 
protected void chargerImagePrincipale(Observation observationPrincipale) {
protected void chargerImagePrincipale(org.tela_botanica.del.client.modeles.Image image) {
 
// mots clefs
String motsClefsConcatenes = "";
for (String motClef : observationPrincipale.getMotsClefs()) {
for (String motClef : image.getObservation().getMotsClefs()) {
motsClefsConcatenes += motClef + ",";
}
motsClefsConcatenes = motsClefsConcatenes.subSequence(0, motsClefsConcatenes.lastIndexOf(",")).toString();
58,7 → 57,7
 
// validateurs
String validateursConcatenes = "";
for (ObservationValidation observationValidation : observationPrincipale.getImageCelValidationDatas()) {
for (VoteProtocole observationValidation : image.getVoteProtocoles()) {
validateursConcatenes += observationValidation.getContributeur() + ", ";
}
validateursConcatenes = validateursConcatenes.subSequence(0, validateursConcatenes.lastIndexOf(",")).toString();
65,7 → 64,7
 
// date derniere validation
Date dateDerniereValidation = null;
for (ObservationValidation observationValidation : observationPrincipale.getImageCelValidationDatas()) {
for (VoteProtocole observationValidation : image.getVoteProtocoles()) {
if (dateDerniereValidation == null) {
dateDerniereValidation = observationValidation.getDate();
} else if (dateDerniereValidation.before(observationValidation.getDate())) {
74,28 → 73,28
}
 
motsClefs.setText(motsClefsConcatenes);
nomAuteur.setText(observationPrincipale.getAuteur());
imagePrincipale.setUrl(observationPrincipale.getUrl());
dateObservation.setText(observationPrincipale.getDate());
famille.setText(observationPrincipale.getFamille());
nomAuteur.setText(image.getObservation().getAuteur());
imagePrincipale.setUrl(image.getUrl());
dateObservation.setText(image.getObservation().getDate());
famille.setText(image.getObservation().getFamille());
validateurs.setText(validateursConcatenes);
dateValidation.setText(DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT).format(dateDerniereValidation));
 
}
 
protected void chargerImagesEflore(List<Observation> observationsEflore, int indexImage) {
protected void chargerImagesEflore(List<org.tela_botanica.del.client.modeles.Image> observationsEflore, int indexImage) {
 
if (indexImage >= 0 && indexImage < observationsEflore.size()) {
currentIndexImages = indexImage;
}
 
Observation observationEflore = observationsEflore.get(currentIndexImages);
org.tela_botanica.del.client.modeles.Image observationEflore = observationsEflore.get(currentIndexImages);
 
nomEspeceEflore.setText(observationEflore.getSpecies());
nomAuteurEflore.setText(observationEflore.getAuteur());
nomEspeceEflore.setText(observationEflore.getObservation().getSpecies());
nomAuteurEflore.setText(observationEflore.getObservation().getAuteur());
imageEflore.setUrl(observationEflore.getUrl());
dateObservationEflore.setText(observationEflore.getDate());
localiteEflore.setText(observationEflore.getLocalite());
dateObservationEflore.setText(observationEflore.getObservation().getDate());
localiteEflore.setText(observationEflore.getObservation().getLocalite());
 
}