import org.apache.wicket.behavior.HeaderContributor;
import org.apache.wicket.markup.html.IHeaderResponse;
import org.apache.wicket.markup.html.JavascriptPackageResource;
-import org.wamblee.wicket.jquery.JQueryBehavior;
-import org.wamblee.wicket.jquery.JQueryUtils;
+import org.wamblee.wicket.jquery.JQueryHeaderContributor;
+import org.wamblee.wicket.jquery.AbstractJQueryBehavior;
/**
* Preselection behavior that preselects unaltered text in forms. When applied
* @author Erik Brakkee
*
*/
-public class PreselectionBehavior extends CompositeBehavior {
+public class PreselectionBehavior extends AbstractJQueryBehavior {
static final String PRESELECT_SCRIPT = "wamblee-preselect.js";
- private static HeaderContributor CACHE = JavascriptPackageResource
+ private static HeaderContributor PRESELECTION_BEHAVIOR = JavascriptPackageResource
.getHeaderContribution(PreselectionBehavior.class, PRESELECT_SCRIPT);
- private Component component;
-
public PreselectionBehavior() {
- super(new JQueryBehavior(), new NamespaceBehavior(), CACHE);
- }
-
- @Override
- public void bind(Component aComponent) {
- if (component != null) {
- throw new IllegalStateException(
- "this kind of handler cannot be attached to " +
- "multiple components; it is already attached to component " +
- component + ", but component " + aComponent +
- " wants to be attached too");
- }
- if ( aComponent instanceof Page) {
- throw new IllegalStateException("This behavior cannot be applied to a page: " + aComponent);
- }
- component = aComponent;
- super.bind(aComponent);
- aComponent.setOutputMarkupId(true);
- }
-
- @Override
- public void renderHead(IHeaderResponse aResponse) {
- super.renderHead(aResponse);
- String jsString = JQueryUtils.createReadyFunction("preselectSetup", component);
- aResponse.renderJavascript(jsString, null);
+ super("preselectionSetup", new NamespaceBehavior(), PRESELECTION_BEHAVIOR);
}
}