Addition of tooltip behavior.
[utils] / wicket / components / src / main / java / org / wamblee / wicket / behavior / PreselectionBehavior.java
index 0ea11828bf552fbd5deba77b687233be31319ade..2a466c451bc77e799a5842f789471a1ded309370 100644 (file)
@@ -20,14 +20,14 @@ import org.apache.wicket.Page;
 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
  * to a certain component, the behavior is valid for all children of the
  * component. Therefore, it is possible to attach this behavior to any component,
- * well as to a form or even individual fields in a form. It is not possible however to apply this
+ * well as to a form or even individual fields in a form. It is also possible to apply this
  * behavior to a page. The behavior applies
  * to text input fields and textareas. Upon focus, the text in the field is
  * selected if it it still identical to the default value.
@@ -35,41 +35,16 @@ import org.wamblee.wicket.jquery.JQueryUtils;
  * @author Erik Brakkee
  * 
  */
-public class PreselectionBehavior extends CompositeBehavior {
+public class PreselectionBehavior extends AbstractJQueryBehavior {
+
+    private static final String READY_FUNCTION = "org.wamblee.preselectionSetup";
 
     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);
+        super(READY_FUNCTION, new SupportBehavior(), PRESELECTION_BEHAVIOR);
     }
-
-    @Override
-    public void renderHead(IHeaderResponse aResponse) {
-        super.renderHead(aResponse);
-        String jsString = JQueryUtils.createReadyFunction("preselectSetup", component);
-        aResponse.renderJavascript(jsString, null);
-    }
-
 }