/trunk/src/org/tela_botanica/del/client/composants/votes/moyennevotes/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/composants/votes/moyennevotes/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/composants/votes/moyennevotes/MoyenneVotePresenteur.java |
---|
New file |
0,0 → 1,142 |
package org.tela_botanica.del.client.composants.votes.moyennevotes; |
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.modeles.Protocole; |
import org.tela_botanica.del.client.modeles.Utilisateur; |
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.ChangeEvent; |
import com.google.gwt.event.dom.client.ChangeHandler; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.event.dom.client.HasChangeHandlers; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HasText; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class MoyenneVotePresenteur { |
public interface Vue extends IsWidget { |
public HasClickHandlers getBoutonVoter(); |
public HasClickHandlers getBoutonAnnuler(); |
public HasText getNbVotes(); |
public HasClickHandlers getVotes(); |
public int getValeurVote(); |
public void afficherBoutonVoter(); |
public void afficherBoutonAnnuler(); |
public void masquerBoutonVoter(); |
public void masquerBoutonAnnuler(); |
public void afficherNbVotes(); |
public void masquerNbVotes(); |
public void reinitialiserVotes(); |
public void rafraichir(int moyenneVote, int nbVotes); |
public void ajouterAuParent(HasWidgets composite); |
} |
private Vue vue; |
private Protocole protocole; |
private Image image; |
private int valeurVoteDefaut = -1; |
private int valeurVoteUtilisateur = -1; |
private int valeurVoteTotal = 0; |
public MoyenneVotePresenteur(Image image, Protocole protocole, Vue vue) { |
this.vue = vue; |
this.protocole = protocole; |
this.image = image; |
} |
public void go(HasWidgets composite) { |
vue.ajouterAuParent(composite); |
gererEvenements(); |
rafraichirVue(); |
} |
public void gererEvenements() { |
vue.getVotes().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
valeurVoteUtilisateur = vue.getValeurVote(); |
vue.afficherBoutonVoter(); |
vue.afficherBoutonAnnuler(); |
vue.masquerNbVotes(); |
} |
}); |
vue.getBoutonAnnuler().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
valeurVoteUtilisateur = valeurVoteDefaut; |
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 setValeurVoteUtilisateur(int valeurVoteUtilisateur) { |
this.valeurVoteUtilisateur = valeurVoteUtilisateur; |
} |
public void enregistrerVote() { |
VoteProtocole voteProtocole = new VoteProtocole(); |
voteProtocole.setProtocole(this.protocole); |
voteProtocole.setVote(valeurVoteUtilisateur); |
voteProtocole.setContributeur(CacheClient.getInstance().getUtilisateur().getId()); |
// voteProtocoleService.saveVote(idImage, voteProtocole); |
// TODO: sauver vote asynchrone |
image.ajouterVoteProtocole(voteProtocole); |
rafraichirVue(); |
} |
public int getValeurVoteTotal() { |
return valeurVoteTotal; |
} |
public IsWidget getVue() { |
return vue; |
} |
private void rafraichirVue() { |
valeurVoteTotal = calculerMoyenneVotes(); |
vue.rafraichir(valeurVoteTotal, image.getVotesProtocoles(protocole.getId()).size()); |
} |
public int calculerMoyenneVotes() { |
double valeurVote = 0; |
int nbVote = 0; |
for (Iterator<String> iterator = image.getVotesProtocoles(protocole.getId()).keySet().iterator(); iterator.hasNext();) { |
VoteProtocole imageCelValidationData = image.getVotesProtocoles(protocole.getId()).get(iterator.next()); |
valeurVote += (double)imageCelValidationData.getVote()/5; |
nbVote++; |
} |
if (nbVote > 0) { |
valeurVote /= nbVote; |
valeurVote *= 5; |
} |
return (int)Math.round(valeurVote); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/votes/moyennevotes/MoyenneVoteVue.java |
---|
New file |
0,0 → 1,112 |
package org.tela_botanica.del.client.composants.votes.moyennevotes; |
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.HasChangeHandlers; |
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.HasWidgets; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.Widget; |
public class MoyenneVoteVue extends Composite implements MoyenneVotePresenteur.Vue { |
// 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; |
public MoyenneVoteVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
votes = new Rating(0, 5); |
votes.setReadOnly(false); |
voter.add(votes); |
masquerBoutonAnnuler(); |
masquerBoutonVoter(); |
} |
public HasClickHandlers getBoutonVoter() { |
return boutonVoter; |
} |
public HasClickHandlers getBoutonAnnuler() { |
return boutonAnnuler; |
} |
public HasText getNbVotes() { |
return nbVotes; |
} |
public HasClickHandlers getVotes() { |
return votes; |
} |
public int getValeurVote() { |
return votes.getValue(); |
} |
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(int moyenneVote, int nombreVotes) { |
valeurOrigine = moyenneVote; |
nbVotes.setText(nombreVotes+" "+I18n.getVocabulary().nbVotes()); |
votes.setValue(moyenneVote); |
} |
@Override |
public void ajouterAuParent(HasWidgets composite) { |
composite.add(this); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/votes/barrerepartition/barreRepartition.css |
---|
New file |
0,0 → 1,56 |
.conteneurBarre { |
width:130px; |
} |
.barre { |
width:50%; |
height:15px; |
background:#BBB; |
float:left; |
margin-right:2px; |
margin-left:2px; |
} |
.barreOui { |
background:#8EB533; |
padding-bottom:15px; |
} |
.barreNon { |
background:#C61717; |
padding-bottom:15px; |
} |
.boutonOui, .boutonNon { |
text-align:center; |
color:white; |
line-height:1em; |
font-size:15px; |
font-weight:bold; |
cursor:pointer; |
float:left; |
background:#AAA; |
} |
.boutonOui { |
width:9%; |
height:15px; |
width:15px; |
border-radius:0 2px 2px 0; |
} |
.boutonOui:hover { |
background:#8EB533; |
} |
.boutonNon:hover { |
background:#C61717 |
} |
.boutonNon { |
width:9%; |
height:15px; |
width:15px; |
border-radius:2px 0 0 2px; |
} |
/trunk/src/org/tela_botanica/del/client/composants/votes/barrerepartition/BarreRepartitionVoteVue.ui.xml |
---|
New file |
0,0 → 1,15 |
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> |
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" |
xmlns:g="urn:import:com.google.gwt.user.client.ui"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="barreRepartition.css" /> |
<g:HTMLPanel styleName="{style.conteneurBarre}"> |
<g:Label ui:field="nomTaxon" /> |
<g:PushButton ui:field="boutonNon" text="-" styleName="{style.boutonNon}"/> |
<g:HTMLPanel styleName="{style.barre}"> |
<g:HTMLPanel ui:field="barreOui" styleName="{style.barreOui} gauche"/> |
<g:HTMLPanel ui:field="barreNon" styleName="{style.barreNon} droite"/> |
</g:HTMLPanel> |
<g:PushButton ui:field="boutonOui" text="+" styleName="{style.boutonOui}"/> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/composants/votes/barrerepartition/BarreRepartitionVotePresenteur.java |
---|
New file |
0,0 → 1,106 |
package org.tela_botanica.del.client.composants.votes.barrerepartition; |
import java.util.Date; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.modeles.MoyenneVote; |
import org.tela_botanica.del.client.modeles.VoteDetermination; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination; |
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination; |
import org.tela_botanica.del.client.services.CalculVoteDeterminationService; |
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.user.client.Window; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class BarreRepartitionVotePresenteur { |
public interface Vue extends IsWidget { |
public void afficherVotes(int pourcentage, String NomTaxon); |
public HasClickHandlers getBoutonOui(); |
public HasClickHandlers getBoutonNon(); |
public void setVoteOuiEffectue(); |
public void setVoteNonEffectue(); |
} |
private Vue vue; |
private MoyenneVote moyenneVote; |
public BarreRepartitionVotePresenteur(Vue vue) { |
this.vue = vue; |
gererEvenements(); |
} |
public void go(HasWidgets container) { |
container.add(vue.asWidget()); |
} |
public void afficherVotes(MoyenneVote moyenneVote) { |
this.moyenneVote = moyenneVote; |
int score = moyenneVote.getScore(); |
String intitule =moyenneVote.getIntituleAssocie(); |
vue.afficherVotes(score, intitule); |
} |
public Vue getBarreRepartitionVoteVue() { |
return vue; |
} |
public MoyenneVote getMoyenneVote() { |
return moyenneVote; |
} |
public void gererEvenements() { |
BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() { |
@Override |
public void onVoteDetermination(VoteDetermination event) { |
if(event.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) { |
moyenneVote.getPropositionAssociee().ajouterVoteDetermination(event); |
moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee()); |
afficherVotes(moyenneVote); |
} |
} |
}); |
vue.getBoutonOui().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
voter(true); |
} |
}); |
vue.getBoutonNon().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
voter(false); |
vue.setVoteNonEffectue(); |
} |
}); |
} |
public void voter(boolean oui) { |
VoteDetermination vd = new VoteDetermination(); |
vd.setPropositionDetermination(moyenneVote.getPropositionAssociee()); |
vd.setContributeur(CacheClient.getInstance().getUtilisateur().getId()); |
vd.setDate(new Date()); |
int valeurVote = oui ? 1 : 0; |
vd.setVote(valeurVote); |
vd.setId(CacheClient.getInstance().getUtilisateur().getId()); |
if(oui) { |
vue.setVoteOuiEffectue(); |
} else { |
vue.setVoteNonEffectue(); |
} |
moyenneVote.getPropositionAssociee().ajouterVoteDetermination(vd); |
BusEvenementiel.getInstance().fireEvent(new EvenementVoteDetermination(vd)); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/votes/barrerepartition/BarreRepartitionVoteVue.java |
---|
New file |
0,0 → 1,64 |
package org.tela_botanica.del.client.composants.votes.barrerepartition; |
import com.google.gwt.core.client.GWT; |
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.Composite; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.PushButton; |
import com.google.gwt.user.client.ui.Widget; |
public class BarreRepartitionVoteVue extends Composite implements BarreRepartitionVotePresenteur.Vue { |
interface MyUiBinder extends UiBinder<Widget, BarreRepartitionVoteVue> {} |
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); |
@UiField Label nomTaxon; |
@UiField Panel barreOui, barreNon; |
@UiField PushButton boutonOui, boutonNon; |
public BarreRepartitionVoteVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
@Override |
public void afficherVotes(int pourcentage, String nomTaxon) { |
this.nomTaxon.setText(nomTaxon); |
if (pourcentage > -1) { |
int pourcentageNon = 100-pourcentage; |
barreOui.setWidth(pourcentage + "%"); |
barreNon.setWidth(pourcentageNon + "%"); |
} else { |
barreNon.setWidth("0px"); |
barreOui.setWidth("0px"); |
} |
} |
@Override |
public HasClickHandlers getBoutonOui() { |
return boutonOui; |
} |
@Override |
public HasClickHandlers getBoutonNon() { |
return boutonNon; |
} |
@Override |
public void setVoteOuiEffectue() { |
boutonOui.setEnabled(false); |
boutonNon.setEnabled(true); |
} |
@Override |
public void setVoteNonEffectue() { |
boutonOui.setEnabled(true); |
boutonNon.setEnabled(false); |
} |
} |