Rev 1162 | Blame | Last modification | View Log | RSS feed
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();
public void focuserChampSaisie();
}
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() {
String texte = vue.getSaisieMotsCles().getText();
if(texte != null && !texte.isEmpty()) {
motsClesService.ajouterMotCleImage(idImage, vue.getSaisieMotsCles().getText(), new AjoutMotsClesImageCallback() {
@Override
public void surRetour(Void objetRetour) {
EvenementAjoutMotCleImage event = new EvenementAjoutMotCleImage(idImage);
BusEvenementiel.getInstance().fireEvent(event);
}
});
}
}
public void viderChampSaisie() {
vue.getSaisieMotsCles().setText("");
}
public void focuserChampSaisie() {
vue.focuserChampSaisie();
}
}