package fr.openwide.core.wicket.more.console.maintenance.ehcache.component;
import net.sf.ehcache.Cache;
import org.apache.wicket.Component;
import org.apache.wicket.Session;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.openwide.core.wicket.more.console.maintenance.ehcache.model.EhCacheCacheInformation;
import fr.openwide.core.wicket.more.markup.html.feedback.FeedbackUtils;
import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.bootstrap.modal.component.AbstractAjaxModalPopupPanel;
import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.bootstrap.modal.component.DelegatedMarkupPanel;
import fr.openwide.core.wicket.more.model.BindingModel;
import fr.openwide.core.wicket.more.util.binding.CoreWicketMoreBindings;
public class EhCacheCacheModificationPanel extends AbstractAjaxModalPopupPanel<EhCacheCacheInformation> {
private static final long serialVersionUID = 2798613803910080178L;
private static final Logger LOGGER = LoggerFactory.getLogger(EhCacheCacheModificationPanel.class);
private Form<Cache> cacheForm;
private TextField<Long> maxSizeField;
private Component parent;
public EhCacheCacheModificationPanel(String id, IModel<EhCacheCacheInformation> cacheModel, Component parent) {
super(id, cacheModel);
this.parent = parent;
}
@Override
protected Component createHeader(String wicketId) {
return new Label(wicketId, BindingModel.of(getModel(), CoreWicketMoreBindings.ehCacheCacheInformation().name()));
}
@Override
protected Component createBody(String wicketId) {
DelegatedMarkupPanel body = new DelegatedMarkupPanel(wicketId, EhCacheCacheModificationPanel.class);
cacheForm = new Form<Cache>("cacheForm");
maxSizeField = new TextField<Long>("maxSize", BindingModel.of(getModel(),
CoreWicketMoreBindings.ehCacheCacheInformation().maxElementsInMemory()));
maxSizeField.setLabel(new ResourceModel("console.maintenance.ehcache.portfolio.max"));
cacheForm.add(maxSizeField);
body.add(cacheForm);
return body;
}
@Override
protected Component createFooter(String wicketId) {
DelegatedMarkupPanel footer = new DelegatedMarkupPanel(wicketId, EhCacheCacheModificationPanel.class);
// Bouton valider
AjaxButton valider = new AjaxButton("validerModificationCache", cacheForm) {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
try {
Long maxSize = maxSizeField.getModelObject();
EhCacheCacheModificationPanel.this.getModelObject().setMaxElementsInMemory(maxSize);
Session.get().success(getString("console.maintenance.ehcache.cacheManager.cache.message.ok"));
closePopup(target);
target.add(parent);
} catch (Exception e) {
LOGGER.error("Erreur lors de la modification d'un cache.", e);
Session.get().error(getString("console.maintenance.ehcache.cacheManager.cache.message.erreur"));
}
FeedbackUtils.refreshFeedback(target, getPage());
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
FeedbackUtils.refreshFeedback(target, getPage());
}
};
footer.add(valider);
// Bouton annuler
AbstractLink annuler = new AbstractLink("annulerModificationCache"){
private static final long serialVersionUID = 1L;
};
addCancelBehavior(annuler);
footer.add(annuler);
return footer;
}
@Override
public IModel<String> getCssClassNamesModel() {
return Model.of("modal-ehcache-modification");
}
}