package fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.more; 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.apache.wicket.model.IModel; import org.apache.wicket.model.ResourceModel; import org.wicketstuff.wiquery.core.javascript.JsStatement; import fr.openwide.core.wicket.more.util.model.Models; public class MoreBehavior extends Behavior { private static final long serialVersionUID = 6124848862459414294L; private static final String DEFAULT_LABEL_MESSAGE_KEY = "common.seeMore"; private More more; private IModel<String> moreLabelModel; public MoreBehavior() { this(new More(), new ResourceModel(DEFAULT_LABEL_MESSAGE_KEY)); } public MoreBehavior(More more, IModel<String> moreLabelModel) { super(); this.more = more; this.moreLabelModel = moreLabelModel; } @Override public void onComponentTag(Component component, ComponentTag tag) { super.onComponentTag(component, tag); IModel<String> model = Models.wrap(moreLabelModel, component); String moreLabel = model.getObject(); if (moreLabel != null) { tag.put(More.ATTRIBUTE_LABEL, moreLabel); } } @Override public void renderHead(Component component, IHeaderResponse response) { super.renderHead(component, response); response.render(JavaScriptHeaderItem.forReference(MoreResourceReference.get())); response.render(OnDomReadyHeaderItem.forScript(new JsStatement().$(component).chain(more).render())); } @Override public void detach(Component component) { super.detach(component); if (moreLabelModel != null) { moreLabelModel.detach(); } } }