/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/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/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/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/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/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/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/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()); |
} |
/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 + " </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 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/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/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/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/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;*/} |