Author: gseitz
Date: Wed May 7 01:54:15 2008
New Revision: 654044
URL: http://svn.apache.org/viewvc?rev=654044&view=rev
Log:
WICKET-1590: use IChoiceRenderer (if available) for the Label, for real now
Modified:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
Modified:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java?rev=654044&r1=654043&r2=654044&view=diff
==============================================================================
---
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
(original)
+++
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
Wed May 7 01:54:15 2008
@@ -18,9 +18,12 @@
import java.util.List;
+import org.apache.wicket.Application;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.html.WebComponent;
+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;
@@ -28,6 +31,7 @@
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;
/**
@@ -218,28 +222,53 @@
@Override
protected WebComponent<T> newLabel(MarkupContainer< ? > parent, String
componentId,
- final IModel<T> model)
+ IModel<T> model)
{
- IModel<T> wrapper = new AbstractReadOnlyModel<T>()
+ Label<T> label = new Label<T>(componentId, model)
{
private static final long serialVersionUID = 1L;
@Override
- @SuppressWarnings("unchecked")
- public T getObject()
+ public IConverter<T> getConverter(Class<T> type)
+ {
+ IConverter<T> c =
AjaxEditableChoiceLabel.this.getConverter(type);
+ return c != null ? c : super.getConverter(type);
+ }
+
+ @Override
+ protected void onComponentTagBody(MarkupStream
markupStream, ComponentTag openTag)
{
+ String displayValue = getModelObjectAsString();
if (renderer != null)
{
- return
(T)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 =
Application.get()
+ .getConverterLocator()
+
.getConverter(objectClass);
+
+ displayValue =
converter.convertToString(displayObject, getLocale());
+ }
+ }
+
+ if (displayValue == null ||
"".equals(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;
}
@Override