212 lines
6.4 KiB
Java
212 lines
6.4 KiB
Java
package net.sf.jasperreports.engine.base;
|
|
|
|
import java.awt.Color;
|
|
import java.io.Serializable;
|
|
import java.util.Collection;
|
|
import java.util.Iterator;
|
|
import java.util.SortedSet;
|
|
import java.util.TreeSet;
|
|
import net.sf.jasperreports.engine.JRChart;
|
|
import net.sf.jasperreports.engine.JRChartPlot;
|
|
import net.sf.jasperreports.engine.JRRuntimeException;
|
|
import net.sf.jasperreports.engine.JRVisitable;
|
|
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;
|
|
|
|
public abstract class JRBaseChartPlot implements JRChartPlot, Serializable, JRChangeEventsSupport {
|
|
private static final long serialVersionUID = 10200L;
|
|
|
|
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 backgroundAlpha = 1.0F;
|
|
|
|
protected float foregroundAlpha = 1.0F;
|
|
|
|
protected double labelRotation = 0.0D;
|
|
|
|
protected SortedSet seriesColors = null;
|
|
|
|
private transient JRPropertyChangeSupport eventSupport;
|
|
|
|
protected JRBaseChartPlot(JRChartPlot plot, JRChart chart) {
|
|
this.chart = chart;
|
|
if (plot != null) {
|
|
this.backcolor = plot.getOwnBackcolor();
|
|
this.orientation = plot.getOrientation();
|
|
this.backgroundAlpha = plot.getBackgroundAlpha();
|
|
this.foregroundAlpha = plot.getForegroundAlpha();
|
|
this.labelRotation = plot.getLabelRotation();
|
|
this.seriesColors = new TreeSet(plot.getSeriesColors());
|
|
} else {
|
|
this.seriesColors = new TreeSet();
|
|
}
|
|
}
|
|
|
|
protected JRBaseChartPlot(JRChartPlot plot, JRBaseObjectFactory factory) {
|
|
factory.put(plot, this);
|
|
this.chart = (JRChart)factory.getVisitResult((JRVisitable)plot.getChart());
|
|
this.backcolor = plot.getOwnBackcolor();
|
|
this.orientation = plot.getOrientation();
|
|
this.backgroundAlpha = plot.getBackgroundAlpha();
|
|
this.foregroundAlpha = plot.getForegroundAlpha();
|
|
this.labelRotation = plot.getLabelRotation();
|
|
this.seriesColors = new TreeSet(plot.getSeriesColors());
|
|
}
|
|
|
|
public JRChart getChart() {
|
|
return this.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("backcolor", old, this.backcolor);
|
|
}
|
|
|
|
public PlotOrientation getOrientation() {
|
|
return this.orientation;
|
|
}
|
|
|
|
public void setOrientation(PlotOrientation orientation) {
|
|
Object old = this.orientation;
|
|
this.orientation = orientation;
|
|
getEventSupport().firePropertyChange("orientation", old, this.orientation);
|
|
}
|
|
|
|
public float getBackgroundAlpha() {
|
|
return this.backgroundAlpha;
|
|
}
|
|
|
|
public void setBackgroundAlpha(float backgroundAlpha) {
|
|
float old = this.backgroundAlpha;
|
|
this.backgroundAlpha = backgroundAlpha;
|
|
getEventSupport().firePropertyChange("backgroundAlpha", old, this.backgroundAlpha);
|
|
}
|
|
|
|
public float getForegroundAlpha() {
|
|
return this.foregroundAlpha;
|
|
}
|
|
|
|
public void setForegroundAlpha(float foregroundAlpha) {
|
|
float old = this.foregroundAlpha;
|
|
this.foregroundAlpha = foregroundAlpha;
|
|
getEventSupport().firePropertyChange("foregroundAlpha", old, this.foregroundAlpha);
|
|
}
|
|
|
|
public double getLabelRotation() {
|
|
return this.labelRotation;
|
|
}
|
|
|
|
public void setLabelRotation(double labelRotation) {
|
|
double old = this.labelRotation;
|
|
this.labelRotation = labelRotation;
|
|
getEventSupport().firePropertyChange("labelRotation", old, this.labelRotation);
|
|
}
|
|
|
|
public SortedSet getSeriesColors() {
|
|
return this.seriesColors;
|
|
}
|
|
|
|
public void clearSeriesColors() {
|
|
setSeriesColors(null);
|
|
}
|
|
|
|
public void addSeriesColor(JRChartPlot.JRSeriesColor seriesColor) {
|
|
this.seriesColors.add(seriesColor);
|
|
getEventSupport().fireCollectionElementAddedEvent("seriesColors", seriesColor, this.seriesColors.size() - 1);
|
|
}
|
|
|
|
public void setSeriesColors(Collection colors) {
|
|
Object old = new TreeSet(this.seriesColors);
|
|
this.seriesColors.clear();
|
|
if (colors != null)
|
|
this.seriesColors.addAll(colors);
|
|
getEventSupport().firePropertyChange("seriesColors", old, this.seriesColors);
|
|
}
|
|
|
|
public static class JRBaseSeriesColor implements JRChartPlot.JRSeriesColor, Serializable, Comparable {
|
|
private static final long serialVersionUID = 10200L;
|
|
|
|
protected int seriesOrder = -1;
|
|
|
|
protected Color color = null;
|
|
|
|
public JRBaseSeriesColor(int seriesOrder, Color color) {
|
|
this.seriesOrder = seriesOrder;
|
|
this.color = color;
|
|
}
|
|
|
|
public int getSeriesOrder() {
|
|
return this.seriesOrder;
|
|
}
|
|
|
|
public Color getColor() {
|
|
return this.color;
|
|
}
|
|
|
|
public int compareTo(Object obj) {
|
|
if (obj == null)
|
|
throw new NullPointerException();
|
|
return this.seriesOrder - ((JRBaseSeriesColor)obj).getSeriesOrder();
|
|
}
|
|
|
|
public Object clone() {
|
|
try {
|
|
return super.clone();
|
|
} catch (CloneNotSupportedException e) {
|
|
throw new JRRuntimeException(e);
|
|
}
|
|
}
|
|
}
|
|
|
|
public Object clone(JRChart parentChart) {
|
|
JRBaseChartPlot clone = null;
|
|
try {
|
|
clone = (JRBaseChartPlot)clone();
|
|
} catch (CloneNotSupportedException e) {
|
|
throw new JRRuntimeException(e);
|
|
}
|
|
clone.chart = parentChart;
|
|
if (this.seriesColors != null) {
|
|
clone.seriesColors = new TreeSet();
|
|
for (Iterator it = this.seriesColors.iterator(); it.hasNext();)
|
|
clone.seriesColors.add(((JRChartPlot.JRSeriesColor)it.next()).clone());
|
|
}
|
|
return clone;
|
|
}
|
|
|
|
public JRPropertyChangeSupport getEventSupport() {
|
|
synchronized (this) {
|
|
if (this.eventSupport == null)
|
|
this.eventSupport = new JRPropertyChangeSupport(this);
|
|
}
|
|
return this.eventSupport;
|
|
}
|
|
}
|