001: /**
002: * ===========================================
003: * JFreeReport : a free Java reporting library
004: * ===========================================
005: *
006: * Project Info: http://reporting.pentaho.org/
007: *
008: * (C) Copyright 2001-2007, by Object Refinery Ltd, 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: * ShapeElementFactory.java
027: * ------------
028: * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors.
029: */package org.jfree.report.elementfactory;
030:
031: import java.awt.Color;
032: import java.awt.Stroke;
033:
034: import org.jfree.report.style.ElementStyleKeys;
035: import org.jfree.report.style.ElementStyleSheet;
036:
037: /**
038: * A base implementation of a factory to define ShapeElements.
039: *
040: * @author Thomas Morgner
041: */
042: public abstract class ShapeElementFactory extends ElementFactory {
043: /**
044: * The shape color.
045: */
046: private Color color;
047: /**
048: * The shape's stroke.
049: */
050: private Stroke stroke;
051: /**
052: * Defines, whether to scale the shape to fit the element bounds.
053: */
054: private Boolean scale;
055: /**
056: * Defines, whether to keep the aspect ratio when scaling.
057: */
058: private Boolean keepAspectRatio;
059: /**
060: * Defines, whether the shape should be filled.
061: */
062: private Boolean shouldFill;
063: /**
064: * Defines, whether the shape outline should be drawn.
065: */
066: private Boolean shouldDraw;
067:
068: /**
069: * DefaultConstructor.
070: */
071: protected ShapeElementFactory() {
072: }
073:
074: /**
075: * Returns the shape color.
076: *
077: * @return the color of the shape.
078: */
079: public Color getColor() {
080: return color;
081: }
082:
083: /**
084: * Defines the color of the shape.
085: *
086: * @param color the color of the shape.
087: */
088: public void setColor(final Color color) {
089: this .color = color;
090: }
091:
092: /**
093: * Returns the shapes stroke. The stroke is used to draw the outline of the shape.
094: *
095: * @return the stoke.
096: */
097: public Stroke getStroke() {
098: return stroke;
099: }
100:
101: /**
102: * Defines the shapes stroke. The stroke is used to draw the outline of the shape.
103: *
104: * @param stroke the stoke.
105: */
106: public void setStroke(final Stroke stroke) {
107: this .stroke = stroke;
108: }
109:
110: /**
111: * Returns, whether the image content should be scaled to fit the complete image element
112: * bounds.
113: *
114: * @return the scale flag of the image element.
115: */
116: public Boolean getScale() {
117: return scale;
118: }
119:
120: /**
121: * Defines, whether the image content should be scaled to fit the complete image element
122: * bounds.
123: *
124: * @param scale the scale flag of the image element.
125: */
126: public void setScale(final Boolean scale) {
127: this .scale = scale;
128: }
129:
130: /**
131: * Returns whether the generated image element should preserve the original aspect ratio
132: * of the image content during scaling. This property has no effect if the image content
133: * is not scaled.
134: *
135: * @return the keep aspect ratio flag.
136: */
137: public Boolean getKeepAspectRatio() {
138: return keepAspectRatio;
139: }
140:
141: /**
142: * Defines whether the generated image element should preserve the original aspect ratio
143: * of the image content during scaling. This property has no effect if the image content
144: * is not scaled.
145: *
146: * @param keepAspectRatio whether to keep the aspect ratio of the image content during
147: * the scaling.
148: */
149: public void setKeepAspectRatio(final Boolean keepAspectRatio) {
150: this .keepAspectRatio = keepAspectRatio;
151: }
152:
153: /**
154: * Return whether to fill the shape on report generation.
155: *
156: * @return the should fill flag.
157: */
158: public Boolean getShouldFill() {
159: return shouldFill;
160: }
161:
162: /**
163: * Defines wether to fill the shape on report generation.
164: *
165: * @param shouldFill the fill flag.
166: */
167: public void setShouldFill(final Boolean shouldFill) {
168: this .shouldFill = shouldFill;
169: }
170:
171: /**
172: * Returns whether to draw the shape outline on report generation.
173: *
174: * @return the draw shape flag.
175: */
176: public Boolean getShouldDraw() {
177: return shouldDraw;
178: }
179:
180: /**
181: * Defines whether to draw the shape outline on report generation.
182: *
183: * @param shouldDraw the draw shape flag.
184: */
185: public void setShouldDraw(final Boolean shouldDraw) {
186: this .shouldDraw = shouldDraw;
187: }
188:
189: /**
190: * Applies the style definition to the elements stylesheet.
191: *
192: * @param style the element stylesheet which should receive the style definition.
193: */
194: protected void applyStyle(final ElementStyleSheet style) {
195: super.applyStyle(style);
196: style.setStyleProperty(ElementStyleKeys.KEEP_ASPECT_RATIO,
197: getKeepAspectRatio());
198: style.setStyleProperty(ElementStyleKeys.PAINT, getColor());
199: style.setStyleProperty(ElementStyleKeys.SCALE, getScale());
200: style.setStyleProperty(ElementStyleKeys.STROKE, getStroke());
201: style.setStyleProperty(ElementStyleKeys.DRAW_SHAPE,
202: getShouldDraw());
203: style.setStyleProperty(ElementStyleKeys.FILL_SHAPE,
204: getShouldFill());
205: }
206: }
|