001: /***********************************************************************************************
002: * File Info: $Id: AxisChartTypeProperties.java,v 1.1 2003/05/17 17:00:31 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.properties;
039:
040: import org.krysalis.jcharts.test.HTMLTestable;
041: import org.krysalis.jcharts.chartData.interfaces.IAxisPlotDataSet;
042: import org.krysalis.jcharts.axisChart.customRenderers.axisValue.*;
043:
044: import java.util.ArrayList;
045:
046: /********************************************************************************************
047: * Common parent for all Chart type specific properties Objects.
048: *
049: *
050: *******************************************************************************************/
051: public abstract class AxisChartTypeProperties extends
052: ChartTypeProperties implements HTMLTestable {
053: private ArrayList preRenderEventListeners;
054: private ArrayList postRenderEventListeners;
055:
056: public abstract void validate(IAxisPlotDataSet iAxisPlotDataSet)
057: throws PropertyException;
058:
059: /**************************************************************************************
060: * Allows you to get callbacks for custom implementations to render on the axis and to
061: * control the renderering on the axis before a value is drawn.
062: *
063: * @param preRenderListener
064: *************************************************************************************/
065: public void addPreRenderEventListener(
066: PreAxisValueRenderListener preRenderListener) {
067: if (this .preRenderEventListeners == null) {
068: this .preRenderEventListeners = new ArrayList();
069: }
070:
071: this .preRenderEventListeners.add(preRenderListener);
072: }
073:
074: /**************************************************************************************
075: *
076: * @param axisValueRenderEvent
077: *************************************************************************************/
078: public void firePreRender(AxisValueRenderEvent axisValueRenderEvent) {
079: if (this .preRenderEventListeners != null) {
080: PreAxisValueRenderListener preRenderListener;
081: for (int i = 0; i < this .preRenderEventListeners.size(); i++) {
082: preRenderListener = (PreAxisValueRenderListener) this .preRenderEventListeners
083: .get(i);
084: preRenderListener.preRender(axisValueRenderEvent);
085: }
086: }
087: }
088:
089: /**************************************************************************************
090: * Allows you to get callbacks for custom implementations to render on the axis and to
091: * control the renderering on the axis after a value is drawn.
092: *
093: * @param postRenderListener
094: *************************************************************************************/
095: public void addPostRenderEventListener(
096: PostAxisValueRenderListener postRenderListener) {
097: if (this .postRenderEventListeners == null) {
098: this .postRenderEventListeners = new ArrayList();
099: }
100:
101: this .postRenderEventListeners.add(postRenderListener);
102: }
103:
104: /**************************************************************************************
105: *
106: * @param axisValueRenderEvent
107: *************************************************************************************/
108: public void firePostRender(AxisValueRenderEvent axisValueRenderEvent) {
109: if (this .postRenderEventListeners != null) {
110: PostAxisValueRenderListener postRenderListener;
111: for (int i = 0; i < this .postRenderEventListeners.size(); i++) {
112: postRenderListener = (PostAxisValueRenderListener) this.postRenderEventListeners
113: .get(i);
114: postRenderListener.postRender(axisValueRenderEvent);
115: }
116: }
117: }
118:
119: }
|