001: /*
002: * ============================================================================
003: * GNU Lesser General Public License
004: * ============================================================================
005: *
006: * JasperReports - Free Java report-generating library.
007: * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
008: *
009: * This library is free software; you can redistribute it and/or
010: * modify it under the terms of the GNU Lesser General Public
011: * License as published by the Free Software Foundation; either
012: * 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,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: * Lesser General Public License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
022: *
023: * JasperSoft Corporation
024: * 303 Second Street, Suite 450 North
025: * San Francisco, CA 94107
026: * http://www.jaspersoft.com
027: */
028: package net.sf.jasperreports.charts.design;
029:
030: import java.awt.Color;
031:
032: import net.sf.jasperreports.charts.JRDataRange;
033: import net.sf.jasperreports.charts.JRMeterPlot;
034: import net.sf.jasperreports.charts.JRValueDisplay;
035: import net.sf.jasperreports.charts.base.JRBaseMeterPlot;
036: import net.sf.jasperreports.charts.util.JRMeterInterval;
037: import net.sf.jasperreports.engine.JRChart;
038: import net.sf.jasperreports.engine.JRChartPlot;
039: import net.sf.jasperreports.engine.JRConstants;
040: import net.sf.jasperreports.engine.JRException;
041:
042: /**
043: * A meter plot that displays a single value against a range of values. The
044: * range can be further subdivided into multiple color coded regions.
045: *
046: * @author Barry Klawans (bklawans@users.sourceforge.net)
047: * @version $Id: JRDesignMeterPlot.java 1794 2007-07-30 09:07:50Z teodord $
048: */
049: public class JRDesignMeterPlot extends JRBaseMeterPlot {
050:
051: /**
052: *
053: */
054: private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;
055:
056: /**
057: * Construct a new meter plot by copying an existing one.
058: *
059: * @param meterPlot the plot to copy
060: */
061: public JRDesignMeterPlot(JRChartPlot meterPlot, JRChart chart) {
062: super (meterPlot, chart);
063: }
064:
065: /**
066: * Sets the range of values that the meter can display. Before changing
067: * this for an existing meter you should clear any existing intervals to
068: * ensure that you don't end up with intervals that are outside of the new
069: * range.
070: *
071: * @param dataRange the range of values that the meter can display
072: */
073: public void setDataRange(JRDataRange dataRange) throws JRException {
074: this .dataRange = dataRange;
075: }
076:
077: /**
078: * Sets the value display formatting options.
079: *
080: * @param valueDisplay how to show the textual representation of the value
081: */
082: public void setValueDisplay(JRValueDisplay valueDisplay) {
083: this .valueDisplay = valueDisplay;
084: }
085:
086: /**
087: * Sets the shape of the meter. Must be one of
088: * <code>JRMeterPlot.SHAPE_CHORD</code>, <code>JRMeterPlot.SHAPE_CIRCLE</code>
089: * or <code>JRMeterPlot.SHAPE_PIE</code>.
090: *
091: * @param shape the shape of the meter
092: * @throws JRException invalid shape was specified
093: */
094: public void setShape(byte shape) throws JRException {
095: if (shape < 0 || shape > JRMeterPlot.SHAPE_PIE) {
096: throw new JRException("Unknown shape for MeterPlot");
097: }
098:
099: this .shape = shape;
100: }
101:
102: /**
103: * Adds an interval to the meter. An interval is used to indicate a
104: * section of the meter.
105: *
106: * @param interval the interval to add to the meter
107: */
108: public void addInterval(JRMeterInterval interval) {
109: intervals.add(interval);
110: }
111:
112: /**
113: * Removes all the intervals for the meter.
114: */
115: public void clearIntervals() {
116: intervals.clear();
117: }
118:
119: /**
120: * Sets the size of the meter face in degrees.
121: *
122: * @param meterAngle the size of the meter in degrees
123: */
124: public void setMeterAngle(int meterAngle) {
125: this .meterAngle = meterAngle;
126: }
127:
128: /**
129: * Sets the units string to use. This string is appended to the value
130: * when it is displayed.
131: *
132: * @param units the units string to use
133: */
134: public void setUnits(String units) {
135: this .units = units;
136: }
137:
138: /**
139: * Sets the space between tick marks on the face of the meter. The
140: * spacing is relative to the range of the meter. If the meter is
141: * displaying the range 100 to 200 and the tick interval is 20, four
142: * tick marks will be shown, one each at 120, 140, 160 and 180.
143: *
144: * @param tickInterval the space between tick marks on the meter
145: */
146: public void setTickInterval(double tickInterval) {
147: this .tickInterval = tickInterval;
148: }
149:
150: /**
151: * Sets the color to use for the meter face.
152: *
153: * @param meterBackgroundColor the color to use for the meter face
154: */
155: public void setMeterBackgroundColor(Color meterBackgroundColor) {
156: this .meterBackgroundColor = meterBackgroundColor;
157: }
158:
159: /**
160: * Sets the color to use for the meter pointer.
161: *
162: * @param needleColor the color to use for the meter pointer
163: */
164: public void setNeedleColor(Color needleColor) {
165: this .needleColor = needleColor;
166: }
167:
168: /**
169: * Sets the color to use when drawing tick marks on the meter.
170: *
171: * @param tickColor the color to use when drawing tick marks
172: */
173: public void setTickColor(Color tickColor) {
174: this.tickColor = tickColor;
175: }
176: }
|