java/cewolf-1.0/src/main/java/de/laures/cewolf/taglib/PlotTypes.java
author František Kučera <franta-hg@frantovo.cz>
Sat, 28 Feb 2009 21:31:02 +0100
changeset 1 639991d0808a
permissions -rw-r--r--
Rozbalená knihovna verze 1.0
franta-hg@1
     1
/* ================================================================
franta-hg@1
     2
 * Cewolf : Chart enabling Web Objects Framework
franta-hg@1
     3
 * ================================================================
franta-hg@1
     4
 *
franta-hg@1
     5
 * Project Info:  http://cewolf.sourceforge.net
franta-hg@1
     6
 * Project Lead:  Guido Laures (guido@laures.de);
franta-hg@1
     7
 *
franta-hg@1
     8
 * (C) Copyright 2002, by Guido Laures
franta-hg@1
     9
 *
franta-hg@1
    10
 * This library is free software; you can redistribute it and/or modify it under the terms
franta-hg@1
    11
 * of the GNU Lesser General Public License as published by the Free Software Foundation;
franta-hg@1
    12
 * either version 2.1 of the License, or (at your option) any later version.
franta-hg@1
    13
 *
franta-hg@1
    14
 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
franta-hg@1
    15
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
franta-hg@1
    16
 * See the GNU Lesser General Public License for more details.
franta-hg@1
    17
 *
franta-hg@1
    18
 * You should have received a copy of the GNU Lesser General Public License along with this
franta-hg@1
    19
 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
franta-hg@1
    20
 * Boston, MA 02111-1307, USA.
franta-hg@1
    21
 */
franta-hg@1
    22
franta-hg@1
    23
package de.laures.cewolf.taglib;
franta-hg@1
    24
franta-hg@1
    25
import java.util.Arrays;
franta-hg@1
    26
import java.util.List;
franta-hg@1
    27
franta-hg@1
    28
import org.jfree.chart.renderer.AbstractRenderer;
franta-hg@1
    29
import org.jfree.chart.renderer.category.AreaRenderer;
franta-hg@1
    30
import org.jfree.chart.renderer.category.BarRenderer;
franta-hg@1
    31
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
franta-hg@1
    32
import org.jfree.chart.renderer.xy.CandlestickRenderer;
franta-hg@1
    33
import org.jfree.chart.renderer.xy.HighLowRenderer;
franta-hg@1
    34
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
franta-hg@1
    35
import org.jfree.chart.renderer.xy.XYAreaRenderer;
franta-hg@1
    36
import org.jfree.chart.renderer.xy.XYBarRenderer;
franta-hg@1
    37
import org.jfree.chart.renderer.xy.XYStepRenderer;
franta-hg@1
    38
franta-hg@1
    39
/**
franta-hg@1
    40
 * Contains the list of all possible plot type string values which can be used
franta-hg@1
    41
 * in the <code>type</code> attribute of a &lt;chart&gt; tag.
franta-hg@1
    42
 *
franta-hg@1
    43
 * It also contains all the renders that correspond with the plot types
franta-hg@1
    44
 * @author  Chris McCann
franta-hg@1
    45
 */
franta-hg@1
    46
public class PlotTypes {
franta-hg@1
    47
franta-hg@1
    48
	/** All type strings in an array */
franta-hg@1
    49
	public static final String[] typeNames =
franta-hg@1
    50
		{
franta-hg@1
    51
			"xyarea",
franta-hg@1
    52
			"xyline",
franta-hg@1
    53
			"xyshapesandlines",
franta-hg@1
    54
			"scatter",
franta-hg@1
    55
			"xyverticalbar",
franta-hg@1
    56
			"step",
franta-hg@1
    57
			"candlestick",
franta-hg@1
    58
			"highlow",
franta-hg@1
    59
			"signal",
franta-hg@1
    60
			"verticalbar",
franta-hg@1
    61
			"area",
franta-hg@1
    62
			"line",
franta-hg@1
    63
			"shapesandlines" };
franta-hg@1
    64
franta-hg@1
    65
	/**
franta-hg@1
    66
	 * The whole typeNames array inside of a list.
franta-hg@1
    67
	 * @see #typeNames
franta-hg@1
    68
	 */
franta-hg@1
    69
	private static final List typeList = Arrays.asList(typeNames);
franta-hg@1
    70
	
franta-hg@1
    71
	/**
franta-hg@1
    72
	 * Create a renderer for the given type index.
franta-hg@1
    73
	 * We create a new renderer instance for each chart, because they may want to customize
franta-hg@1
    74
	 * it in a post-processor.
franta-hg@1
    75
	 * 
franta-hg@1
    76
	 * @param idx The index of the type
franta-hg@1
    77
	 * @return A new renderer instance
franta-hg@1
    78
	 */
franta-hg@1
    79
	public static AbstractRenderer getRenderer(int idx) {
franta-hg@1
    80
		switch (idx) {
franta-hg@1
    81
			case 0: return new XYAreaRenderer();
franta-hg@1
    82
			case 1: return new StandardXYItemRenderer();
franta-hg@1
    83
			case 2: return new StandardXYItemRenderer(StandardXYItemRenderer.SHAPES_AND_LINES);
franta-hg@1
    84
			case 3: return new StandardXYItemRenderer(StandardXYItemRenderer.SHAPES);
franta-hg@1
    85
			case 4: return new XYBarRenderer();
franta-hg@1
    86
			case 5: return new XYStepRenderer();
franta-hg@1
    87
			case 6: return new CandlestickRenderer();
franta-hg@1
    88
			case 7: return new HighLowRenderer();
franta-hg@1
    89
			//case 8: return new SignalRenderer();
franta-hg@1
    90
			case 9: return new BarRenderer();
franta-hg@1
    91
			case 10: return new AreaRenderer();
franta-hg@1
    92
			case 11: return new LineAndShapeRenderer(true,false);
franta-hg@1
    93
			case 12: return new LineAndShapeRenderer(true,true);
franta-hg@1
    94
			default:
franta-hg@1
    95
				throw new RuntimeException("Invalid renderer index:" + idx);
franta-hg@1
    96
		}		
franta-hg@1
    97
	}
franta-hg@1
    98
franta-hg@1
    99
	private PlotTypes() {
franta-hg@1
   100
	}
franta-hg@1
   101
franta-hg@1
   102
    /**
franta-hg@1
   103
     * Get the renderer index for the given plot type.
franta-hg@1
   104
     * @param plotType The type string of the plot
franta-hg@1
   105
     * @return The index The index of renderer
franta-hg@1
   106
     * @throws AttributeValidationException if unknown type
franta-hg@1
   107
     */
franta-hg@1
   108
    public static int getRendererIndex(String plotType) throws AttributeValidationException  {
franta-hg@1
   109
        int rendererIndex = PlotTypes.typeList.indexOf(plotType.toLowerCase());
franta-hg@1
   110
        if (rendererIndex < 0) {
franta-hg@1
   111
          throw new AttributeValidationException("plot.type", plotType);
franta-hg@1
   112
        }
franta-hg@1
   113
        return rendererIndex;
franta-hg@1
   114
    }
franta-hg@1
   115
franta-hg@1
   116
}