New file |
0,0 → 1,112 |
package org.tela_botanica.client.vues.publication; |
|
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.modeles.publication.Publication; |
import org.tela_botanica.client.modeles.publication.PublicationAsyncDao; |
|
import com.extjs.gxt.ui.client.Registry; |
import com.extjs.gxt.ui.client.Style.HorizontalAlignment; |
import com.extjs.gxt.ui.client.widget.ContentPanel; |
import com.extjs.gxt.ui.client.widget.HorizontalPanel; |
import com.extjs.gxt.ui.client.widget.Html; |
import com.extjs.gxt.ui.client.widget.LayoutContainer; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.google.gwt.core.client.Callback; |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONValue; |
import com.google.gwt.user.client.ui.Button; |
import com.google.gwt.user.client.ui.FileUpload; |
import com.google.gwt.user.client.ui.FormPanel; |
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent; |
import com.google.gwt.user.client.ui.FormPanel.SubmitEvent; |
import com.google.gwt.user.client.ui.Hidden; |
import com.google.gwt.user.client.ui.VerticalPanel; |
|
public abstract class PublicationImportForm extends LayoutContainer { |
|
private Mediateur mediateurCourant = null; |
|
public PublicationImportForm(Mediateur mediateurCourant) { |
this.mediateurCourant= mediateurCourant; |
|
final FormPanel form = new FormPanel(); |
form.setAction(PublicationAsyncDao.getUrlImport()); |
|
form.setEncoding(FormPanel.ENCODING_MULTIPART); |
form.setMethod(FormPanel.METHOD_POST); |
|
VerticalPanel panel = new VerticalPanel(); |
form.setWidget(panel); |
|
FileUpload upload = new FileUpload(); |
upload.setName("import_publication"); |
panel.add(upload); |
|
Hidden typeUpload = new Hidden("type", "publication"); |
Hidden utilisateur = new Hidden("ce_utilisateur", ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId()); |
|
panel.add(typeUpload); |
panel.add(utilisateur); |
|
HorizontalPanel boutonsPanel = new HorizontalPanel(); |
|
boutonsPanel.add(new Button(Mediateur.i18nC.importer(), new ClickHandler() { |
public void onClick(ClickEvent event) { |
form.submit(); |
} |
})); |
|
boutonsPanel.add(new Button(Mediateur.i18nC.annuler(), new ClickHandler() { |
public void onClick(ClickEvent event) { |
surClicAnnuler(); |
} |
})); |
|
form.addSubmitHandler(new FormPanel.SubmitHandler() { |
@Override |
public void onSubmit(SubmitEvent event) { |
surSoumissionFormulaire(event); |
} |
}); |
|
form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() { |
@Override |
public void onSubmitComplete(SubmitCompleteEvent event) { |
String resultat = event.getResults(); |
// Le formulaire est envoyé à travers un iframe caché, ce qui pose problème |
// à certains navigateurs pour lire le retour |
// si rien n'est renvoyé, on demande les stats d'upload au service par une autre requête |
if(resultat == null || resultat.isEmpty()) { |
PublicationAsyncDao.demanderStatistiquesDernierImport(new Callback<JSONValue, String>() { |
|
@Override |
public void onSuccess(JSONValue result) { |
surFormulaireEnvoye(result); |
} |
|
@Override |
public void onFailure(String reason) { |
// TODO Auto-generated method stub |
} |
}); |
} else { |
JSONValue responseValue = JSONParser.parseStrict(resultat); |
surFormulaireEnvoye(responseValue); |
} |
} |
}); |
|
Html indicationImportForm = new Html("<div id=\"indication_import_csv\"><a target=\"_blank\" href=\"documents/import_publications.csv\">"+Mediateur.i18nC.telechargerModeleImportPubli()+"</a><br />"); |
|
add(indicationImportForm); |
add(form); |
add(boutonsPanel); |
} |
|
public abstract void surSoumissionFormulaire(SubmitEvent event); |
public abstract void surFormulaireEnvoye(JSONValue reponse); |
public abstract void surClicAnnuler(); |
} |