Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1150 → Rev 1151

/trunk/src/org/tela_botanica/del/client/navigation/evenement/ajoutmotcleimage/GestionnaireEvenementAjoutMotCleImage.java
New file
0,0 → 1,7
package org.tela_botanica.del.client.navigation.evenement.ajoutmotcleimage;
 
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementAjoutMotCleImage extends EventHandler {
public void onAjoutMotCleImage(EvenementAjoutMotCleImage evenementAjoutMotCleImage);
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/ajoutmotcleimage/EvenementAjoutMotCleImage.java
New file
0,0 → 1,33
package org.tela_botanica.del.client.navigation.evenement.ajoutmotcleimage;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementAjoutMotCleImage extends GwtEvent<GestionnaireEvenementAjoutMotCleImage> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementAjoutMotCleImage> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementAjoutMotCleImage>();
private String idImage;
private String motCle;
 
public EvenementAjoutMotCleImage(String idImage, String motCle) {
this.idImage = idImage;
this.motCle = motCle;
}
 
@Override
protected void dispatch(GestionnaireEvenementAjoutMotCleImage handler) {
handler.onAjoutMotCleImage(this);
}
 
public String getIdImage() {
return idImage;
}
public String getMotCle() {
return motCle;
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementAjoutMotCleImage> getAssociatedType() {
return TYPE;
}
}
/trunk/src/org/tela_botanica/del/client/utils/UtilitairesServiceResultat.java
595,4 → 595,16
return observation;
}
 
public static List<String> parserRetourListeMotsClesImage(JSONObject retourJson) {
List<String> motsCles = new ArrayList<String>();
JSONObject tableauMc = retourJson;
if (tableauMc != null) {
java.util.Iterator<String> it = tableauMc.keySet().iterator();
while (it.hasNext()) {
JSONObject mc = tableauMc.get(it.next()).isObject();
motsCles.add(getValeurOuVide(mc, "mot_cle"));
}
}
return motsCles;
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/ResultatRechercheImagePresenteur.java
15,8 → 15,11
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.services.rest.ImageService;
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.ProtocoleService;
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback;
import org.tela_botanica.del.client.services.rest.async.ListeMotsClesImageCallBack;
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImagePresenteur;
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImageVue;
272,13 → 275,11
@Override
public void surRetour(ImageServiceResultat imagesRecues) {
afficherImages(imagesRecues);
 
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
 
}
 
};
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImageVue.ui.xml
9,10 → 9,14
<g:HTMLPanel styleName="{style.zoneDetail}">
<g:Label ui:field="enSavoirPlus" text=" " styleName="{style.enSavoirPlus}"/>
<g:Label ui:field="voirMotsCles" text=" " styleName="{style.voirMotsCles}"/>
<g:HTMLPanel styleName="{style.zoneCache}" ui:field="zoneCache">
<g:HTMLPanel ui:field="metadonnees" styleName="{style.metadonnees}"/>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.zoneMotsCles}" ui:field="zoneMotsCles">
<g:HTMLPanel ui:field="motsCles" styleName="{style.motsCles}"/>
</g:HTMLPanel>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.zoneImage}"><g:Image ui:field="imagePrincipale" resource='{res.logo}'/></g:HTMLPanel>
<g:HTMLPanel styleName="{style.zonePlus}" ui:field="zonePlus">
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImagePresenteur.java
1,6 → 1,7
package org.tela_botanica.del.client.vues.rechercheimages.resultats.images;
 
import java.util.HashMap;
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
9,6 → 10,10
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.motsclesimages.MotsClesImagePresenteur;
import org.tela_botanica.del.client.composants.motsclesimages.MotsClesImageVue;
import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImagePresenteur;
import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImageVue;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.composants.votefleur.VoteFleurPresenteur;
import org.tela_botanica.del.client.composants.votefleur.VoteFleurVue;
25,7 → 30,10
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementVoirDetailsImage;
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.services.rest.MotsClesService;
import org.tela_botanica.del.client.services.rest.MotsClesServiceConcret;
import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret;
import org.tela_botanica.del.client.services.rest.async.ListeMotsClesImageCallBack;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
69,6 → 77,14
public HasClickHandlers getNomEspece();
 
public HasWidgets getMetadonnees();
 
public HasClickHandlers getVoirMotsCles();
public HasWidgets getZoneMotsCles();
 
public void cacherZoneMotsCles();
 
public void afficherZoneMotsCles();
}
 
private Vue vue;
78,6 → 94,10
 
private Protocole protocole;
 
private boolean motsClesOuverts = false;
private MotsClesImagePresenteur motsClesImagePresenteur;
 
public ImagePresenteur(Image image, Protocole protocole, Vue vue) {
this.image = image;
this.protocole = protocole;
88,8 → 108,8
composite.add(vue.asWidget());
vue.loadImage(image);
new MetadonneesPresenteur(new MetadonneesVue(), image.getObservation(), ModeRecherche.MODE_IMAGE, true).go(vue.getMetadonnees());
motsClesImagePresenteur = new MotsClesImagePresenteur(new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImagePresenteur(image.getIdImage(), new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImageVue()), new MotsClesImageVue());
motsClesImagePresenteur.go(vue.getZoneMotsCles());
chargerDonneesValidation();
gererEvenements();
}
140,12 → 160,23
BusEvenementiel.getInstance().fireEvent(new EvenementVoirDetailsImage(image));
}
});
vue.getVoirMotsCles().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if(!motsClesOuverts) {
afficherPanneauMotsCles();
} else {
cacherPanneauMotsCles();
}
 
}
});
 
BusEvenementiel.getInstance().addHandler(EvenementVoirDetailsImage.TYPE, new GestionnaireEvenementVoirDetailsImage() {
@Override
public void onVoirDetailsImage(EvenementVoirDetailsImage event) {
if (image.getIdImage().equals(event.getImage().getIdImage())) {
 
if (!detailsOuverts) {
afficherDetails();
} else {
166,6 → 197,17
});
}
 
protected void afficherPanneauMotsCles() {
vue.afficherZoneMotsCles();
motsClesOuverts = true;
motsClesImagePresenteur.chargerMotsCles(image.getIdImage());
}
protected void cacherPanneauMotsCles() {
vue.cacherZoneMotsCles();
motsClesOuverts = false;
}
 
public void cacherDetails() {
vue.cacherZoneCache();
detailsOuverts = false;
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImageVue.java
36,13 → 36,13
protected HorizontalPanel voter;
 
@UiField
protected Panel zoneCache;
protected Panel zoneCache, zoneMotsCles;
 
@UiField
Image imagePrincipale;
 
@UiField
Label enSavoirPlus;
Label enSavoirPlus, voirMotsCles;
@UiField Panel metadonnees;
 
65,6 → 65,7
 
public void loadImage(org.tela_botanica.del.client.modeles.Image image) {
zoneCache.setVisible(false);
zoneMotsCles.setVisible(false);
nomEspece.setHTML("<p>"+image.getObservation().getNomRetenu()+"</p>");
nomAuteur.setHTML("<p>"+image.getObservation().getAuteur()+"</p>");
 
97,6 → 98,11
public HasClickHandlers getEnSavoirPlus() {
return enSavoirPlus;
}
@Override
public HasClickHandlers getVoirMotsCles() {
return voirMotsCles;
}
 
@Override
public void setUrlImagePrincipale(String url) {
141,4 → 147,19
public HasWidgets getMetadonnees() {
return metadonnees;
}
 
@Override
public void cacherZoneMotsCles() {
zoneMotsCles.setVisible(false);
}
 
@Override
public void afficherZoneMotsCles() {
zoneMotsCles.setVisible(true);
}
 
@Override
public HasWidgets getZoneMotsCles() {
return zoneMotsCles;
}
}
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/image.css
21,6 → 21,18
margin-top: 30px;
}
 
.zoneMotsCles {
position: absolute;
padding: 5px;
border: solid 1px #CCC;
background: #333;
opacity: 0.9;
color: white;
width: 250px;
z-index: 1000;
margin-top: 30px;
}
 
.enSavoirPlus {
position: absolute;
background: url(./img/ajouter.png) no-repeat;
31,6 → 43,16
margin-left: 3px;
}
 
.voirMotsCles {
position: absolute;
background: url(./img/loupe.png) no-repeat;
width: 30px;
height: 30px;
cursor: pointer;
margin-top: 3px;
margin-left: 216px;
}
 
.zoom {
background: url(./img/loupe.png);
width: 30px;
97,7 → 119,7
padding: 5px;
}
 
.metadonnees {
.metadonnees, .motsCles {
text-align: left;
}
 
/trunk/src/org/tela_botanica/del/client/services/rest/MotsClesService.java
New file
0,0 → 1,12
package org.tela_botanica.del.client.services.rest;
 
import org.tela_botanica.del.client.services.rest.async.AjoutMotsClesImageCallBack;
import org.tela_botanica.del.client.services.rest.async.ListeMotsClesImageCallBack;
 
public interface MotsClesService {
public void getMotsClesImage(String idImage, ListeMotsClesImageCallBack listeMotsClesImageCallBack);
public void ajouterMotCleImage(String idImage, String motCle, AjoutMotsClesImageCallBack ajoutMotsClesImageCallBack);
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/MotsClesServiceConcret.java
New file
0,0 → 1,64
package org.tela_botanica.del.client.services.rest;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.config.Config;
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.PHPCallback.ModeRequete;
 
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.URL;
 
public class MotsClesServiceConcret implements MotsClesService {
 
private String baseUrl;
public MotsClesServiceConcret() {
Config config = new Config();
this.baseUrl = config.getServiceBaseUrl();
}
public MotsClesServiceConcret(Config config) {
this.baseUrl = config.getServiceBaseUrl();
}
@Override
public void getMotsClesImage(String idImage,
ListeMotsClesImageCallBack callback) {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, baseUrl + "mots-cles" + assemblerChaineRequete(idImage));
callback.setMode(ModeRequete.LECTURE);
try {
rb.sendRequest(null, callback);
} catch (Exception e) {
// TODO: handle exception
}
}
private String assemblerChaineRequete(String idImage) {
String chaineRequete = "?masque.image="+idImage;
return chaineRequete;
}
 
@Override
public void ajouterMotCleImage(String idImage, String motCle,
AjoutMotsClesImageCallBack callback) {
String urlService = baseUrl+"mots-cles/";
RequestBuilder rb = new RequestBuilder(RequestBuilder.PUT, urlService);
callback.setMode(ModeRequete.AJOUT);
String chainePost = assemblerChaineRequeteAjout(idImage, motCle);
try {
rb.sendRequest(chainePost, callback);
} catch (Exception e) {
//TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ?
}
 
}
 
private String assemblerChaineRequeteAjout(String idImage, String motCle) {
return "image="+URL.encodeQueryString(idImage)+
"&mot_cle="+URL.encodeQueryString(motCle)+
"&"+URL.encodeQueryString("auteur.id")+"="+URL.encodeQueryString(CacheClient.getInstance().getUtilisateur().getId());
}
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/ListeMotsClesImageCallBack.java
New file
0,0 → 1,15
package org.tela_botanica.del.client.services.rest.async;
 
import java.util.List;
 
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
 
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.user.client.Window;
 
public abstract class ListeMotsClesImageCallBack extends PHPCallback<List<String>> {
@Override
public List<String> parserJSON(String retourService) {
return UtilitairesServiceResultat.parserRetourListeMotsClesImage(JSONParser.parseStrict(retourService).isObject().get("resultats").isObject());
}
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/AjoutMotsClesImageCallBack.java
New file
0,0 → 1,8
package org.tela_botanica.del.client.services.rest.async;
 
public abstract class AjoutMotsClesImageCallBack extends PHPCallback<Void> {
@Override
public Void parserJSON(String retourService) {
return null;
}
}
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImageVue.java
New file
0,0 → 1,49
package org.tela_botanica.del.client.composants.motsclesimages;
 
import java.util.Iterator;
import java.util.List;
 
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.HTMLPanel;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
public class MotsClesImageVue extends Composite implements MotsClesImagePresenteur.Vue {
@UiField
public Label motsCles;
@UiField
public Panel saisieMotsCles;
 
interface MyUiBinder extends UiBinder<Widget, MotsClesImageVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
public MotsClesImageVue() {
// sets listBox
initWidget(uiBinder.createAndBindUi(this));
}
 
@Override
public void afficherMotsCles(List<String> listeMotsCles) {
String chaine = "";
for (Iterator iterator = listeMotsCles.iterator(); iterator.hasNext();) {
String string = (String) iterator.next();
chaine += string+",";
}
motsCles.setText(chaine);
}
@Override
public HasWidgets getZoneSaisieMotsCles() {
return saisieMotsCles;
}
}
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/formulairesaisiemotclesimages/FormulaireMotsClesImage.css
--- src/org/tela_botanica/del/client/composants/motsclesimages/formulairesaisiemotclesimages/FormulaireSaisieMotsClesImageVue.ui.xml (revision 0)
+++ src/org/tela_botanica/del/client/composants/motsclesimages/formulairesaisiemotclesimages/FormulaireSaisieMotsClesImageVue.ui.xml (revision 1151)
@@ -0,0 +1,15 @@
+<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="FormulaireMotsClesImage.css" />
+
+ <g:HTMLPanel>
+ <g:TextBox ui:field="saisieMotsCles"></g:TextBox>
+ <g:Button text="{constants.ok}" ui:field="valider"></g:Button>
+ </g:HTMLPanel>
+</ui:UiBinder>
\ No newline at end of file
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/formulairesaisiemotclesimages/FormulaireSaisieMotsClesImagePresenteur.java
New file
0,0 → 1,75
package org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages;
 
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.ajoutmotcleimage.EvenementAjoutMotCleImage;
import org.tela_botanica.del.client.services.rest.MotsClesService;
import org.tela_botanica.del.client.services.rest.async.AjoutMotsClesImageCallBack;
 
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.event.dom.client.HasKeyPressHandlers;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
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 FormulaireSaisieMotsClesImagePresenteur {
private MotsClesService motsClesService;
private String idImage;
 
public interface Vue extends IsWidget {
public HasClickHandlers getBoutonValider();
public HasText getSaisieMotsCles();
public HasKeyPressHandlers getSaisieMotsClesHasKeyPressHandlers();
}
 
private Vue vue;
public FormulaireSaisieMotsClesImagePresenteur(String idImage, MotsClesService motsClesService, Vue vue) {
this.vue = vue;
this.motsClesService = motsClesService;
this.idImage = idImage;
gererEvenements();
}
public void go(HasWidgets composite) {
composite.add(vue.asWidget());
}
private void gererEvenements() {
vue.getBoutonValider().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
validerSaisie();
}
});
vue.getSaisieMotsClesHasKeyPressHandlers().addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
validerSaisie();
}
}
});
}
private void validerSaisie() {
if(vue.getSaisieMotsCles().getText() != null) {
motsClesService.ajouterMotCleImage(idImage, vue.getSaisieMotsCles().getText(), new AjoutMotsClesImageCallBack() {
@Override
public void surRetour(Void objetRetour) {
EvenementAjoutMotCleImage event = new EvenementAjoutMotCleImage(idImage, vue.getSaisieMotsCles().getText());
BusEvenementiel.getInstance().fireEvent(event);
}
});
}
}
 
public void viderChampSaisie() {
vue.getSaisieMotsCles().setText("");
}
}
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/formulairesaisiemotclesimages/FormulaireSaisieMotsClesImageVue.java
New file
0,0 → 1,47
package org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
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.HasText;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
 
public class FormulaireSaisieMotsClesImageVue extends Composite implements FormulaireSaisieMotsClesImagePresenteur.Vue {
@UiField
public TextBox saisieMotsCles;
@UiField
public Button valider;
 
interface MyUiBinder extends UiBinder<Widget, FormulaireSaisieMotsClesImageVue> {
}
 
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
 
public FormulaireSaisieMotsClesImageVue() {
// sets listBox
initWidget(uiBinder.createAndBindUi(this));
}
 
@Override
public HasClickHandlers getBoutonValider() {
return valider;
}
@Override
public HasText getSaisieMotsCles() {
return saisieMotsCles;
}
@Override
public HasKeyPressHandlers getSaisieMotsClesHasKeyPressHandlers() {
return saisieMotsCles;
}
}
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImage.css
--- src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImageVue.ui.xml (revision 0)
+++ src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImageVue.ui.xml (revision 1151)
@@ -0,0 +1,18 @@
+<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="MotsClesImage.css" />
+ <g:HTMLPanel>
+ <g:HTMLPanel>
+ <g:Label ui:field="motsCles"></g:Label>
+ </g:HTMLPanel>
+ <g:HTMLPanel>
+ <g:HTMLPanel ui:field="saisieMotsCles"></g:HTMLPanel>
+ </g:HTMLPanel>
+ </g:HTMLPanel>
+</ui:UiBinder>
\ No newline at end of file
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImagePresenteur.java
New file
0,0 → 1,73
package org.tela_botanica.del.client.composants.motsclesimages;
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.modeles.InformationsRecherche;
import org.tela_botanica.del.client.modeles.ModeTri;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
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.services.rest.MotsClesService;
import org.tela_botanica.del.client.services.rest.MotsClesServiceConcret;
import org.tela_botanica.del.client.services.rest.async.ListeMotsClesImageCallBack;
 
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 {
List<String> motsCles;
FormulaireSaisieMotsClesImagePresenteur formulaireSaisieMotsClesPresenteur;
MotsClesService motsClesService;
String idImage;
public interface Vue extends IsWidget {
public void afficherMotsCles(List<String> listeMotsCles);
HasWidgets getZoneSaisieMotsCles();
}
 
private Vue vue;
public MotsClesImagePresenteur(MotsClesService motsClesService, FormulaireSaisieMotsClesImagePresenteur formulaireSaisieMotsClesPresenteur, Vue vue) {
this.formulaireSaisieMotsClesPresenteur = formulaireSaisieMotsClesPresenteur;
this.vue = vue;
this.motsClesService = motsClesService;
gererEvemenements();
}
public void go(HasWidgets composite) {
formulaireSaisieMotsClesPresenteur.go(vue.getZoneSaisieMotsCles());
composite.add(vue.asWidget());
}
 
public void chargerMotsCles(String idImage) {
this.idImage = idImage;
if(motsCles == null) {
MotsClesService motsClesService = new MotsClesServiceConcret();
motsClesService.getMotsClesImage(idImage, new ListeMotsClesImageCallBack() {
@Override
public void surRetour(List<String> objetRetour) {
motsCles = objetRetour;
vue.afficherMotsCles(motsCles);
}
});
}
}
public void gererEvemenements() {
BusEvenementiel.getInstance().addHandler(EvenementAjoutMotCleImage.TYPE, new GestionnaireEvenementAjoutMotCleImage() {
@Override
public void onAjoutMotCleImage(EvenementAjoutMotCleImage event) {
if(idImage != null && idImage.equals(event.getIdImage())) {
motsCles.add(event.getMotCle());
vue.afficherMotsCles(motsCles);
formulaireSaisieMotsClesPresenteur.viderChampSaisie();
}
}
});
}
}