Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 477 → Rev 478

/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImageVue.ui.xml
1,7 → 1,7
<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='res' type='org.tela_botanica.del.client.resources.Ressources'/>
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<ui:style src="image.css" />
 
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImagePresenteur.java
3,8 → 3,10
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.fenetreOverlayDefilante.FenetreOverlayDefilantePresenteur;
import org.tela_botanica.del.client.composants.fenetreOverlayDefilante.FenetreOverlayDefilanteVue;
import org.tela_botanica.del.client.composants.fenetereoverlay.FenetreOverlayDefilantePresenteur;
import org.tela_botanica.del.client.composants.fenetereoverlay.FenetreOverlayDefilanteVue;
import org.tela_botanica.del.client.composants.images.DetailImagePresenteur;
import org.tela_botanica.del.client.composants.images.DetailImageVue;
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur;
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesVue;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
23,9 → 25,7
import org.tela_botanica.del.client.services.rest.ImageServiceConcret;
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback;
import org.tela_botanica.del.client.utils.MockDatasource;
import org.tela_botanica.del.client.vues.rechercheimages.vote.MoyenneVotePresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.DetailImagePresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.DetailImageVue;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.votes.MoyenneVotePresenteur;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/votes/MoyenneVoteVue.ui.xml
New file
0,0 → 1,16
<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:Label text="{constants.votez} :" styleName="{style.petit}"/>
<g:FocusPanel ui:field="voter" styleName="{style.barreVote}"/>
<g:Label ui:field="nbVotes" styleName="{style.petit}"/>
<g:Button ui:field="boutonVoter" text="OK" styleName="{style.validerVote}"></g:Button>
<g:Button ui:field="boutonAnnuler" text=" " styleName="{style.annuler}"></g:Button>
</g:HorizontalPanel>
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/votes/MoyenneVotePresenteur.java
New file
0,0 → 1,75
package org.tela_botanica.del.client.vues.rechercheimages.resultats.votes;
 
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.modeles.VoteProtocole;
import org.tela_botanica.del.client.services.rest.VoteProtocoleService;
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.Window;
import com.google.gwt.user.client.ui.HasWidgets;
 
public class MoyenneVotePresenteur {
 
private MoyenneVoteVue vue;
private Protocole protocole;
private final VoteProtocoleService voteProtocoleService = MockDatasource.getInstance();
private String idImage;
private final MockDatasource validationService = MockDatasource.getInstance();
public MoyenneVotePresenteur(List<VoteProtocole> validationDatas, String idImage, Protocole protocole) {
vue = new MoyenneVoteVue(validationDatas);
this.protocole = protocole;
this.idImage = idImage;
}
 
public void go(HasWidgets container) {
container.add(vue);
gererEvenements();
}
public void gererEvenements() {
vue.getVotes().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
vue.afficherBoutonVoter();
vue.afficherBoutonAnnuler();
vue.masquerNbVotes();
}
});
vue.getBoutonAnnuler().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
vue.masquerBoutonVoter();
vue.masquerBoutonAnnuler();
vue.afficherNbVotes();
vue.reinitialiserVotes();
}
});
vue.getBoutonVoter().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
enregistrerVote();
vue.masquerBoutonVoter();
vue.masquerBoutonAnnuler();
vue.afficherNbVotes();
vue.reinitialiserVotes();
}
});
}
public void enregistrerVote() {
VoteProtocole voteProtocole = new VoteProtocole();
voteProtocole.setProtocole(this.protocole);
voteProtocoleService.saveVote(idImage, voteProtocole);
List<VoteProtocole> observationValidationDatas = validationService.getVoteByImageAndProtocol(idImage, protocole.getNom());
vue.rafraichir(observationValidationDatas);
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/votes/MoyenneVoteVue.java
New file
0,0 → 1,114
package org.tela_botanica.del.client.vues.rechercheimages.resultats.votes;
 
import java.util.List;
 
import org.cobogw.gwt.user.client.ui.Rating;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.VoteProtocole;
 
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.event.dom.client.HasClickHandlers;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FocusPanel;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.Label;
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 Rating votes;
private int valeurOrigine;
@UiField
FocusPanel voter;
 
@UiField
Label nbVotes;
 
@UiField
Button boutonVoter, boutonAnnuler;
protected MoyenneVoteVue(List<VoteProtocole> validationDatas) {
initWidget(uiBinder.createAndBindUi(this));
votes = new Rating(0, 5);
votes.setReadOnly(false);
voter.add(votes);
 
masquerBoutonAnnuler();
masquerBoutonVoter();
rafraichir(validationDatas);
}
public HasClickHandlers getBoutonVoter() {
return boutonVoter;
}
public HasClickHandlers getBoutonAnnuler() {
return boutonAnnuler;
}
public HasText getNbVotes() {
return nbVotes;
}
public HasClickHandlers getVotes() {
return votes;
}
public void afficherBoutonVoter() {
boutonVoter.setVisible(true);
}
 
public void afficherBoutonAnnuler() {
boutonAnnuler.setVisible(true);
}
public void masquerBoutonVoter() {
boutonVoter.setVisible(false);
}
public void masquerBoutonAnnuler() {
boutonAnnuler.setVisible(false);
}
public void afficherNbVotes () {
nbVotes.setVisible(true);
}
public void masquerNbVotes () {
nbVotes.setVisible(false);
}
public void reinitialiserVotes() {
votes.setValue(valeurOrigine);
}
public void rafraichir(List<VoteProtocole> validationDatas) {
int meanVote = 0;
int nbVote = 0;
for (VoteProtocole imageCelValidationData : validationDatas) {
meanVote += imageCelValidationData.getVote();
nbVote++;
}
if (nbVote > 0) {
meanVote /= nbVote;
}
votes.setValue(nbVote);
valeurOrigine = nbVote;
nbVotes.setText(String.valueOf(validationDatas.size()) + " " +I18n.getVocabulary().nbVotes());
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/votes/moyenne.css
New file
0,0 → 1,6
.moyenne {}
.petit {font-size:11px; color:#AAA}
.voter {/*position:absolute; margin-top:65px; margin-left:20px;*/ padding-left:30px}
.barreVote {padding:0 5px 0 5px}
.validerVote {font-size:11px;margin-left:5px }
.annuler {background:url("./img/cancel.png") no-repeat; border:none; padding-left:16px; padding-top:16px; margin-left:5px}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/moteur/MoteurRechercheImageVue.ui.xml
New file
0,0 → 1,24
<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.resources.Ressources' />
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="rechercheImage.css" />
<g:HTMLPanel>
<g:HTMLPanel>
<g:Label text="{constants.rechercherImage}" styleName="titre" />
<g:Label text="{constants.entrerMotClef}" styleName="gris {style.entrerMotClef}" />
<g:HorizontalPanel styleName="{style.moteurRecherche}">
<g:HorizontalPanel ui:field="zoneRecherche" />
</g:HorizontalPanel>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.zoneProtocoles}">
<g:ListBox ui:field="listeProtocoles" />
</g:HTMLPanel>
<g:HTMLPanel ui:field="panneauResultats" />
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/moteur/rechercheImage.css
New file
0,0 → 1,31
.zoneRecherche {
width: 100%
}
 
.moteurRecherche {
margin-bottom: 10px;
}
 
.moteurRecherche button {
margin-left: 2px;
margin-top: -1px
}
 
.labelProtocole {
padding: 0 5px 0 0;
float: left
}
 
.labelProtocole:after {
content: " :"
}
 
.entrerMotClef {
margin-bottom: 10px;
}
 
.zoneProtocoles {
margin-left: 40%;
position: absolute;
}
 
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/moteur/MoteurRechercheImagePresenteur.java
New file
0,0 → 1,121
package org.tela_botanica.del.client.vues.rechercheimages.moteur;
 
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRecherchePresenteur;
import org.tela_botanica.del.client.composants.moteurrecherche.MoteurRechercheVue;
import org.tela_botanica.del.client.modeles.ModeRecherche;
import org.tela_botanica.del.client.modeles.Protocole;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
import org.tela_botanica.del.client.services.rest.ImageServiceConcret;
import org.tela_botanica.del.client.services.rest.ProtocoleService;
import org.tela_botanica.del.client.utils.MockDatasource;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.ResultatRechercheImagePresenteur;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.ResultatRechercheImageVue;
 
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.HasChangeHandlers;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class MoteurRechercheImagePresenteur {
 
public interface Vue extends IsWidget {
 
public void ajouterProtocole(String protocole);
 
public void selectionnerProtocole(int index);
 
public HasChangeHandlers getListeProtocoles();
 
public HasWidgets getZoneResultats();
 
public HasWidgets getZoneRecherche();
 
public String getNomProtocolSelectionne();
 
public int getIdProtocoleSelectionne();
 
public void ajouterVue(HasWidgets composite);
 
}
 
private Vue vue;
 
private final ProtocoleService protocoleService = MockDatasource.getInstance();
private List<Protocole> protocoles;
 
// TODO : passer ça en cache
private String protocoleParDefaut = Protocole.ESTHETISME;
 
/**
* Constructeur
* */
public MoteurRechercheImagePresenteur(Vue vue) {
this.vue = vue;
if (CacheClient.getInstance().getProtocoleCourant() == null) {
CacheClient.getInstance().setProtocoleCourant(protocoleService.getProtocole(protocoleParDefaut));
}
gererEvenements();
chargerProtocoles();
}
 
public void go(HasWidgets composite) {
vue.ajouterVue(composite);
chargerMoteurRechercheAvancee();
}
 
private void chargerProtocoles() {
protocoles = protocoleService.getProtocoles();
for (Protocole protocole : protocoles) {
vue.ajouterProtocole(protocole.getNom());
}
vue.selectionnerProtocole(protocoles.indexOf(CacheClient.getInstance().getProtocoleCourant()));
}
 
public void gererEvenements() {
 
vue.getListeProtocoles().addChangeHandler(new ChangeHandler() {
 
@Override
public void onChange(ChangeEvent event) {
surChangementProtocole();
}
});
 
}
 
public void surChangementProtocole() {
Protocole protocoleCourant = null;
for (Protocole protocole : protocoles) {
if (protocole.getId() == vue.getIdProtocoleSelectionne()) {
protocoleCourant = protocole;
}
}
 
CacheClient.getInstance().setProtocoleCourant(protocoleCourant);
EvenementChangementProtocole evenement = new EvenementChangementProtocole(protocoleCourant);
BusEvenementiel.getInstance().fireEvent(evenement);
}
 
public void chargerMoteurRechercheAvancee() {
MoteurRecherchePresenteur presenteurRecherche = new MoteurRecherchePresenteur(new MoteurRechercheVue(""), ModeRecherche.MODE_IMAGE) {
public void lancerRecherche() {
chercherImages();
}
};
presenteurRecherche.go(vue.getZoneRecherche());
}
 
public void chercherImages() {
vue.getZoneResultats().clear();
new ResultatRechercheImagePresenteur(new ImageServiceConcret(), new ResultatRechercheImageVue()).go(vue.getZoneResultats());
}
 
public HasWidgets getZoneResultats() {
return vue.getZoneResultats();
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/moteur/MoteurRechercheImageVue.java
New file
0,0 → 1,83
package org.tela_botanica.del.client.vues.rechercheimages.moteur;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasChangeHandlers;
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.HasWidgets;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
public class MoteurRechercheImageVue extends Composite implements MoteurRechercheImagePresenteur.Vue {
 
private final Panel panneauChargement = new FlowPanel();
 
interface MyUiBinder extends UiBinder<Widget, MoteurRechercheImageVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
@UiField
Panel panneauResultats, zoneRecherche;
 
@UiField
ListBox listeProtocoles;
 
// Constructeur
public MoteurRechercheImageVue() {
initWidget(uiBinder.createAndBindUi(this));
}
 
public Panel getPanneauChargement() {
return panneauChargement;
}
 
public void setListeProtocoles(ListBox listeProtocoles) {
this.listeProtocoles = listeProtocoles;
}
 
// Cette méthode est public car appelé dans GestionnaireHistorique
public Panel getZoneResultats() {
return panneauResultats;
}
 
public void setPanneauResultats(Panel panneauResultats) {
this.panneauResultats = panneauResultats;
}
 
public HasChangeHandlers getListeProtocoles() {
return listeProtocoles;
}
 
public void ajouterProtocole(String protocole) {
listeProtocoles.addItem(protocole);
}
 
public void selectionnerProtocole(int index) {
listeProtocoles.setSelectedIndex(index);
 
}
 
public HasWidgets getZoneRecherche() {
return zoneRecherche;
}
 
@Override
public String getNomProtocolSelectionne() {
return listeProtocoles.getValue(listeProtocoles.getSelectedIndex());
}
 
@Override
public int getIdProtocoleSelectionne() {
return listeProtocoles.getSelectedIndex();
}
 
@Override
public void ajouterVue(HasWidgets composite) {
composite.add(this.asWidget());
}
 
}