/* * Copyright 2002 - 2013 Pentaho Corporation. All rights reserved. * * This software was developed by Pentaho Corporation and is provided under the terms * of the Mozilla Public License, Version 1.1, or any later version. You may not use * this file except in compliance with the license. If you need a copy of the license, * please go to http://www.mozilla.org/MPL/MPL-1.1.txt. TThe Initial Developer is Pentaho Corporation. * * Software distributed under the Mozilla Public License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to * the license for the specific language governing your rights and limitations. */ package org.pentaho.plugin.jfreereport.reportcharts; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.pentaho.plugin.jfreereport.reportcharts.backport.XYDotRenderer; public class ScatterPlotChartExpression extends XYChartExpression { private static final long serialVersionUID = 7822813481960064738L; private int dotWidth; private int dotHeight; public ScatterPlotChartExpression() { dotHeight = 5; dotWidth = 5; } protected JFreeChart computeXYChart( final XYDataset xyDataset ) { final JFreeChart chart; if ( xyDataset instanceof TimeSeriesCollection ) { chart = ChartFactory.createTimeSeriesChart( computeTitle(), getDomainTitle(), getRangeTitle(), xyDataset, isShowLegend(), false, false ); final XYPlot xyPlot = chart.getXYPlot(); final XYLineAndShapeRenderer itemRenderer = (XYLineAndShapeRenderer) xyPlot.getRenderer(); final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( false, true ); renderer.setBaseToolTipGenerator( itemRenderer.getBaseToolTipGenerator() ); renderer.setURLGenerator( itemRenderer.getURLGenerator() ); xyPlot.setRenderer( renderer ); } else { final PlotOrientation orientation = computePlotOrientation(); chart = ChartFactory.createScatterPlot( computeTitle(), getDomainTitle(), getRangeTitle(), xyDataset, orientation, isShowLegend(), false, false ); } chart.getXYPlot().setRenderer( new XYDotRenderer() ); configureLogarithmicAxis( chart.getXYPlot() ); return chart; } protected void configureChart( final JFreeChart chart ) { super.configureChart( chart ); final XYPlot xypl = chart.getXYPlot(); final XYItemRenderer renderer = xypl.getRenderer(); if ( renderer instanceof XYDotRenderer ) { final XYDotRenderer renderer1 = (XYDotRenderer) renderer; renderer1.setDotHeight( getDotHeight() ); renderer1.setDotWidth( getDotWidth() ); } } /** * @return Returns the dot height. */ public int getDotHeight() { return dotHeight; } /** * @param height The dot height to set. */ public void setDotHeight( final int height ) { this.dotHeight = height; } /** * @return Returns the dot width. */ public int getDotWidth() { return dotWidth; } /** * @param width The dot width to set. */ public void setDotWidth( final int width ) { this.dotWidth = width; } }