/* * 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; public class XYLineChartExpression extends XYChartExpression { private static final long serialVersionUID = 588996014868712814L; private String lineStyle; private float lineWidth; private boolean markersVisible; public XYLineChartExpression() { lineWidth = 1.0f; } protected JFreeChart computeXYChart( final XYDataset xyDataset ) { final JFreeChart chart; if ( xyDataset instanceof TimeSeriesCollection ) { chart = ChartFactory.createTimeSeriesChart( computeTitle(), getDomainTitle(), getRangeTitle(), xyDataset, isShowLegend(), false, false ); } else { final PlotOrientation orientation = computePlotOrientation(); chart = ChartFactory.createXYLineChart( computeTitle(), getDomainTitle(), getRangeTitle(), xyDataset, orientation, isShowLegend(), false, false ); } configureLogarithmicAxis( chart.getXYPlot() ); return chart; } protected void configureChart( final JFreeChart chart ) { super.configureChart( chart ); final XYPlot xypl = chart.getXYPlot(); final XYItemRenderer renderer = xypl.getRenderer(); renderer.setStroke( translateLineStyle( lineWidth, lineStyle ) ); if ( renderer instanceof XYLineAndShapeRenderer ) { final XYLineAndShapeRenderer renderer1 = (XYLineAndShapeRenderer) renderer; renderer1.setShapesVisible( isMarkersVisible() ); renderer1.setBaseShapesFilled( isMarkersVisible() ); } } /** * @return returns the style set for the lines */ public String getLineStyle() { return lineStyle; } /** * @param value set the style for all line series */ public void setLineStyle( final String value ) { lineStyle = value; } /** * @return the width of all line series Valid values are float numbers zero or greater */ public float getLineWidth() { return lineWidth; } /** * @param value set the width of all line series Valid values are float numbers zero or greater */ public void setLineWidth( final float value ) { lineWidth = value; } /** * @return boolean whether the markers (data points) for all series are displayed */ public boolean isMarkersVisible() { return markersVisible; } /** * @param markersVisible set whether the markers (data points) for all series should be displayed */ public void setMarkersVisible( final boolean markersVisible ) { this.markersVisible = markersVisible; } }