You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by gs...@apache.org on 2008/05/07 11:00:27 UTC

svn commit: r654047 - /wicket/branches/wicket-1.3.x/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java

Author: gseitz
Date: Wed May  7 02:00:26 2008
New Revision: 654047

URL: http://svn.apache.org/viewvc?rev=654047&view=rev
Log:
WICKET-1590: use IChoiceRenderer (if available) for the Label, for real now

Modified:
    wicket/branches/wicket-1.3.x/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java

Modified: wicket/branches/wicket-1.3.x/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java?rev=654047&r1=654046&r2=654047&view=diff
==============================================================================
--- wicket/branches/wicket-1.3.x/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java (original)
+++ wicket/branches/wicket-1.3.x/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java Wed May  7 02:00:26 2008
@@ -22,6 +22,8 @@
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.MarkupStream;
+import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.markup.html.form.FormComponent;
 import org.apache.wicket.markup.html.form.IChoiceRenderer;
@@ -29,6 +31,8 @@
 import org.apache.wicket.model.AbstractReadOnlyModel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.util.string.Strings;
 
 
 /**
@@ -206,26 +210,47 @@
 	}
 
 
-	protected Component newLabel(MarkupContainer parent, String componentId, final IModel model)
+	protected Component newLabel(MarkupContainer parent, String componentId, IModel model)
 	{
-		IModel wrapper = new AbstractReadOnlyModel()
+		Label label = new Label(componentId, model)
 		{
 			private static final long serialVersionUID = 1L;
 
-			public Object getObject()
+			public IConverter getConverter(Class type)
 			{
+				IConverter c = AjaxEditableChoiceLabel.this.getConverter(type);
+				return c != null ? c : super.getConverter(type);
+			}
+
+			protected void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag)
+			{
+				String displayValue = getModelObjectAsString();
 				if (renderer != null)
 				{
-					return renderer.getDisplayValue(model.getObject());
+					Object displayObject = renderer.getDisplayValue(getModelObject());
+					Class objectClass = (displayObject == null ? null : displayObject.getClass());
+
+					if (objectClass != null && objectClass != String.class)
+					{
+						final IConverter converter = getConverter(objectClass);
+
+						displayValue = converter.convertToString(displayObject, getLocale());
+					}
+				}
+
+				if (Strings.isEmpty(displayValue))
+				{
+					replaceComponentTagBody(markupStream, openTag, defaultNullLabel());
 				}
 				else
 				{
-					return model.getObject();
+					replaceComponentTagBody(markupStream, openTag, displayValue);
 				}
 			}
-
 		};
-		return super.newLabel(parent, componentId, wrapper);
+		label.setOutputMarkupId(true);
+		label.add(new LabelAjaxBehavior(getLabelAjaxEvent()));
+		return label;
 	}
 
 	protected void onModelChanged()