001: /* ================================================================
002: * Cewolf : Chart enabling Web Objects Framework
003: * ================================================================
004: *
005: * Project Info: http://cewolf.sourceforge.net
006: * Project Lead: Guido Laures (guido@laures.de);
007: *
008: * (C) Copyright 2002, by Guido Laures
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:
023: package de.laures.cewolf.taglib;
024:
025: import java.util.Arrays;
026: import java.util.List;
027:
028: import org.jfree.chart.renderer.AbstractRenderer;
029: import org.jfree.chart.renderer.category.AreaRenderer;
030: import org.jfree.chart.renderer.category.BarRenderer;
031: import org.jfree.chart.renderer.category.LineAndShapeRenderer;
032: import org.jfree.chart.renderer.xy.CandlestickRenderer;
033: import org.jfree.chart.renderer.xy.HighLowRenderer;
034: import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
035: import org.jfree.chart.renderer.xy.XYAreaRenderer;
036: import org.jfree.chart.renderer.xy.XYBarRenderer;
037: import org.jfree.chart.renderer.xy.XYStepRenderer;
038:
039: /**
040: * Contains the list of all possible plot type string values which can be used
041: * in the <code>type</code> attribute of a <chart> tag.
042: *
043: * It also contains all the renders that correspond with the plot types
044: * @author Chris McCann
045: */
046: public class PlotTypes {
047:
048: /** All type strings in an array */
049: public static final String[] typeNames = { "xyarea", "xyline",
050: "xyshapesandlines", "scatter", "xyverticalbar", "step",
051: "candlestick", "highlow", "signal", "verticalbar", "area",
052: "line", "shapesandlines" };
053:
054: /**
055: * The whole typeNames array inside of a list.
056: * @see #typeNames
057: */
058: private static final List typeList = Arrays.asList(typeNames);
059:
060: /**
061: * Create a renderer for the given type index.
062: * We create a new renderer instance for each chart, because they may want to customize
063: * it in a post-processor.
064: *
065: * @param idx The index of the type
066: * @return A new renderer instance
067: */
068: public static AbstractRenderer getRenderer(int idx) {
069: switch (idx) {
070: case 0:
071: return new XYAreaRenderer();
072: case 1:
073: return new StandardXYItemRenderer();
074: case 2:
075: return new StandardXYItemRenderer(
076: StandardXYItemRenderer.SHAPES_AND_LINES);
077: case 3:
078: return new StandardXYItemRenderer(
079: StandardXYItemRenderer.SHAPES);
080: case 4:
081: return new XYBarRenderer();
082: case 5:
083: return new XYStepRenderer();
084: case 6:
085: return new CandlestickRenderer();
086: case 7:
087: return new HighLowRenderer();
088: //case 8: return new SignalRenderer();
089: case 9:
090: return new BarRenderer();
091: case 10:
092: return new AreaRenderer();
093: case 11:
094: return new LineAndShapeRenderer(true, false);
095: case 12:
096: return new LineAndShapeRenderer(true, true);
097: default:
098: throw new RuntimeException("Invalid renderer index:" + idx);
099: }
100: }
101:
102: private PlotTypes() {
103: }
104:
105: /**
106: * Get the renderer index for the given plot type.
107: * @param plotType The type string of the plot
108: * @return The index The index of renderer
109: * @throws AttributeValidationException if unknown type
110: */
111: public static int getRendererIndex(String plotType)
112: throws AttributeValidationException {
113: int rendererIndex = PlotTypes.typeList.indexOf(plotType
114: .toLowerCase());
115: if (rendererIndex < 0) {
116: throw new AttributeValidationException("plot.type",
117: plotType);
118: }
119: return rendererIndex;
120: }
121:
122: }
|