You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2011/04/13 22:47:07 UTC

svn commit: r1091914 - /wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java

Author: pete
Date: Wed Apr 13 20:47:07 2011
New Revision: 1091914

URL: http://svn.apache.org/viewvc?rev=1091914&view=rev
Log:
WICKET-3557: Can not add validator to AjaxEditableLabel unless it was added to page

Modified:
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java?rev=1091914&r1=1091913&r2=1091914&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java Wed Apr 13 20:47:07 2011
@@ -386,7 +386,7 @@ public class AjaxEditableLabel<T> extend
 	{
 		if (editor == null)
 		{
-			initLabelAndEditor(getParentModel());
+			initLabelAndEditor(getDelegatingParentModel());
 		}
 		return editor;
 	}
@@ -400,7 +400,7 @@ public class AjaxEditableLabel<T> extend
 	{
 		if (label == null)
 		{
-			initLabelAndEditor(getParentModel());
+			initLabelAndEditor(getDelegatingParentModel());
 		}
 		return label;
 	}
@@ -415,7 +415,7 @@ public class AjaxEditableLabel<T> extend
 		// lazily add label and editor
 		if (editor == null)
 		{
-			initLabelAndEditor(getParentModel());
+			initLabelAndEditor(getDelegatingParentModel());
 		}
 		// obsolete with WICKET-1919
 		// label.setEnabled(isEnabledInHierarchy());
@@ -505,6 +505,34 @@ public class AjaxEditableLabel<T> extend
 	}
 
 	/**
+	 * get a model that accesses the parent model lazily. this is required since we eventually request the parents
+	 * model before the component is added to the parent.
+	 * 
+	 * @return model
+	 */
+	private IModel<T> getDelegatingParentModel()
+	{
+		return new IModel<T>()
+		{
+			public T getObject()
+			{
+				return getParentModel().getObject();
+			}
+
+			public void setObject(final T object)
+			{
+				getParentModel().setObject(object);
+			}
+
+			public void detach()
+			{
+				getParentModel().detach();
+			}
+		};
+	}
+	
+	
+	/**
 	 * @return Gets the parent model in case no explicit model was specified.
 	 */
 	@SuppressWarnings("unchecked")