package org.github.etcd.viewer.html.modal;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.EventPropagation;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.model.IModel;
public class TriggerModalLink<T> extends AjaxLink<T> {
private static final long serialVersionUID = 1L;
private final GenericModalPanel<?> targetModal;
public TriggerModalLink(String id, IModel<T> model, GenericModalPanel<?> targetModal) {
super(id, model);
this.targetModal = targetModal;
}
public TriggerModalLink(String id, GenericModalPanel<?> targetModal) {
super(id);
this.targetModal = targetModal;
}
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
tag.put("data-toggle", "modal");
tag.put("data-target", "#" + targetModal.getMarkupId());
}
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
// let bootstrap do its magic
attributes.setEventPropagation(EventPropagation.BUBBLE);
}
@Override
public void onClick(AjaxRequestTarget target) {
onModalTriggerClick(target);
targetModal.beforeModalShow(target);
}
/**
* Override this method to prepare the modal before it shows up
*/
protected void onModalTriggerClick(AjaxRequestTarget target) {
}
}