001    package jp.osdl.jbento2.chart;
002    
003    import org.jfree.chart.ChartFactory;
004    import org.jfree.chart.JFreeChart;
005    import org.jfree.chart.axis.ValueAxis;
006    import org.jfree.chart.labels.StandardXYToolTipGenerator;
007    import org.jfree.chart.plot.PlotOrientation;
008    import org.jfree.chart.plot.XYPlot;
009    import org.jfree.chart.renderer.xy.StackedXYAreaRenderer2;
010    import org.jfree.chart.urls.StandardXYURLGenerator;
011    import org.jfree.data.general.AbstractDataset;
012    import org.jfree.data.xy.XYDataset;
013    
014    public class StackedTimeSeriesChartType implements ChartType {
015    
016        public JFreeChart getChart(String title, String xLabel, String yLabel,
017                long xMin, long xMax, long yMin, long yMax,
018                AbstractDataset dataset, PlotOrientation orientation,
019                boolean legend, boolean tooltips, boolean urls, boolean shape) {
020    
021            // JFreeChart chart = ChartFactory.createStackedXYAreaChart(title,
022            // xLabel,
023            // yLabel, (TableXYDataset) dataset, orientation, legend,
024            // tooltips, urls);
025            JFreeChart chart = ChartFactory.createTimeSeriesChart(title, xLabel,
026                    yLabel, (XYDataset) dataset, legend, tooltips, urls);
027    
028            StackedXYAreaRenderer2 renderer = new StackedXYAreaRenderer2();
029    
030            if (tooltips) {
031                renderer.setToolTipGenerator(new StandardXYToolTipGenerator());
032            }
033            if (urls) {
034                renderer.setURLGenerator(new StandardXYURLGenerator());
035            }
036            renderer.setOutline(true);
037    
038            XYPlot plot = chart.getXYPlot();
039            plot.setRenderer(renderer);
040    
041            if (xMax > 0) {
042                ValueAxis xAxis = plot.getDomainAxis();
043                xAxis.setAutoRange(false);
044                xAxis.setRange(xMin, xMax);
045            }
046            
047            ValueAxis yAxis = plot.getRangeAxis();
048            yAxis.setLowerBound(yMin);
049            if (yMax > 0) {
050                yAxis.setRange(yMin, yMax);
051            }
052            return chart;
053        }
054    }