You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@click.apache.org by sa...@apache.org on 2010/07/11 16:42:22 UTC
svn commit: r963082 -
/click/trunk/click/framework/src/org/apache/click/control/AbstractControl.java
Author: sabob
Date: Sun Jul 11 14:42:22 2010
New Revision: 963082
URL: http://svn.apache.org/viewvc?rev=963082&view=rev
Log:
added javadoc and small optimization
Modified:
click/trunk/click/framework/src/org/apache/click/control/AbstractControl.java
Modified: click/trunk/click/framework/src/org/apache/click/control/AbstractControl.java
URL: http://svn.apache.org/viewvc/click/trunk/click/framework/src/org/apache/click/control/AbstractControl.java?rev=963082&r1=963081&r2=963082&view=diff
==============================================================================
--- click/trunk/click/framework/src/org/apache/click/control/AbstractControl.java (original)
+++ click/trunk/click/framework/src/org/apache/click/control/AbstractControl.java Sun Jul 11 14:42:22 2010
@@ -247,18 +247,33 @@ public abstract class AbstractControl im
}
/**
- * Adds an AJAX Behavior.
+ * Add the given {@link org.apache.click.Behavior Behavior} to the control.
+ * <p/>
+ * <b>Stateful Page note:</b> care must be taken not to add duplicate behaviors.
+ * Duplicate behaviors can occur if a behavior is <tt>created</tt> and <tt>added</tt>
+ * to a Control in the {@link #onInit()} or {@link #onRender()} events.
+ * <p/>
+ * Instead add the behavior in the stateful Page constructor.
+ * If the Behavior must be added during the onInit event, declare the behavior
+ * as a Page variable to ensure the <tt>same instance</tt> is added to the Control.
+ * Since control behaviors are contained in a Set, adding the same Behavior
+ * instance won't lead to duplicates.
*
- * @param behavior the AJAX behavior
+ * @param behavior the behavior to add
*/
public void addBehavior(Behavior behavior) {
- boolean added = getBehaviors().add(behavior);
- if (added) {
+ if (behavior == null) {
+ throw new IllegalArgumentException("Behavior cannot be null");
+ }
+
+ // If the control has behaviors yet, register the control as an AJAX target
+ if (!hasBehaviors()) {
// Register control here in case behavior was added *after* the onInit event.
// This can occur if the behavior is added in a listener event or during
// onRender.
ControlRegistry.registerAjaxTarget(this);
}
+ getBehaviors().add(behavior);
}
/**