franta-hg@1: /* ================================================================ franta-hg@1: * Cewolf : Chart enabling Web Objects Framework franta-hg@1: * ================================================================ franta-hg@1: * franta-hg@1: * Project Info: http://cewolf.sourceforge.net franta-hg@1: * Project Lead: Guido Laures (guido@laures.de); franta-hg@1: * franta-hg@1: * (C) Copyright 2002, by Guido Laures franta-hg@1: * franta-hg@1: * This library is free software; you can redistribute it and/or modify it under the terms franta-hg@1: * of the GNU Lesser General Public License as published by the Free Software Foundation; franta-hg@1: * either version 2.1 of the License, or (at your option) any later version. franta-hg@1: * franta-hg@1: * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; franta-hg@1: * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. franta-hg@1: * See the GNU Lesser General Public License for more details. franta-hg@1: * franta-hg@1: * You should have received a copy of the GNU Lesser General Public License along with this franta-hg@1: * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, franta-hg@1: * Boston, MA 02111-1307, USA. franta-hg@1: */ franta-hg@1: franta-hg@1: package de.laures.cewolf.taglib; franta-hg@1: franta-hg@1: import java.util.Arrays; franta-hg@1: import java.util.List; franta-hg@1: franta-hg@1: import org.jfree.chart.renderer.AbstractRenderer; franta-hg@1: import org.jfree.chart.renderer.category.AreaRenderer; franta-hg@1: import org.jfree.chart.renderer.category.BarRenderer; franta-hg@1: import org.jfree.chart.renderer.category.LineAndShapeRenderer; franta-hg@1: import org.jfree.chart.renderer.xy.CandlestickRenderer; franta-hg@1: import org.jfree.chart.renderer.xy.HighLowRenderer; franta-hg@1: import org.jfree.chart.renderer.xy.StandardXYItemRenderer; franta-hg@1: import org.jfree.chart.renderer.xy.XYAreaRenderer; franta-hg@1: import org.jfree.chart.renderer.xy.XYBarRenderer; franta-hg@1: import org.jfree.chart.renderer.xy.XYStepRenderer; franta-hg@1: franta-hg@1: /** franta-hg@1: * Contains the list of all possible plot type string values which can be used franta-hg@1: * in the type attribute of a <chart> tag. franta-hg@1: * franta-hg@1: * It also contains all the renders that correspond with the plot types franta-hg@1: * @author Chris McCann franta-hg@1: */ franta-hg@1: public class PlotTypes { franta-hg@1: franta-hg@1: /** All type strings in an array */ franta-hg@1: public static final String[] typeNames = franta-hg@1: { franta-hg@1: "xyarea", franta-hg@1: "xyline", franta-hg@1: "xyshapesandlines", franta-hg@1: "scatter", franta-hg@1: "xyverticalbar", franta-hg@1: "step", franta-hg@1: "candlestick", franta-hg@1: "highlow", franta-hg@1: "signal", franta-hg@1: "verticalbar", franta-hg@1: "area", franta-hg@1: "line", franta-hg@1: "shapesandlines" }; franta-hg@1: franta-hg@1: /** franta-hg@1: * The whole typeNames array inside of a list. franta-hg@1: * @see #typeNames franta-hg@1: */ franta-hg@1: private static final List typeList = Arrays.asList(typeNames); franta-hg@1: franta-hg@1: /** franta-hg@1: * Create a renderer for the given type index. franta-hg@1: * We create a new renderer instance for each chart, because they may want to customize franta-hg@1: * it in a post-processor. franta-hg@1: * franta-hg@1: * @param idx The index of the type franta-hg@1: * @return A new renderer instance franta-hg@1: */ franta-hg@1: public static AbstractRenderer getRenderer(int idx) { franta-hg@1: switch (idx) { franta-hg@1: case 0: return new XYAreaRenderer(); franta-hg@1: case 1: return new StandardXYItemRenderer(); franta-hg@1: case 2: return new StandardXYItemRenderer(StandardXYItemRenderer.SHAPES_AND_LINES); franta-hg@1: case 3: return new StandardXYItemRenderer(StandardXYItemRenderer.SHAPES); franta-hg@1: case 4: return new XYBarRenderer(); franta-hg@1: case 5: return new XYStepRenderer(); franta-hg@1: case 6: return new CandlestickRenderer(); franta-hg@1: case 7: return new HighLowRenderer(); franta-hg@1: //case 8: return new SignalRenderer(); franta-hg@1: case 9: return new BarRenderer(); franta-hg@1: case 10: return new AreaRenderer(); franta-hg@1: case 11: return new LineAndShapeRenderer(true,false); franta-hg@1: case 12: return new LineAndShapeRenderer(true,true); franta-hg@1: default: franta-hg@1: throw new RuntimeException("Invalid renderer index:" + idx); franta-hg@1: } franta-hg@1: } franta-hg@1: franta-hg@1: private PlotTypes() { franta-hg@1: } franta-hg@1: franta-hg@1: /** franta-hg@1: * Get the renderer index for the given plot type. franta-hg@1: * @param plotType The type string of the plot franta-hg@1: * @return The index The index of renderer franta-hg@1: * @throws AttributeValidationException if unknown type franta-hg@1: */ franta-hg@1: public static int getRendererIndex(String plotType) throws AttributeValidationException { franta-hg@1: int rendererIndex = PlotTypes.typeList.indexOf(plotType.toLowerCase()); franta-hg@1: if (rendererIndex < 0) { franta-hg@1: throw new AttributeValidationException("plot.type", plotType); franta-hg@1: } franta-hg@1: return rendererIndex; franta-hg@1: } franta-hg@1: franta-hg@1: }