001: /***********************************************************************************************
002: * File Info: $Id: LineChartProperties.java,v 1.2 2003/08/08 08:51:27 nicolaken Exp $
003: * Copyright (C) 2002
004: * Author: Nathaniel G. Auvil
005: * Contributor(s):
006: *
007: * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved.
008: *
009: * Redistribution and use of this software and associated documentation ("Software"), with or
010: * without modification, are permitted provided that the following conditions are met:
011: *
012: * 1. Redistributions of source code must retain copyright statements and notices.
013: * Redistributions must also contain a copy of this document.
014: *
015: * 2. Redistributions in binary form must reproduce the above copyright notice, this list of
016: * conditions and the following disclaimer in the documentation and/or other materials
017: * provided with the distribution.
018: *
019: * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to endorse or promote
020: * products derived from this Software without prior written permission of Nathaniel G.
021: * Auvil. For written permission, please contact nathaniel_auvil@users.sourceforge.net
022: *
023: * 4. Products derived from this Software may not be called "jCharts" nor may "jCharts" appear
024: * in their names without prior written permission of Nathaniel G. Auvil. jCharts is a
025: * registered trademark of Nathaniel G. Auvil.
026: *
027: * 5. Due credit should be given to the jCharts Project (http://jcharts.sourceforge.net/).
028: *
029: * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS ``AS IS'' AND ANY
030: * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
031: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
032: * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
033: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
034: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
035: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT LIABILITY, OR TORT
036: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
037: * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
038: ************************************************************************************************/package org.krysalis.jcharts.properties;
039:
040: import java.awt.BasicStroke;
041: import java.awt.Shape;
042: import java.awt.Stroke;
043:
044: import org.krysalis.jcharts.chartData.interfaces.IAxisPlotDataSet;
045: import org.krysalis.jcharts.test.HTMLGenerator;
046:
047: final public class LineChartProperties extends AxisChartTypeProperties {
048: public static final Stroke DEFAULT_LINE_STROKE = new BasicStroke(
049: 1.5f);
050:
051: private Stroke[] lineStrokes;
052: private Shape[] shapes;
053:
054: /******************************************************************************************
055: * Constructor
056: *
057: * @param lineStrokes
058: * @param shapes if any of the shapes are NULL, they will not be drawn. If the passed
059: * Array is NULL, no shpaes will be drawn. There are some Shapes defined in
060: * PointChartProperties Object.
061: *****************************************************************************************/
062: public LineChartProperties(Stroke[] lineStrokes, Shape[] shapes) {
063: this .lineStrokes = lineStrokes;
064: this .shapes = shapes;
065: }
066:
067: public Stroke[] getLineStrokes() {
068: return this .lineStrokes;
069: }
070:
071: public Shape[] getShapes() {
072: return this .shapes;
073: }
074:
075: /*********************************************************************************************
076: * Enables the testing routines to display the contents of this Object.
077: *
078: * @param htmlGenerator
079: **********************************************************************************************/
080: public void toHTML(HTMLGenerator htmlGenerator) {
081: htmlGenerator.propertiesTableStart("LineChartProperties");
082: //htmlGenerator.addTableRow( "Zero Degree Offset", Double.toString( this.getZeroDegreeOffset() ) );
083: htmlGenerator.propertiesTableEnd();
084: }
085:
086: /******************************************************************************************
087: * Validates the properties.
088: *
089: * @throws PropertyException
090: *****************************************************************************************/
091: public void validate(IAxisPlotDataSet iAxisPlotDataSet)
092: throws PropertyException {
093: if (this .lineStrokes == null) {
094: throw new PropertyException(
095: "You must define Stroke Objects for the LineChart in the LineChartProperties Object.");
096: } else {
097: if (iAxisPlotDataSet.getNumberOfDataSets() != this .lineStrokes.length) {
098: throw new PropertyException(
099: "You must define a Stroke Object for each Line in the LineChart.");
100: }
101:
102: if (this .shapes != null) {
103: if (this .shapes.length != this .lineStrokes.length) {
104: throw new PropertyException(
105: "The number of Shapes defined in the LineChartProperties Object must equal the number of Lines.");
106: }
107: }
108: }
109: }
110:
111: }
|