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()