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