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.StandardXYItemRenderer;
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 XYLineChartType 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.createXYLineChart(title, xLabel,
022                    yLabel, (XYDataset) dataset, orientation, legend, tooltips,
023                    urls);
024    
025            StandardXYItemRenderer renderer = null;
026            if (shape) {
027                renderer = new StandardXYItemRenderer(
028                        StandardXYItemRenderer.SHAPES_AND_LINES);
029            } else {
030                renderer = new StandardXYItemRenderer();
031            }
032            if (tooltips) {
033                renderer.setToolTipGenerator(new StandardXYToolTipGenerator());
034            }
035            if (urls) {
036                renderer.setURLGenerator(new StandardXYURLGenerator());
037            }
038    
039            XYPlot plot = chart.getXYPlot();
040            plot.setRenderer(renderer);
041    
042            ValueAxis xAxis = plot.getDomainAxis();
043            // xAxis.setUpperMargin(0.05);
044            // xAxis.setLowerMargin(0.05);
045            if (xMax > 0) {
046                xAxis.setAutoRange(false);
047                xAxis.setRange(xMin, xMax);
048            }
049            ValueAxis yAxis = plot.getRangeAxis();
050            yAxis.setLowerBound(yMin);
051            if (yMax > 0) {
052                yAxis.setRange(yMin, yMax);
053            }
054    
055            return chart;
056        }
057    }