org.wicketstuff.jquery.resize.ResizeBehaviour Maven / Gradle / Ivy
package org.wicketstuff.jquery.resize;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.request.Request;
import org.apache.wicket.request.cycle.RequestCycle;
import org.wicketstuff.jquery.FunctionString;
import org.wicketstuff.jquery.JQueryBehavior;
/**
*
* @author Edvin Syse
*
*/
public class ResizeBehaviour extends JQueryBehavior
{
private static final long serialVersionUID = 1L;
private ResizeOptions options;
public ResizeBehaviour()
{
this(new ResizeOptions());
}
public ResizeBehaviour(ResizeOptions options)
{
super();
this.options = options != null ? options : new ResizeOptions();
}
@Override
protected CharSequence getOnReadyScript()
{
StringBuilder onReady = new StringBuilder("$('#" + getComponent().getMarkupId() +
"').resizable(");
// Add callback method to options
options.set("stop", new FunctionString("function() {\n " + getCallbackScript() + "}\n"));
onReady.append(options.toString(false));
onReady.append(");");
return onReady;
}
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
{
super.updateAjaxAttributes(attributes);
String markupId = getComponent().getMarkupId();
CharSequence heightAndWidth =
String.format("return { height: $('#%s').height(), width: $('#%s').width() }",
markupId, markupId);
attributes.getDynamicExtraParameters().add(heightAndWidth);
}
@Override
public void renderHead(Component component, IHeaderResponse response)
{
super.renderHead(component, response);
response.render(JavaScriptHeaderItem.forReference(JQueryBehavior.JQUERY_UI_JS));
}
@Override
protected void respond(AjaxRequestTarget target)
{
Request req = RequestCycle.get().getRequest();
onResizeStop(target, req.getQueryParameters().getParameterValue("height").toInt(),
req.getQueryParameters().getParameterValue("width").toInt());
}
public void onResizeStop(AjaxRequestTarget target, int height, int width)
{
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy