Yes - this looks fine. There are multiple ways of accomplishing it, but this one is fine.
-- Jeremy Thomerson http://www.wickettraining.com On Tue, Nov 10, 2009 at 10:38 PM, Peter Ross <p...@missioncriticalit.com>wrote: > Hi, > > I'm implementing a control which consists of an integer field and a > slider where the slider comes from jquery UI. > > My question is that whenever the component is refreshed via ajax, you > need to call the js initialization function. > > I've done this by adding a behaviour which determines the request > target, if it's an AjaxRequestTarget it adds the init js to the target > otherwise it outputs it in the header. > > Is this the correct way to do it? Is there a simpler way? > > Here is the code that I've implemented as of today > > public class NumberFieldWithSlider<Number> extends > FormComponentPanel<Number> { > private TextField<Number> field; > private String slider_id; > > public NumberFieldWithSlider(String id) { > super(id); > init(); > } > > public NumberFieldWithSlider(String id, IModel<Number> model) { > super(id, model); > init(); > } > > private void init() { > field = new TextField("field", getModel()); > add(field); > > WebComponent c = new WebComponent("slider"); > c.setOutputMarkupId(true); > slider_id = c.getMarkupId(); > add(c); > > // Write out the javascript to initialize the slider > add(new AbstractBehavior() { > @Override > public void renderHead(IHeaderResponse response) { > IRequestTarget target = > RequestCycle.get().getRequestTarget(); > > if (target instanceof AjaxRequestTarget) { > // If the target is an ajax request then we need > // to execute just the slider js. > AjaxRequestTarget t = (AjaxRequestTarget) target; > t.appendJavascript(init_slider_js()); > } else { > // Otherwise render the slider when the document is > ready. > > response.renderJavascript(init_slider_when_doc_ready_js(), null); > } > } > }); > > } > > private String init_slider_js() { > return "$('#" + slider_id + "').slider({min: 0, max: 1, step: > 0.1});"; > } > > private String init_slider_when_doc_ready_js() { > return "$(document).ready(function() {" + init_slider_js() + "});"; > } > } > > Regards, > Peter > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > >