Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 2170 → Rev 2171

/branches/v1.11-magnesium/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.11-magnesium/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.11-magnesium/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.11-magnesium/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.11-magnesium/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:", ";
}
/branches/v1.11-magnesium/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.11-magnesium/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.11-magnesium/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() {
}
 
}