/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/commentaires/LigneCommentaireVue.ui.xml |
---|
New file |
0,0 → 1,17 |
<!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' |
xmlns:vues="urn:import:org.tela_botanica.del.client.composants.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="ligneCommentaire.css" /> |
<g:HTMLPanel> |
<g:HorizontalPanel ui:field="zoneAuteur"> |
<g:Label ui:field="auteur" styleName="{style.auteur}"/> |
<g:Label ui:field="date" styleName="{style.date}"/> |
</g:HorizontalPanel> |
<g:HTMLPanel> |
<g:Label ui:field="commentaire" styleName="commentaire {style.commentaire}"/> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/commentaires/detailCommentaireVue.css |
---|
New file |
0,0 → 1,41 |
.conteneurTableauVotes { |
z-index: 1500; |
padding: 30px; |
padding-right: 21px; |
padding-top: 20px; |
background: white; |
width: 370px; |
margin: 0 auto; |
margin-top: 75px; |
padding-bottom:50px; |
} |
.table { |
border:solid 1px #DDD; |
width: 100%; |
} |
.chargement { |
padding-left: 165px; |
} |
.auteur { |
color: #6C6865; |
font-family: arial; |
font-size: 13px; |
font-style: italic; |
font-weight: bold; |
letter-spacing: 0; |
line-height: 18px; |
text-transform: none; |
margin-top: -10px; |
} |
.boutonAjouterCommentaire { |
margin:30px 0; |
} |
.zoneCommentaires { |
max-height: 400px; |
overflow:auto; |
} |
/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/commentaires/LigneCommentairePresenteur.java |
---|
New file |
0,0 → 1,70 |
package org.tela_botanica.del.client.composants.commentaires; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.modeles.Commentaire; |
import org.tela_botanica.del.client.modeles.PropositionDetermination; |
import com.google.gwt.i18n.client.DateTimeFormat; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class LigneCommentairePresenteur extends Presenteur { |
public interface Vue extends IsWidget { |
public void setCommentaire(String commentaire); |
public void setAuteur(String auteur); |
public void setDate(String date); |
} |
private Vue vue; |
private PropositionDetermination proposition; |
private Commentaire commentaire; |
public LigneCommentairePresenteur(Vue vue, PropositionDetermination proposition) { |
this.vue = vue; |
this.proposition = proposition; |
afficherCommentaire(); |
} |
public LigneCommentairePresenteur(Vue vue, Commentaire commentaire) { |
this.vue = vue; |
this.commentaire = commentaire; |
afficherCommentaire(); |
} |
public void afficherCommentaire() { |
if (proposition != null) { |
String commentaire = proposition.getCommentaire(); |
vue.setCommentaire(commentaire); |
String date = DateTimeFormat.getFormat("dd/MM/yyyy").format(proposition.getDate()); |
vue.setDate(date); |
String auteur = proposition.getAuteur(); |
vue.setAuteur(auteur); |
} else if (commentaire != null) { |
String commentaire = this.commentaire.getCommentaire(); |
vue.setCommentaire(commentaire); |
String date = DateTimeFormat.getFormat("dd/MM/yyyy").format(this.commentaire.getDate()); |
vue.setDate(date); |
String auteur = this.commentaire.getAuteur(); |
vue.setAuteur(auteur); |
} |
} |
/** |
* Declenchement du présenteur |
*/ |
public void go(HasWidgets container) { |
container.add(vue.asWidget()); |
gererEvenements(); |
} |
protected void gererEvenements() { |
} |
} |
/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/commentaires/DetailCommentaireVue.ui.xml |
---|
New file |
0,0 → 1,19 |
<!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' |
xmlns:vues="urn:import:org.tela_botanica.del.client.composants.forum"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="detailCommentaireVue.css" /> |
<g:HTMLPanel styleName="{style.conteneurTableauVotes}"> |
<g:HTMLPanel ui:field='titre' styleName="titre" /> |
<g:HTMLPanel ui:field='auteur' styleName="{style.auteur}" /> |
<g:HTMLPanel ui:field="ligneCommentaire" styleName="{style.zoneCommentaires}"></g:HTMLPanel> |
<g:HTMLPanel ui:field="panneauChargement" styleName="{style.chargement}"> |
<g:Image url="./img/wait.gif"></g:Image> |
</g:HTMLPanel> |
<g:HTMLPanel ui:field="aucuneDonnees" visible="false"><g:Label text="{constants.aucunCommentaireEffectue}"></g:Label></g:HTMLPanel> |
<g:Button ui:field="boutonAjoutCommentaire" styleName="bouton {style.boutonAjouterCommentaire}" |
text="{constants.ajouterCommentaire}" /> |
</g:HTMLPanel> |
</ui:UiBinder> |
/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/commentaires/LigneCommentaireVue.java |
---|
New file |
0,0 → 1,38 |
package org.tela_botanica.del.client.composants.commentaires; |
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.Label; |
import com.google.gwt.user.client.ui.Widget; |
public class LigneCommentaireVue extends Composite implements LigneCommentairePresenteur.Vue { |
interface LigneCommentaireVueUiBinder extends UiBinder<Widget, LigneCommentaireVue> {}; |
private static LigneCommentaireVueUiBinder uiBinder = GWT.create(LigneCommentaireVueUiBinder.class); |
//Composants |
@UiField |
Label commentaire, auteur, date; |
public LigneCommentaireVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
@Override |
public void setCommentaire(String commentaire) { |
this.commentaire.setText(commentaire); |
} |
@Override |
public void setAuteur(String auteur) { |
this.auteur.setText(auteur); |
} |
@Override |
public void setDate(String date) { |
this.date.setText(date); |
} |
} |
/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/commentaires/DetailCommentairePresenteur.java |
---|
New file |
0,0 → 1,170 |
package org.tela_botanica.del.client.composants.commentaires; |
import java.util.List; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur; |
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.modeles.Commentaire; |
import org.tela_botanica.del.client.modeles.InterventionForum; |
import org.tela_botanica.del.client.modeles.PropositionDetermination; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire; |
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire; |
import org.tela_botanica.del.client.services.rest.CommentaireService; |
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret; |
import org.tela_botanica.del.client.services.rest.async.ListeCommentairesCallback; |
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; |
/** |
* Cette classe permet d'afficher une popup avec la liste des commentaires |
* associées à une proposition de determination |
* |
* @author LIENS |
* |
*/ |
public class DetailCommentairePresenteur extends Presenteur { |
/** |
* Interface de la vue correspondante |
* |
* @author LIENS |
* |
*/ |
public interface Vue extends IsWidget { |
public void afficherCommentairesProposition(PropositionDetermination propositionDetermination); |
public void afficherAucuneDonnees(); |
public void stopChargement(); |
public void startChargement(); |
public HasClickHandlers getBoutonAjoutCommentaire(); |
} |
// La vue correspondante |
private Vue vue; |
// La proposition de determination |
private PropositionDetermination propositionDetermination; |
//le servcie de recuperation des commentaires |
private CommentaireService commentaireService; |
/** |
* Constructeur |
* |
* @param vue |
* @param propositionDetermination |
*/ |
public DetailCommentairePresenteur(Vue vue, CommentaireService commentaireService, PropositionDetermination propositionDetermination) { |
this.vue = vue; |
this.propositionDetermination = propositionDetermination; |
this.commentaireService = commentaireService; |
} |
/** |
* Declenchement du présenteur |
*/ |
public void go(HasWidgets container) { |
container.add(vue.asWidget()); |
gererEvenements(); |
} |
/** |
* Affichage des commentaires |
*/ |
public void afficherCommentaires() { |
// affichage de l'icone de chargement |
vue.startChargement(); |
// si l'id de la propostion est égal est nulle alors celle ci est une proposition |
// crée par l'interface à partir de l'obs et n'a donc pas de commentaires |
if(propositionDetermination.getId() != null) { |
// Appel du service |
commentaireService.chargerCommentaires(propositionDetermination, new ListeCommentairesCallback() { |
@Override |
public void surRetour(List<Commentaire> commentaires) { |
propositionDetermination.setListeCommentaires(commentaires); |
// s'il existe des commentaires ils sont affichés |
if (propositionDetermination.getTotalCommentaires() > 0) { |
// affichage des commentaires associés à la proposition dans |
// la vue |
vue.afficherCommentairesProposition(propositionDetermination); |
// supression de l'icone de chargement |
vue.stopChargement(); |
} else { |
// affichage d'un message precisant qu'il n'y a pas de |
// commentaires |
vue.afficherAucuneDonnees(); |
// supression de l'icone de chargement |
vue.stopChargement(); |
} |
} |
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
vue.stopChargement(); |
} |
}); |
} else { |
// affichage d'un message precisant qu'il n'y a pas de |
// commentaires |
vue.afficherAucuneDonnees(); |
// supression de l'icone de chargement |
vue.stopChargement(); |
} |
} |
/** |
* Gestion des evenements du presenteur |
*/ |
@Override |
protected void gererEvenements() { |
final FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
vue.getBoutonAjoutCommentaire().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
// TODO : > mettre proprement l'intervention |
// TODO : >actualiser les affichages |
CacheClient.getInstance().setObservationCourante(propositionDetermination.getObservation()); |
FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(propositionDetermination.getObservation().getInterventionsForum().get(propositionDetermination.getObservation().getInterventionsForum().size()-1), new CommentaireServiceConcret(), new FormulaireCommentaireVue()); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur); |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() { |
@Override |
public void onAjoutCommentaire(EvenementAjoutCommentaire event) { |
if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) { |
fenetreOverlaySimplePresenteur.fermerFenetreModale(); |
} |
} |
}); |
} |
} |
/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/commentaires/DetailCommentaireVue.java |
---|
New file |
0,0 → 1,118 |
package org.tela_botanica.del.client.composants.commentaires; |
import java.util.List; |
import org.tela_botanica.del.client.i18n.I18n; |
import org.tela_botanica.del.client.modeles.Commentaire; |
import org.tela_botanica.del.client.modeles.PropositionDetermination; |
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.HTML; |
import com.google.gwt.user.client.ui.HTMLPanel; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
/** |
* Cette classe permet d'afficher une popup avec la liste des commentaires |
* associées à une proposition de determination |
* |
* @author LIENS |
* |
*/ |
public class DetailCommentaireVue extends Composite implements DetailCommentairePresenteur.Vue { |
private static DetailListeVotesDeterminationVueUIiBinder uiBinder = GWT.create(DetailListeVotesDeterminationVueUIiBinder.class); |
interface DetailListeVotesDeterminationVueUIiBinder extends UiBinder<Widget, DetailCommentaireVue> { |
}; |
@UiField |
HTMLPanel titre, auteur, aucuneDonnees; |
@UiField |
Panel panneauChargement, ligneCommentaire; |
@UiField |
Button boutonAjoutCommentaire; |
@Override |
public Button getBoutonAjoutCommentaire() { |
return boutonAjoutCommentaire; |
} |
public DetailCommentaireVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
/** |
* Affiche les commentaires associées à une proposition de determination |
*/ |
@Override |
public void afficherCommentairesProposition(PropositionDetermination propositionDetermination) { |
HTML htmlTitre = new HTML(propositionDetermination.getEspece()); |
titre.add(htmlTitre); |
HTML htmlAuteur = new HTML(I18n.getVocabulary().proposePar()+propositionDetermination.getAuteur()); |
auteur.add(htmlAuteur); |
LigneCommentairePresenteur presenteurCommentaire = new LigneCommentairePresenteur(new LigneCommentaireVue(), propositionDetermination); |
presenteurCommentaire.go(ligneCommentaire); |
creerListeCommentaireRecursive(propositionDetermination.getListeCommentaires()); |
} |
/** |
* Affiche une liste de commentaires recursivement |
* @param commentaires |
*/ |
private void creerListeCommentaireRecursive(List<Commentaire> commentaires) { |
for (Commentaire commentaire : commentaires) { |
chargerCommentaire(commentaire); |
if (commentaire.getListeCommentaires().size() > 0) { |
creerListeCommentaireRecursive(commentaire.getListeCommentaires()); |
} |
} |
} |
/** |
* Affiche un commentaire |
* @param commentaire |
*/ |
private void chargerCommentaire(Commentaire commentaire) { |
LigneCommentairePresenteur presenteurCommentaire = new LigneCommentairePresenteur(new LigneCommentaireVue(), commentaire); |
presenteurCommentaire.go(ligneCommentaire); |
} |
/** |
* Affiche un icone de début de chargement |
*/ |
@Override |
public void startChargement() { |
panneauChargement.setHeight((this.getOffsetHeight() / 2) + "px"); |
panneauChargement.setWidth((this.getOffsetWidth() / 2) + "px"); |
panneauChargement.setVisible(true); |
} |
/** |
* Cache l'icone de début de chargement |
*/ |
@Override |
public void stopChargement() { |
panneauChargement.setVisible(false); |
} |
/** |
* Affiche un message indiquant qu'il n'y a aucun commentaire à présenter |
*/ |
@Override |
public void afficherAucuneDonnees() { |
aucuneDonnees.setVisible(true); |
} |
} |
/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/commentaires/ligneCommentaire.css |
---|
New file |
0,0 → 1,25 |
.commentaire { |
font-size: 11px; |
background: #DDD; |
padding: 3px; |
margin-bottom:5px; |
} |
.auteur { |
padding-left:3px; |
float: left; |
font-size:11px; |
color:#AAA; |
font-style:italic; |
} |
.date { |
float: left; |
font-size:11px; |
color:#DDD; |
font-style:italic; |
} |
.date:before { |
content:", "; |
} |