001    /*
002     * Copyright 2002-2004 the original author or authors.
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     * 
008     * http://www.apache.org/licenses/LICENSE-2.0
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.richclient.list;
017    
018    import org.springframework.beans.BeanWrapperImpl;
019    import org.springframework.util.Assert;
020    
021    /**
022     * Renders objects in a list, using a propertyName for rendering.
023     * 
024     * @author Keith Donald
025     */
026    public class BeanPropertyValueListRenderer extends TextValueListRenderer {
027    
028        private BeanWrapperImpl beanWrapper;
029    
030        private String propertyName;
031    
032        /**
033         * Creates a new <code>BeanPropertyValueListRenderer</code>
034         * 
035         * @param propertyName
036         *            the property name to use for rendering
037         */
038        public BeanPropertyValueListRenderer(String propertyName) {
039            Assert.notNull(propertyName, "propertyName can not be null.");
040            this.propertyName = propertyName;
041        }
042    
043        protected String getTextValue(Object value) {
044            if (value == null) {
045                return "";
046            }
047            if (beanWrapper == null) {
048                beanWrapper = new BeanWrapperImpl(value);
049            } else {
050                beanWrapper.setWrappedInstance(value);
051            }
052            return String.valueOf(beanWrapper.getPropertyValue(propertyName));
053        }
054    
055        /**
056         * @return the property name
057         */
058        public String getPropertyName() {
059            return propertyName;
060        }
061    }