/projects/jasperreports-3.7.4/src/net/sf/jasperreports/engine/base/JRBaseChartPlot.java
Java | 461 lines | 259 code | 69 blank | 133 comment | 15 complexity | a296b5123ee7da90f6273ac2d2cb7424 MD5 | raw file
- /*
- * JasperReports - Free Java Reporting Library.
- * Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved.
- * http://www.jaspersoft.com
- *
- * Unless you have purchased a commercial license agreement from Jaspersoft,
- * the following license terms apply:
- *
- * This program is part of JasperReports.
- *
- * JasperReports is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * JasperReports is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
- */
- package net.sf.jasperreports.engine.base;
- import java.awt.Color;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.Serializable;
- import java.util.Collection;
- import java.util.Iterator;
- import java.util.SortedSet;
- import java.util.TreeSet;
- import net.sf.jasperreports.charts.JRCategoryAxisFormat;
- import net.sf.jasperreports.engine.JRChart;
- import net.sf.jasperreports.engine.JRChartPlot;
- import net.sf.jasperreports.engine.JRConstants;
- import net.sf.jasperreports.engine.JRRuntimeException;
- import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport;
- import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport;
- import net.sf.jasperreports.engine.util.JRStyleResolver;
- import org.jfree.chart.plot.PlotOrientation;
- /**
- * @author Teodor Danciu (teodord@users.sourceforge.net)
- * @version $Id: JRBaseChartPlot.java 3716 2010-04-08 19:57:14Z teodord $
- */
- public abstract class JRBaseChartPlot implements JRChartPlot, Serializable, JRChangeEventsSupport
- {
- /**
- *
- */
- private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;
-
- public static final String PROPERTY_BACKCOLOR = "backcolor";
-
- public static final String PROPERTY_BACKGROUND_ALPHA = "backgroundAlpha";
-
- public static final String PROPERTY_FOREGROUND_ALPHA = "foregroundAlpha";
-
- public static final String PROPERTY_LABEL_ROTATION = "labelRotation";
-
- public static final String PROPERTY_ORIENTATION = "orientation";
-
- public static final String PROPERTY_SERIES_COLORS = "seriesColors";
-
- protected JRChart chart = null;
- protected Color backcolor = null;
- protected PlotOrientation orientation = PlotOrientation.VERTICAL;
- protected Float backgroundAlphaFloat = null;
- protected Float foregroundAlphaFloat = null;
- protected Double labelRotationDouble = null;
- protected SortedSet seriesColors = null;
- /**
- *
- */
- protected JRBaseChartPlot(JRChartPlot plot, JRChart chart)
- {
- this.chart = chart;
- if (plot != null)
- {
- backcolor = plot.getOwnBackcolor();
- orientation = plot.getOrientation();
- backgroundAlphaFloat = plot.getBackgroundAlphaFloat();
- foregroundAlphaFloat = plot.getForegroundAlphaFloat();
- labelRotationDouble = plot.getLabelRotationDouble();
- seriesColors = new TreeSet(plot.getSeriesColors());
- }
- else
- {
- seriesColors = new TreeSet();
- }
- }
- /**
- *
- */
- protected JRBaseChartPlot(JRChartPlot plot, JRBaseObjectFactory factory)
- {
- factory.put(plot, this);
- chart = (JRChart)factory.getVisitResult(plot.getChart());
- backcolor = plot.getOwnBackcolor();
- orientation = plot.getOrientation();
- backgroundAlphaFloat = plot.getBackgroundAlphaFloat();
- foregroundAlphaFloat = plot.getForegroundAlphaFloat();
- labelRotationDouble = plot.getLabelRotationDouble();
- seriesColors = new TreeSet(plot.getSeriesColors());
- }
-
- /**
- *
- */
- public JRChart getChart()
- {
- return chart;
- }
- /**
- *
- */
- public Color getBackcolor()
- {
- return JRStyleResolver.getBackcolor(this);
- }
- /**
- *
- */
- public Color getOwnBackcolor()
- {
- return this.backcolor;
- }
- /**
- *
- */
- public void setBackcolor(Color backcolor)
- {
- Object old = this.backcolor;
- this.backcolor = backcolor;
- getEventSupport().firePropertyChange(PROPERTY_BACKCOLOR, old, this.backcolor);
- }
- /**
- *
- */
- public PlotOrientation getOrientation()
- {
- return orientation;
- }
- /**
- *
- */
- public void setOrientation(PlotOrientation orientation)
- {
- Object old = this.orientation;
- this.orientation = orientation;
- getEventSupport().firePropertyChange(PROPERTY_ORIENTATION, old, this.orientation);
- }
- /**
- * @deprecated Replaced by {@link #getBackgroundAlphaFloat()}
- */
- public float getBackgroundAlpha()
- {
- return backgroundAlphaFloat == null ? 1f : backgroundAlphaFloat.floatValue();
- }
- /**
- * @deprecated Replaced by {@link #setBackgroundAlpha(Float)}
- */
- public void setBackgroundAlpha(float backgroundAlpha)
- {
- setBackgroundAlpha(new Float(backgroundAlpha));
- }
- /**
- * @deprecated Replaced by {@link #getForegroundAlphaFloat()}
- */
- public float getForegroundAlpha()
- {
- return foregroundAlphaFloat == null ? 1f : foregroundAlphaFloat.floatValue();
- }
- /**
- * @deprecated Replaced by {@link #setForegroundAlpha(Float)}
- */
- public void setForegroundAlpha(float foregroundAlpha)
- {
- setForegroundAlpha(new Float(foregroundAlpha));
- }
- /**
- * @deprecated Replaced by {@link #getLabelRotationDouble()}
- */
- public double getLabelRotation()
- {
- return labelRotationDouble == null ? 0d : labelRotationDouble.doubleValue();
- }
-
- /**
- * @deprecated Replaced by {@link #setLabelRotation(Double)}
- */
- public void setLabelRotation(double labelRotation)
- {
- setLabelRotation(new Double(labelRotation));
- }
-
- /**
- *
- */
- public Float getBackgroundAlphaFloat()
- {
- return backgroundAlphaFloat;
- }
- /**
- *
- */
- public void setBackgroundAlpha(Float backgroundAlpha)
- {
- Float old = this.backgroundAlphaFloat;
- this.backgroundAlphaFloat = backgroundAlpha;
- getEventSupport().firePropertyChange(PROPERTY_BACKGROUND_ALPHA, old, this.backgroundAlphaFloat);
- }
- /**
- *
- */
- public Float getForegroundAlphaFloat()
- {
- return foregroundAlphaFloat;
- }
- /**
- *
- */
- public void setForegroundAlpha(Float foregroundAlpha)
- {
- Float old = this.foregroundAlphaFloat;
- this.foregroundAlphaFloat = foregroundAlpha;
- getEventSupport().firePropertyChange(PROPERTY_FOREGROUND_ALPHA, old, this.foregroundAlphaFloat);
- }
- /**
- * Gets the angle in degrees to rotate the data axis labels. The range is -360 to 360. A positive value angles
- * the label so it reads downwards wile a negative value angles the label so it reads upwards. Only charts that
- * use a category based axis (such as line or bar charts) support label rotation.
- * @deprecated Replaced by {@link JRCategoryAxisFormat#getCategoryAxisTickLabelRotation()}.
- */
- public Double getLabelRotationDouble()
- {
- return labelRotationDouble;
- }
-
- /**
- * Sets the angle in degrees to rotate the data axis labels. The range is -360 to 360. A positive value angles
- * the label so it reads downwards wile a negative value angles the label so it reads upwards. Only charts that
- * use a category based axis (such as line or bar charts) support label rotation.
- * @deprecated Replaced by {@link JRCategoryAxisFormat#setCategoryAxisTickLabelRotation(Double)}.
- */
- public void setLabelRotation(Double labelRotation)
- {
- Double old = this.labelRotationDouble;
- this.labelRotationDouble = labelRotation;
- getEventSupport().firePropertyChange(PROPERTY_LABEL_ROTATION, old, this.labelRotationDouble);
- }
-
-
- /**
- * Returns a list of all the defined series colors. Every entry in the list is of type JRChartPlot.JRSeriesColor.
- * If there are no defined series colors this method will return an empty list, not null.
- */
- public SortedSet getSeriesColors()
- {
- return seriesColors;
- }
-
- /**
- * Removes all defined series colors.
- */
- public void clearSeriesColors()
- {
- setSeriesColors(null);
- }
-
- /**
- * Adds the specified series color to the plot.
- */
- public void addSeriesColor(JRSeriesColor seriesColor)
- {
- seriesColors.add(seriesColor);
- getEventSupport().fireCollectionElementAddedEvent(PROPERTY_SERIES_COLORS,
- seriesColor, seriesColors.size() - 1);
- }
-
- public void setSeriesColors(Collection colors)
- {
- Object old = new TreeSet(seriesColors);
- seriesColors.clear();
- if (colors != null)
- {
- seriesColors.addAll(colors);
- }
- getEventSupport().firePropertyChange(PROPERTY_SERIES_COLORS, old, seriesColors);
- }
-
- public static class JRBaseSeriesColor implements JRChartPlot.JRSeriesColor, Serializable, Comparable
- {
- /**
- *
- */
- private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;
-
- protected int seriesOrder = -1;
- protected Color color = null;
-
- public JRBaseSeriesColor(int seriesOrder, Color color)
- {
- this.seriesOrder = seriesOrder;
- this.color = color;
- }
-
- /**
- * Returns the series number (0 based) that this color applies to.
- */
- public int getSeriesOrder()
- {
- return seriesOrder;
- }
-
- /**
- * Returns the color to use for this series.
- */
- public Color getColor()
- {
- return color;
- }
- public int compareTo(Object obj) {
- if (obj == null)
- {
- throw new IllegalArgumentException();
- }
-
- return seriesOrder - ((JRBaseSeriesColor)obj).getSeriesOrder();
- }
-
- public Object clone()
- {
- try
- {
- return super.clone();
- }
- catch (CloneNotSupportedException e)
- {
- throw new JRRuntimeException(e);
- }
- }
- }
-
- /**
- *
- */
- public Object clone()
- {
- JRBaseChartPlot clone = null;
- try
- {
- clone = (JRBaseChartPlot)super.clone();
- }
- catch (CloneNotSupportedException e)
- {
- throw new JRRuntimeException(e);
- }
-
- if (seriesColors != null)
- {
- clone.seriesColors = new TreeSet();
- for(Iterator it = seriesColors.iterator(); it.hasNext();)
- {
- clone.seriesColors.add(((JRChartPlot.JRSeriesColor)it.next()).clone());
- }
- }
-
- return clone;
- }
- /**
- *
- */
- public Object clone(JRChart parentChart)
- {
- JRBaseChartPlot clone = (JRBaseChartPlot)this.clone();
-
- clone.chart = parentChart;
-
- return clone;
- }
- private transient JRPropertyChangeSupport eventSupport;
-
- public JRPropertyChangeSupport getEventSupport()
- {
- synchronized (this)
- {
- if (eventSupport == null)
- {
- eventSupport = new JRPropertyChangeSupport(this);
- }
- }
-
- return eventSupport;
- }
-
- /*
- * These fields are only for serialization backward compatibility.
- */
- private int PSEUDO_SERIAL_VERSION_UID = JRConstants.PSEUDO_SERIAL_VERSION_UID; //NOPMD
- /**
- * @deprecated
- */
- private float backgroundAlpha = 1;
- /**
- * @deprecated
- */
- private float foregroundAlpha = 1;
- /**
- * @deprecated
- */
- private double labelRotation = 0.0;
-
- private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
- {
- in.defaultReadObject();
- if (PSEUDO_SERIAL_VERSION_UID < JRConstants.PSEUDO_SERIAL_VERSION_UID_3_1_3)
- {
- backgroundAlphaFloat = new Float(backgroundAlpha);
- foregroundAlphaFloat = new Float(foregroundAlpha);
- labelRotationDouble = new Double(labelRotation);
- }
- }
-
- }