package fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.conditionalinput; import org.apache.wicket.Component; 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.markup.html.form.Check; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.Radio; import org.wicketstuff.wiquery.core.javascript.JsStatement; import org.wicketstuff.wiquery.core.javascript.JsUtils; import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.util.JQueryAbstractBehavior; public class ConditionalInputBehavior extends JQueryAbstractBehavior { private static final long serialVersionUID = 4865316523856192642L; private static final String CONDITIONAL_INPUT = "conditionalInput"; private final ConditionalInputOptions options; public ConditionalInputBehavior(CheckBox enableOption, ConditionalInputAction action) { this((Component)enableOption, action); } public ConditionalInputBehavior(Check<?> enableOption, ConditionalInputAction action) { this((Component)enableOption, action); } public ConditionalInputBehavior(Radio<?> enableOption, ConditionalInputAction action) { this((Component)enableOption, action); } private ConditionalInputBehavior(Component enableOption, ConditionalInputAction action) { super(); options = new ConditionalInputOptions(enableOption, action); } @Override public boolean isEnabled(Component component) { return component.isVisibleInHierarchy() /** Il ne faut pas tester isEnabledInHierarchy(), on peut vouloir activer la behavior même lorsque le composant est désactivé */; } @Override public void renderHead(Component component, IHeaderResponse response) { response.render(JavaScriptHeaderItem.forReference(ConditionalInputJavaScriptResourceReference.get())); response.render(OnDomReadyHeaderItem.forScript(statement().render())); } public JsStatement statement() { return new JsStatement().$(getComponent()).chain(CONDITIONAL_INPUT, JsUtils.quotes("init"), options.getJavaScriptOptions()); } }