package fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.bootstrap.scrollspy;
import org.apache.wicket.Component;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.wicketstuff.wiquery.core.javascript.JsScope;
import org.wicketstuff.wiquery.core.javascript.JsStatement;
import org.wicketstuff.wiquery.core.javascript.JsUtils;
public class BootstrapScrollSpyBehavior extends Behavior {
private static final long serialVersionUID = -5665173800881237350L;
private static final String BOOTSTRAP_SCROLLSPY = "scrollspy";
private final BootstrapScrollSpyOptions options;
public BootstrapScrollSpyBehavior(BootstrapScrollSpyOptions options) {
super();
this.options = options;
}
public JsStatement statement(Component component) {
return new JsStatement().$(component).chain(BOOTSTRAP_SCROLLSPY, options.getJavaScriptOptions());
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
response.render(JavaScriptHeaderItem.forReference(BootstrapScrollSpyJavaScriptResourceReference.get()));
response.render(OnDomReadyHeaderItem.forScript(statement(component).render()));
}
@Override
public void onComponentTag(Component component, ComponentTag tag) {
super.onComponentTag(component, tag);
// Just a marker for the refresh statement below
tag.getAttributes().put("data-spy", "scroll");
}
public static JsStatement refreshStatement() {
return new JsStatement().$(null, "[data-spy=\"scroll\"]").each(
JsScope.quickScope(
new JsStatement().self().chain(BOOTSTRAP_SCROLLSPY, JsUtils.quotes("refresh"))
));
}
}