001 /**
002 * ========================================
003 * JFreeReport : a free Java report library
004 * ========================================
005 *
006 * Project Info: http://reporting.pentaho.org/
007 *
008 * (C) Copyright 2000-2007, by Object Refinery Limited, Pentaho Corporation and Contributors.
009 *
010 * This library is free software; you can redistribute it and/or modify it under the terms
011 * of the GNU Lesser General Public License as published by the Free Software Foundation;
012 * either version 2.1 of the License, or (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
015 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016 * See the GNU Lesser General Public License for more details.
017 *
018 * You should have received a copy of the GNU Lesser General Public License along with this
019 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
020 * Boston, MA 02111-1307, USA.
021 *
022 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
023 * in the United States and other countries.]
024 *
025 * ------------
026 * $Id: SurveyScaleLegendItem.java,v 1.7 2007/04/01 18:49:32 taqua Exp $
027 * ------------
028 * (C) Copyright 2000-2005, by Object Refinery Limited.
029 * (C) Copyright 2005-2007, by Pentaho Corporation.
030 */
031
032 package org.jfree.report.modules.misc.survey;
033
034 import java.awt.BasicStroke;
035 import java.awt.Color;
036 import java.awt.Font;
037 import java.awt.Graphics2D;
038 import java.awt.Shape;
039 import java.awt.geom.Rectangle2D;
040
041 import org.jfree.text.TextUtilities;
042 import org.jfree.ui.Drawable;
043 import org.jfree.ui.TextAnchor;
044
045 /**
046 * A {@link Drawable} object that represents a legend item for a {@link SurveyScale}.
047 */
048 public class SurveyScaleLegendItem implements Drawable
049 {
050
051 /**
052 * The shape.
053 */
054 private Shape shape;
055
056 /**
057 * The label.
058 */
059 private String label;
060
061 /**
062 * Draw the shape?
063 */
064 private boolean draw;
065
066 /**
067 * Fill the shape?
068 */
069 private boolean fill;
070
071 /**
072 * The label font.
073 */
074 private Font font;
075
076 public SurveyScaleLegendItem ()
077 {
078 font = new Font("Serif", Font.ITALIC, 10);
079 }
080
081 /**
082 * Creates a new legend item.
083 *
084 * @param shape the shape.
085 * @param label the label.
086 * @param draw draw the shape?
087 * @param fill fill the shape?
088 */
089 public SurveyScaleLegendItem (final Shape shape,
090 final String label,
091 final boolean draw,
092 final boolean fill)
093 {
094 this.shape = shape;
095 this.label = label;
096 this.draw = draw;
097 this.fill = fill;
098 }
099
100 /**
101 * Draws the legend item.
102 *
103 * @param g2 the graphic device.
104 * @param area the area.
105 */
106 public void draw (final Graphics2D g2, final Rectangle2D area)
107 {
108 if (shape == null || font == null || label == null)
109 {
110 return;
111 }
112 if (draw == false && fill == false)
113 {
114 return;
115 }
116
117 final Rectangle2D b = this.shape.getBounds2D();
118 double x = area.getMinX() + b.getWidth() / 2.0 + 1.0;
119 final double y = area.getCenterY();
120 final Shape s = getShape();
121 g2.translate(x,y);
122 g2.setPaint(Color.black);
123 if (this.draw)
124 {
125 g2.setStroke(new BasicStroke(0.5f));
126 g2.draw(s);
127 }
128 if (this.fill)
129 {
130 g2.fill(s);
131 }
132 g2.translate(-x, -y);
133 x += b.getWidth() / 2.0 + 3.0;
134 g2.setFont(this.font);
135 TextUtilities.drawAlignedString
136 (this.label, g2, (float) x, (float) y, TextAnchor.HALF_ASCENT_LEFT);
137 }
138
139 public boolean isDraw ()
140 {
141 return draw;
142 }
143
144 public void setDraw (final boolean draw)
145 {
146 this.draw = draw;
147 }
148
149 public boolean isFill ()
150 {
151 return fill;
152 }
153
154 public void setFill (final boolean fill)
155 {
156 this.fill = fill;
157 }
158
159 public Font getFont ()
160 {
161 return font;
162 }
163
164 public void setFont (final Font font)
165 {
166 this.font = font;
167 }
168
169 public String getLabel ()
170 {
171 return label;
172 }
173
174 public void setLabel (final String label)
175 {
176 this.label = label;
177 }
178
179 public Shape getShape ()
180 {
181 return shape;
182 }
183
184 public void setShape (final Shape shape)
185 {
186 this.shape = shape;
187 }
188
189 }