/trunk/src/org/tela_botanica/del/client/vues/pictoflora/resultats/images/ImagePresenteur.java |
---|
6,6 → 6,8 |
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.images.DetailImagePresenteur; |
import org.tela_botanica.del.client.composants.images.DetailImageVue; |
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur; |
25,6 → 27,10 |
import org.tela_botanica.del.client.modeles.Protocole; |
import org.tela_botanica.del.client.modeles.VoteProtocole; |
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.navigation.evenement.ajoutmotcleimage.EvenementAjoutMotCleImage; |
import org.tela_botanica.del.client.navigation.evenement.ajoutmotcleimage.GestionnaireEvenementAjoutMotCleImage; |
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole; |
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.GestionnaireEvenementChangementProtocole; |
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementVoirDetailsImage; |
31,6 → 37,7 |
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.GestionnaireEvenementVoirDetailsImage; |
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation; |
import org.tela_botanica.del.client.navigation.evenement.validationobservationpictoflora.EvenementValidationPictoflora; |
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret; |
import org.tela_botanica.del.client.services.rest.MotsClesService; |
import org.tela_botanica.del.client.services.rest.MotsClesServiceConcret; |
import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret; |
112,8 → 119,6 |
composite.add(vue.asWidget()); |
vue.loadImage(image); |
new MetadonneesPresenteur(new MetadonneesVue(), image.getObservation(), ModeRecherche.MODE_IMAGE, true).go(vue.getMetadonnees()); |
motsClesImagePresenteur = new MotsClesImagePresenteur(image, new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImagePresenteur(image.getIdImage(), new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImageVue()), new MotsClesImageVue()); |
motsClesImagePresenteur.go(vue.getZoneMotsCles()); |
chargerDonneesValidation(); |
gererEvenements(); |
} |
153,15 → 158,18 |
} |
}); |
final FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
vue.getVoirMotsCles().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
if(!motsClesOuverts) { |
afficherPanneauMotsCles(); |
} else { |
cacherPanneauMotsCles(); |
} |
CacheClient.getInstance().setImageCourante(image); |
motsClesImagePresenteur = new MotsClesImagePresenteur(image, new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImagePresenteur(image.getIdImage(), |
new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImageVue()), new MotsClesImageVue()); |
motsClesImagePresenteur.chargerMotsCles(); |
fenetreOverlaySimplePresenteur.ouvrirFenetreModale(motsClesImagePresenteur); |
} |
}); |
194,6 → 202,15 |
chargerDonneesValidation(); |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementAjoutMotCleImage.TYPE, new GestionnaireEvenementAjoutMotCleImage() { |
@Override |
public void onAjoutMotCleImage( |
EvenementAjoutMotCleImage evenementAjoutMotCleImage) { |
fenetreOverlaySimplePresenteur.fermerFenetreModale(); |
} |
}); |
} |
protected void afficherPanneauMotsCles() { |
/trunk/src/org/tela_botanica/del/client/config/Config.java |
---|
44,6 → 44,7 |
urls.put("ouvragesFlore", configuration.get("ouvragesFloreUrl")); |
urls.put("clesDetermination", configuration.get("clesDeterminationUrl")); |
urls.put("rss", configuration.get("rssUrl")); |
urls.put("iconeBaseUrl", configuration.get("iconeTagBaseUrl")); |
infos.put("motsclescel", configuration.get("motsClesListe")); |
} |
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImage.css |
---|
17,4 → 17,27 |
.panneauSaisieMotsCles { |
margin-bottom: 3px; |
padding-top:30px; |
} |
.fenetreMotsCles { |
z-index:1500; |
padding: 5px 10px 10px 30px; |
width:800px; |
background:white; |
margin:0 auto; |
margin-top:5%; |
} |
.colonneDroite { |
margin-left:20px; |
} |
.zoneIconesMotsCles { |
padding:5px; |
width:400px; |
} |
.listeMotsClesExistants { |
max-width:350px; |
} |
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/motcle/MotCle.css |
---|
5,7 → 5,7 |
.motCle { |
border: 1px solid grey; |
background-color: #555; |
background-color: #DDD; |
padding: 2px; |
line-height: 25px; |
border-radius:5px; |
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImageVue.ui.xml |
---|
1,22 → 1,31 |
<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:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'> |
<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="MotsClesImage.css" /> |
<g:HTMLPanel> |
<g:HTML styleName="{style.titrePanneau}" text="{constants.motsCles}"></g:HTML> |
<g:HTMLPanel> |
<g:HTMLPanel styleName="{style.panneauSaisieMotsCles}" ui:field="saisieMotsCles"></g:HTMLPanel> |
<g:HTMLPanel styleName="{style.fenetreMotsCles}"> |
<g:Label text="Saisir des mots clés" styleName="titre"/> |
<g:Image ui:field="image" styleName="gauche" /> |
<g:HTMLPanel styleName="gauche {style.colonneDroite}"> |
<g:HTML styleName="{style.titrePanneau}" text="{constants.motsCles}"></g:HTML> |
<g:HTMLPanel ui:field="zoneIconesMotsCles" styleName="{style.zoneIconesMotsCles}"> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="nettoyage"> |
<g:HTMLPanel styleName="{style.panneauSaisieMotsCles}" ui:field="saisieMotsCles"></g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.listeMotsClesExistants}"> |
<g:HTMLPanel> |
<g:HTMLPanel styleName="gwt-HTML" ui:field="motsClesCel"></g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel> |
<g:HTMLPanel styleName="gwt-HTML" ui:field="motsCles"></g:HTMLPanel> |
</g:HTMLPanel> |
</g:HTMLPanel> |
<g:Button ui:field="validerMotsCles">Valider l'ajout des mots clés et fermer la fenetre</g:Button> |
</g:HTMLPanel> |
<g:HTMLPanel> |
<g:HTMLPanel styleName="gwt-HTML" ui:field="motsClesCel"></g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel> |
<g:HTMLPanel styleName="gwt-HTML" ui:field="motsCles"></g:HTMLPanel> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="nettoyage"></g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/propositions/MotClePropositionPresenteur.java |
---|
New file |
0,0 → 1,80 |
package org.tela_botanica.del.client.composants.motsclesimages.propositions; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import com.google.gwt.core.shared.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.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class MotClePropositionPresenteur extends Presenteur{ |
public interface Vue extends IsWidget { |
public void setMotCle(String motcle); |
public HasClickHandlers getLienMotCle(); |
public void toggleCb(); |
public boolean estAAjouter(); |
public void setEstAAjouter(); |
public HasClickHandlers getAjouterMotCle(); |
} |
private Vue vue; |
private String motcle; |
public MotClePropositionPresenteur(Vue vue, String motCle) { |
this.vue = vue; |
this.motcle = motCle; |
vue.setMotCle(motCle); |
} |
@Override |
public void go(HasWidgets composite) { |
composite.add(vue.asWidget()); |
gererEvenements(); |
} |
@Override |
protected void gererEvenements() { |
/* Attention : dans la gestion des évènements, comme la case à cocher est contenu dans |
* le lien Mot Cle, lorsque je clique sur la case directement, l'application : |
* - change la valeur de la case suite à l'évènement sur la case |
* - rechange la valeur de la case suite à l'évènement sur le lien |
* Il est donc impossible de changer la valeur de la case ! |
* |
* La solution consiste à ajouter un changement de valeur lorsqu'on clique sur la case : |
*/ |
vue.getAjouterMotCle().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
vue.toggleCb(); |
} |
}); |
// Ajout du changement de valeur de la case lors du clic sur la case |
vue.getLienMotCle().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
vue.toggleCb(); |
} |
}); |
} |
public boolean estAAjouter() { |
return vue.estAAjouter(); |
} |
public void setEstAAjouter() { |
vue.setEstAAjouter(); |
} |
public String getTag() { |
return this.motcle; |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/propositions/MotClePropositionVue.java |
---|
New file |
0,0 → 1,61 |
package org.tela_botanica.del.client.composants.motsclesimages.propositions; |
import org.tela_botanica.del.client.config.Config; |
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.ui.CheckBox; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.FocusPanel; |
import com.google.gwt.user.client.ui.Image; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
public class MotClePropositionVue extends Composite implements MotClePropositionPresenteur.Vue { |
@UiField |
CheckBox ajouterMotCle; |
@UiField |
Image iconeTag; |
@UiField |
FocusPanel lienMotCle; |
interface MyUiBinder extends UiBinder<Widget, MotClePropositionVue> {} |
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); |
public MotClePropositionVue() { |
// sets listBox |
initWidget(uiBinder.createAndBindUi(this)); |
} |
@Override |
public void setMotCle(String motcle) { |
ajouterMotCle.setText(motcle); |
iconeTag.setUrl((new Config()).getUrl("iconeBaseUrl") + motcle + ".png"); |
} |
public HasClickHandlers getLienMotCle() { |
return lienMotCle; |
} |
public void toggleCb() { |
boolean val = ajouterMotCle.getValue(); |
ajouterMotCle.setValue(!ajouterMotCle.getValue()); |
} |
public boolean estAAjouter() { |
return ajouterMotCle.getValue(); |
} |
public void setEstAAjouter() { |
ajouterMotCle.setValue(true); |
} |
public HasClickHandlers getAjouterMotCle() { |
return ajouterMotCle; |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/propositions/MotCleProposition.css |
---|
New file |
0,0 → 1,23 |
.logoTag { |
width:30px; |
height:30px; |
margin:0 5px; |
} |
.motCle { |
width:80px; |
margin:5px; |
} |
.lienMotCle { |
background: none repeat scroll 0 0 #DDDDDD; |
border-radius: 9px 9px 9px 9px; |
height: 40px; |
margin: 2px; |
padding: 3px; |
width: 120px; |
} |
.lienMotCle:hover { |
background: #AAA; |
} |
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/propositions/MotClePropositionVue.ui.xml |
---|
New file |
0,0 → 1,14 |
<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:generateLocales="default"> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" /> |
<ui:style src="MotCleProposition.css" /> |
<g:FocusPanel styleName="{style.lienMotCle} gauche" ui:field="lienMotCle"> |
<g:HTMLPanel> |
<g:CheckBox ui:field="ajouterMotCle" text="motcle" styleName=" {style.motCle}"></g:CheckBox> |
<g:Image styleName="{style.logoTag}" ui:field="iconeTag"/> |
</g:HTMLPanel> |
</g:FocusPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImagePresenteur.java |
---|
1,17 → 1,20 |
package org.tela_botanica.del.client.composants.motsclesimages; |
import java.util.ArrayList; |
import java.util.Iterator; |
import java.util.List; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImagePresenteur; |
import org.tela_botanica.del.client.composants.motsclesimages.motcle.MotClePresenteur; |
import org.tela_botanica.del.client.composants.motsclesimages.motcle.MotCleVue; |
import org.tela_botanica.del.client.composants.motsclesimages.propositions.MotClePropositionPresenteur; |
import org.tela_botanica.del.client.composants.motsclesimages.propositions.MotClePropositionVue; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.config.Config; |
import org.tela_botanica.del.client.i18n.I18n; |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.MotCle; |
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.ajoutmotcleimage.EvenementAjoutMotCleImage; |
import org.tela_botanica.del.client.navigation.evenement.ajoutmotcleimage.GestionnaireEvenementAjoutMotCleImage; |
import org.tela_botanica.del.client.navigation.evenement.supressionmotcleimage.EvenementSuppressionMotCleImage; |
18,122 → 21,235 |
import org.tela_botanica.del.client.navigation.evenement.supressionmotcleimage.GestionnaireEvenementSuppressionMotCleImage; |
import org.tela_botanica.del.client.services.rest.MotsClesService; |
import org.tela_botanica.del.client.services.rest.MotsClesServiceConcret; |
import org.tela_botanica.del.client.services.rest.async.AjoutMotsClesImageCallback; |
import org.tela_botanica.del.client.services.rest.async.ListeMotsClesImageCallBack; |
import org.tela_botanica.del.client.services.rest.async.SuppressionMotCleImageCallback; |
import org.tela_botanica.del.client.utils.StringUtils; |
import com.google.gwt.core.shared.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.user.client.Window; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class MotsClesImagePresenteur { |
public class MotsClesImagePresenteur extends Presenteur { |
Image image; |
List<MotCle> motsCles; |
List<String> motClesCelAFiltrer; |
FormulaireSaisieMotsClesImagePresenteur formulaireSaisieMotsClesPresenteur; |
final List<MotClePropositionPresenteur> presenteursMotsCles = new ArrayList<MotClePropositionPresenteur>(); |
MotsClesService motsClesService; |
Image image; |
int nbRetours = 0; |
int retourCourant = 0; |
//Déclaration de la vue |
public interface Vue extends IsWidget { |
public HasWidgets getZoneMotsCles(); |
HasWidgets getZoneSaisieMotsCles(); |
void viderZoneMotsCles(); |
HasWidgets getZoneMotsClesCel(); |
public void afficherMotsClesCel(List<String> motsClesCelImages, List<String> motClesCelAFiltrer); |
public void setImage(String url); |
public HasWidgets getZoneIconesMotsCles(); |
public HasClickHandlers getValiderMotCles(); |
} |
private Vue vue; |
public MotsClesImagePresenteur(Image image ,MotsClesService motsClesService, FormulaireSaisieMotsClesImagePresenteur formulaireSaisieMotsClesPresenteur, Vue vue) { |
// Constructeur de l'application |
public MotsClesImagePresenteur(Image image, MotsClesService motsClesService, FormulaireSaisieMotsClesImagePresenteur formulaireSaisieMotsClesPresenteur, Vue vue) { |
this.formulaireSaisieMotsClesPresenteur = formulaireSaisieMotsClesPresenteur; |
this.vue = vue; |
this.motsClesService = motsClesService; |
this.image = image; |
vue.setImage(image.getUrl()); |
initialiserMotsClesCelAFiltrer(); |
gererEvemenements(); |
afficherMotsClesCel(); |
gererEvenements(); |
} |
//Afficher la vue |
public void go(HasWidgets composite) { |
formulaireSaisieMotsClesPresenteur.go(vue.getZoneSaisieMotsCles()); |
composite.add(vue.asWidget()); |
} |
protected boolean cocherMotClePropositionPresenteur(String motcle) { |
boolean motCleCoche = false; |
for (MotClePropositionPresenteur presenteurCourant : presenteursMotsCles) { |
String tagCourant = presenteurCourant.getTag(); |
if (tagCourant.equals(motcle)) { |
presenteurCourant.setEstAAjouter(); |
motCleCoche = true; |
} |
} |
return motCleCoche; |
} |
//Charger les mots clés à l'aide du service |
public void chargerMotsCles() { |
if(motsCles == null) { |
if (motsCles == null) { |
vue.viderZoneMotsCles(); |
MotsClesService motsClesService = new MotsClesServiceConcret(); |
motsClesService.getMotsClesImage(image.getIdImage(), new ListeMotsClesImageCallBack() { |
@Override |
public void surRetour(List<MotCle> objetRetour) { |
motsCles = objetRetour; |
afficherMotsCles(objetRetour); |
} |
}); |
motsClesService.getMotsClesImage(image.getIdImage(), |
new ListeMotsClesImageCallBack() { |
@Override |
public void surRetour(List<MotCle> objetRetour) { |
motsCles = objetRetour; |
afficherMotsCles(objetRetour); |
} |
}); |
} |
} |
public void gererEvemenements() { |
BusEvenementiel.getInstance().addHandler(EvenementAjoutMotCleImage.TYPE, new GestionnaireEvenementAjoutMotCleImage() { |
@Override |
public void onAjoutMotCleImage(EvenementAjoutMotCleImage event) { |
if(image != null && image.getIdImage() != null && image.getIdImage().equals(event.getIdImage())) { |
motsCles = null; |
chargerMotsCles(); |
formulaireSaisieMotsClesPresenteur.viderChampSaisie(); |
} |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementSuppressionMotCleImage.TYPE, new GestionnaireEvenementSuppressionMotCleImage() { |
@Override |
public void onSuppressionMotCleImage(EvenementSuppressionMotCleImage event) { |
if(image != null && image.getIdImage() != null && image.getIdImage().equals(event.getIdImage())) { |
motsCles = null; |
chargerMotsCles(); |
} |
} |
}); |
} |
public void afficherMotsCles(List<MotCle> listeMotsCles) { |
protected void afficherMotsCles(List<MotCle> listeMotsCles) { |
this.motsCles = listeMotsCles; |
nbRetours = listeMotsCles.size(); |
Object[] tabMotsCles = motsCles.toArray(); |
for (int i = 0; i < motsCles.toArray().length; i++) { |
MotCle motCleEnCours = (MotCle)tabMotsCles[i]; |
MotClePresenteur mcP = new MotClePresenteur(new MotCleVue(motCleEnCours.getMotCle()), motCleEnCours.getMotCle(), motCleEnCours.getIdMotCle()) { |
public void surSuppression(String idMotCle) { |
if(Window.confirm(I18n.getVocabulary().indiceSupprimerMotCle()+" ?")) { |
motsClesService.supprimerMotCleImage(idMotCle, new SuppressionMotCleImageCallback() { |
@Override |
public void surRetour(String objetRetour) { |
motsCles = null; |
chargerMotsCles(); |
} |
}); |
} |
MotCle motCleEnCours = (MotCle) tabMotsCles[i]; |
if (!cocherMotClePropositionPresenteur(motCleEnCours.getMotCle())) { |
MotClePresenteur mcP = new MotClePresenteur(new MotCleVue(motCleEnCours.getMotCle()), motCleEnCours.getMotCle(), motCleEnCours.getIdMotCle()) { |
public void surSuppression(String idMotCle) { |
if (Window.confirm(I18n.getVocabulary().indiceSupprimerMotCle() + " ?")) { |
motsClesService.supprimerMotCleImage(idMotCle, new SuppressionMotCleImageCallback() { |
@Override |
public void surRetour(String objetRetour) { |
motsCles = null; |
chargerMotsCles(); |
} |
}); |
} |
}; |
}; |
}; |
mcP.go(vue.getZoneMotsCles()); |
mcP.go(vue.getZoneMotsCles()); |
} |
} |
} |
public void afficherMotsClesCel() { |
protected void afficherMotsClesCel() { |
List<String> motsClesCelImages = image.getMotsClefs(); |
vue.afficherMotsClesCel(motsClesCelImages, motClesCelAFiltrer); |
} |
// Mettre le focus sur le champ de saisie, appelé par le module pictoflora |
public void focuserChampsSaisie() { |
formulaireSaisieMotsClesPresenteur.focuserChampSaisie(); |
} |
private void initialiserMotsClesCelAFiltrer() { |
protected void initialiserMotsClesCelAFiltrer() { |
Config config = new Config(); |
String chaineMotsClesCelAFiltrer = config.getInfo("motsclescel"); |
this.motClesCelAFiltrer = new ArrayList<String>(); |
String[] tabMotsClesCelAFiltrer = chaineMotsClesCelAFiltrer.split(","); |
for (int i = 0; i < tabMotsClesCelAFiltrer.length; i++) { |
this.motClesCelAFiltrer.add(StringUtils.normaliser(tabMotsClesCelAFiltrer[i])); |
String motCle = StringUtils.normaliser(tabMotsClesCelAFiltrer[i]); |
this.motClesCelAFiltrer.add(motCle); |
// ajouter à la vue |
MotClePropositionPresenteur presenteurMotCle = new MotClePropositionPresenteur(new MotClePropositionVue(), motCle); |
presenteurMotCle.go(vue.getZoneIconesMotsCles()); |
presenteursMotsCles.add(presenteurMotCle); |
} |
} |
/*** |
* trouver le mot cle dans les mots clés d'origine |
* @param String motcle le mot à chercher |
* @return MotCle l'objet trouvé |
**/ |
protected MotCle trouverMotCleDorigine(String motCle) { |
MotCle motCleRetour = null; |
for (MotCle motCleCourant : motsCles) { |
String tagCourant = motCleCourant.getMotCle(); |
if (tagCourant.equals(motCle)) { |
motCleRetour = motCleCourant; |
} |
} |
return motCleRetour; |
} |
protected void gererRetour() { |
GWT.log("retour" + retourCourant); |
retourCourant++; |
if (nbRetours == retourCourant) { |
BusEvenementiel.getInstance().fireEvent(new EvenementAjoutMotCleImage(image.getIdImage())); |
} |
} |
//Gérer les évènements |
protected void gererEvenements() { |
BusEvenementiel.getInstance().addHandler(EvenementAjoutMotCleImage.TYPE, new GestionnaireEvenementAjoutMotCleImage() { |
@Override |
public void onAjoutMotCleImage(EvenementAjoutMotCleImage event) { |
if (image != null && image.getIdImage() != null && image.getIdImage().equals(event.getIdImage())) { |
motsCles = null; |
chargerMotsCles(); |
formulaireSaisieMotsClesPresenteur.viderChampSaisie(); |
} |
} |
}); |
BusEvenementiel.getInstance().addHandler(EvenementSuppressionMotCleImage.TYPE, new GestionnaireEvenementSuppressionMotCleImage() { |
@Override |
public void onSuppressionMotCleImage( |
EvenementSuppressionMotCleImage event) { |
if (image != null && image.getIdImage() != null && image.getIdImage().equals(event.getIdImage())) { |
motsCles = null; |
chargerMotsCles(); |
} |
} |
}); |
vue.getValiderMotCles().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
MotsClesService motsClesService = new MotsClesServiceConcret(); |
// récupérer les valeur de toutes les cases à cocher |
for (MotClePropositionPresenteur presenteur : presenteursMotsCles) { |
if (presenteur.estAAjouter()) { |
String tag = presenteur.getTag(); |
motsClesService.ajouterMotCleImage(image.getIdImage(), tag, new AjoutMotsClesImageCallback() { |
@Override |
public void surRetour(Void objetRetour) { |
//gererRetour(); |
} |
}); |
} else { |
// il faut vérifier que le mot clé est à supprimer |
String tag = presenteur.getTag(); |
MotCle motcle = trouverMotCleDorigine(tag); |
if (motcle != null) { |
motsClesService.supprimerMotCleImage(motcle.getIdMotCle(), new SuppressionMotCleImageCallback() { |
@Override |
public void surRetour(String objetRetour) { |
//gererRetour(); |
} |
}); |
} |
} |
} |
} |
}); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImageVue.java |
---|
6,11 → 6,14 |
import org.tela_botanica.del.client.utils.StringUtils; |
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.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.HasWidgets; |
import com.google.gwt.user.client.ui.Image; |
import com.google.gwt.user.client.ui.InlineHTML; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.Widget; |
18,14 → 21,14 |
public class MotsClesImageVue extends Composite implements MotsClesImagePresenteur.Vue { |
@UiField |
public Panel motsCles; |
Panel motsCles, motsClesCel, saisieMotsCles, zoneIconesMotsCles; |
@UiField |
Image image; |
@UiField |
public Panel motsClesCel; |
Button validerMotsCles; |
@UiField |
public Panel saisieMotsCles; |
interface MyUiBinder extends UiBinder<Widget, MotsClesImageVue> { |
} |
67,7 → 70,22 |
HTML motCle = new InlineHTML(mot); |
motCle.setStyleName("motCleCel"); |
motsClesCel.add(motCle); |
} |
} |
} |
@Override |
public void setImage(String url) { |
image.setUrl(url); |
} |
@Override |
public HasWidgets getZoneIconesMotsCles() { |
return zoneIconesMotsCles; |
} |
public HasClickHandlers getValiderMotCles() { |
return validerMotsCles; |
} |
} |