001 /*
002 * $Id: LabelProvider.java 3100 2008-10-14 22:33:10Z rah003 $
003 *
004 * Copyright 2006 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.JLabel;
024
025 /**
026 * A component provider which uses a <code>JLabel</code> as rendering
027 * component. <p>
028 *
029 * It configures the Label's text and icon property from the
030 * StringValue.
031 *
032 * @author Jeanette Winzenburg
033 *
034 * @see StringValue
035 * @see FormatStringValue
036 * @see IconValue
037 */
038 public class LabelProvider extends ComponentProvider<JLabel> {
039
040 /**
041 * Instantiates a LabelProvider with default to-String converter and LEADING
042 * horizontal alignment .
043 * <p>
044 *
045 */
046 public LabelProvider() {
047 this(null);
048 }
049
050 /**
051 * Instantiates a LabelProvider with the given to-String converter and LEADING
052 * horizontal alignment. If the converter is null, the default TO_STRING is
053 * used.
054 * <p>
055 *
056 * @param converter the converter to use for mapping the cell value to a
057 * String representation.
058 */
059 public LabelProvider(StringValue converter) {
060 this(converter, JLabel.LEADING);
061 }
062
063 /**
064 * Instantiates a LabelProvider with default to-String converter and given
065 * horizontal alignment.
066 *
067 * @param alignment the horizontal alignment.
068 */
069 public LabelProvider(int alignment) {
070 this(null, alignment);
071 }
072
073 /**
074 * Instantiates a LabelProvider with given to-String converter and given
075 * horizontal alignment. If the converter is null, the default TO_STRING is
076 * used.
077 *
078 * @param converter the converter to use for mapping the cell value to a
079 * String representation.
080 * @param alignment the horizontal alignment.
081 */
082 public LabelProvider(StringValue converter, int alignment) {
083 super(converter, alignment);
084 }
085
086 /**
087 * {@inheritDoc}
088 */
089 @Override
090 protected JLabel createRendererComponent() {
091 return new JRendererLabel();
092 }
093
094 /**
095 * {@inheritDoc}
096 * Here: sets the Label's horizontal alignment to the alignment as configured
097 * in the controller.
098 */
099 @Override
100 protected void configureState(CellContext context) {
101 rendererComponent.setHorizontalAlignment(getHorizontalAlignment());
102 }
103
104 /**
105 * {@inheritDoc}
106 * Here: sets the labels's text and icon property to the value as
107 * returned by getValueAsString/Icon, respectively.
108 *
109 * @param context the cellContext to use
110 *
111 * @see #getValueAsString(CellContext)
112 * @see #getValueAsIcon(CellContext)
113 */
114 @Override
115 protected void format(CellContext context) {
116 rendererComponent.setIcon(getValueAsIcon(context));
117 rendererComponent.setText(getValueAsString(context));
118 }
119
120
121 }