01: /* ***** BEGIN LICENSE BLOCK *****
02: * Version: MPL 1.1
03: * The contents of this file are subject to the Mozilla Public License Version
04: * 1.1 (the "License"); you may not use this file except in compliance with
05: * the License. You may obtain a copy of the License at
06: * http://www.mozilla.org/MPL/
07: *
08: * Software distributed under the License is distributed on an "AS IS" basis,
09: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
10: * for the specific language governing rights and limitations under the
11: * License.
12: *
13: * The Original Code is Riot.
14: *
15: * The Initial Developer of the Original Code is
16: * Neteye GmbH.
17: * Portions created by the Initial Developer are Copyright (C) 2006
18: * the Initial Developer. All Rights Reserved.
19: *
20: * Contributor(s):
21: * Felix Gnass [fgnass at neteye dot de]
22: *
23: * ***** END LICENSE BLOCK ***** */
24: package org.riotfamily.riot.list.ui.render;
25:
26: import java.beans.PropertyEditor;
27: import java.beans.PropertyEditorManager;
28: import java.beans.PropertyEditorSupport;
29: import java.io.PrintWriter;
30:
31: import org.springframework.web.util.HtmlUtils;
32:
33: /**
34: *
35: */
36: public class ObjectRenderer implements CellRenderer {
37:
38: private static PropertyEditor DEFAULT_EDITOR = new StringPropertyEditor();
39:
40: private PropertyEditor propertyEditor;
41:
42: /**
43: * @param propertyEditor The propertyEditor to use.
44: */
45: public void setPropertyEditor(PropertyEditor propertyEditor) {
46: this .propertyEditor = propertyEditor;
47: }
48:
49: public void render(String propertyName, Object value,
50: RenderContext context, PrintWriter writer) {
51: if (value != null) {
52: Class type = value.getClass();
53: if (propertyEditor == null) {
54: propertyEditor = PropertyEditorManager.findEditor(type);
55: if (propertyEditor == null) {
56: propertyEditor = DEFAULT_EDITOR;
57: }
58: }
59: propertyEditor.setValue(value);
60: renderValue(context, writer, propertyEditor.getAsText());
61: }
62: }
63:
64: protected void renderValue(RenderContext context,
65: PrintWriter writer, String value) {
66:
67: writer.print(HtmlUtils.htmlEscape(value));
68: }
69:
70: private static class StringPropertyEditor extends
71: PropertyEditorSupport {
72: }
73:
74: }
|