001: /***********************************************************************************************
002: * File Info: $Id: DataSet.java,v 1.1 2003/05/17 16:58:11 nathaniel_auvil 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.chartData;
039:
040: import org.krysalis.jcharts.chartData.interfaces.IDataSet;
041: import org.krysalis.jcharts.properties.ChartTypeProperties;
042: import org.krysalis.jcharts.test.HTMLGenerator;
043: import org.krysalis.jcharts.test.HTMLTestable;
044:
045: import java.awt.*;
046:
047: public class DataSet implements IDataSet, HTMLTestable {
048: private ChartTypeProperties chartTypeProperties;
049:
050: protected double[][] data;
051: protected String[] legendLabels;
052: protected Paint[] paints;
053:
054: /******************************************************************************************
055: * Constructor
056: *
057: * @param data
058: * @param legendLabels will be NULL if no Legend.
059: * @param paints
060: * @param chartTypeProperties
061: *******************************************************************************************/
062: public DataSet(double[][] data, String[] legendLabels,
063: Paint[] paints, ChartTypeProperties chartTypeProperties) {
064: this .data = data;
065: this .legendLabels = legendLabels;
066: this .paints = paints;
067: this .chartTypeProperties = chartTypeProperties;
068: }
069:
070: /******************************************************************************************
071: * Returns the legend label for the passed index. This index corresponds to the DataSet
072: * for which label you want.
073: *
074: * @param index
075: * @return String
076: *******************************************************************************************/
077: public final String getLegendLabel(int index) {
078: if (this .legendLabels == null) {
079: return null;
080: } else {
081: return this .legendLabels[index];
082: }
083: }
084:
085: /*********************************************************************************************
086: * Returns the number of Legend Labels to display. This may not be the same as the number of
087: * Data Items, as in AxisCharts, or Data Sets, as in Pie Charts.
088: *
089: * @return int
090: **********************************************************************************************/
091: public int getNumberOfLegendLabels() {
092: if (this .legendLabels == null) {
093: return 0;
094: } else {
095: return this .legendLabels.length;
096: }
097: }
098:
099: /******************************************************************************************
100: * Returns the legend label for the passed index. This index corresponds to the DataSet
101: * for which label you want.
102: *
103: * @param index
104: * @return Paint
105: *******************************************************************************************/
106: public Paint getPaint(int index) {
107: return this .paints[index];
108: }
109:
110: /******************************************************************************************
111: *
112: *
113: * @return ChartTypeProperties
114: *******************************************************************************************/
115: public ChartTypeProperties getChartTypeProperties() {
116: return this .chartTypeProperties;
117: }
118:
119: /******************************************************************************************
120: * Returns the number of elements in the data set. All data sets must be of the same length
121: * so just look at the first one.
122: *
123: * @return int
124: *******************************************************************************************/
125: public int getNumberOfDataItems() {
126: return this .data[0].length;
127: }
128:
129: /*********************************************************************************************
130: * Enables the testing routines to display the contents of this Object.
131: *
132: * @param htmlGenerator
133: **********************************************************************************************/
134: public void toHTML(HTMLGenerator htmlGenerator) {
135: htmlGenerator.propertiesTableStart(this .getClass().getName());
136: htmlGenerator.addTableRow("data", HTMLGenerator
137: .arrayToString(this .data));
138:
139: if (this .legendLabels != null) {
140: htmlGenerator.addTableRow("legendLabels", HTMLGenerator
141: .arrayToString(this .legendLabels));
142: }
143: htmlGenerator.addTableRow("paints", HTMLGenerator
144: .arrayToString(this.paints));
145: htmlGenerator.propertiesTableEnd();
146:
147: htmlGenerator.chartTableRowStart();
148: this.chartTypeProperties.toHTML(htmlGenerator);
149: htmlGenerator.chartTableRowEnd();
150: }
151:
152: }
|