001 /*
002 * $Id: MappedValue.java 3100 2008-10-14 22:33:10Z rah003 $
003 *
004 * Copyright 2008 Sun Microsystems, Inc., 4150 Network Circle,
005 * Santa Clara, California 95054, U.S.A. All rights reserved.
006 *
007 * This library is free software; you can redistribute it and/or
008 * modify it under the terms of the GNU Lesser General Public
009 * License as published by the Free Software Foundation; either
010 * version 2.1 of the License, or (at your option) any later version.
011 *
012 * This library is distributed in the hope that it will be useful,
013 * but WITHOUT ANY WARRANTY; without even the implied warranty of
014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015 * Lesser General Public License for more details.
016 *
017 * You should have received a copy of the GNU Lesser General Public
018 * License along with this library; if not, write to the Free Software
019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
020 */
021 package org.jdesktop.swingx.renderer;
022
023 import javax.swing.Icon;
024
025 /**
026 * Compound implementation of XXValue. Currently, XX stands for String,
027 * Icon, Boolean. <p>
028 *
029 * Quick hack around #590-swingx: LabelProvider should respect StringValue
030 * when formatting (instead of going clever with icons).
031 *
032 * Note: this will change!
033 *
034 * @see CheckBoxProvider
035 */
036 public class MappedValue implements StringValue, IconValue, BooleanValue {
037
038 private StringValue stringDelegate;
039 private IconValue iconDelegate;
040 private BooleanValue booleanDelegate;
041
042 public MappedValue(StringValue stringDelegate, IconValue iconDelegate) {
043 this(stringDelegate, iconDelegate, null);
044 }
045
046 public MappedValue(StringValue stringDelegate, IconValue iconDelegate,
047 BooleanValue booleanDelegate) {
048 this.stringDelegate = stringDelegate;
049 this.iconDelegate = iconDelegate;
050 this.booleanDelegate = booleanDelegate;
051 }
052
053 /**
054 * {@inheritDoc}<p>
055 *
056 * This implementation delegates to the contained StringValue if available or
057 * returns an empty String, if not.
058 *
059 */
060 public String getString(Object value) {
061 if (stringDelegate != null) {
062 return stringDelegate.getString(value);
063 }
064 return "";
065 }
066
067 /**
068 * {@inheritDoc}<p>
069 *
070 * This implementation delegates to the contained IconValue if available or
071 * returns null, if not.
072 *
073 */
074 public Icon getIcon(Object value) {
075 if (iconDelegate != null) {
076 return iconDelegate.getIcon(value);
077 }
078 return null;
079 }
080
081 /**
082 * {@inheritDoc}<p>
083 *
084 * This implementation delegates to the contained BooleanValue if available or
085 * returns false, if not.
086 *
087 */
088 public boolean getBoolean(Object value) {
089 if (booleanDelegate != null) {
090 return booleanDelegate.getBoolean(value);
091 }
092 return false;
093 }
094
095 }