Files
HRMS/hrmsEjb/net/sf/jasperreports/engine/fill/JRFillChart.java
2025-07-28 13:56:49 +05:30

1487 lines
73 KiB
Java

package net.sf.jasperreports.engine.fill;
import java.awt.Color;
import java.awt.Font;
import java.awt.Paint;
import java.awt.geom.Rectangle2D;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Iterator;
import java.util.List;
import java.util.SortedSet;
import net.sf.jasperreports.charts.JRAreaPlot;
import net.sf.jasperreports.charts.JRBar3DPlot;
import net.sf.jasperreports.charts.JRBarPlot;
import net.sf.jasperreports.charts.JRBubblePlot;
import net.sf.jasperreports.charts.JRCandlestickPlot;
import net.sf.jasperreports.charts.JRCategoryDataset;
import net.sf.jasperreports.charts.JRDataRange;
import net.sf.jasperreports.charts.JRHighLowDataset;
import net.sf.jasperreports.charts.JRHighLowPlot;
import net.sf.jasperreports.charts.JRLinePlot;
import net.sf.jasperreports.charts.JRMeterPlot;
import net.sf.jasperreports.charts.JRMultiAxisPlot;
import net.sf.jasperreports.charts.JRPie3DPlot;
import net.sf.jasperreports.charts.JRPieDataset;
import net.sf.jasperreports.charts.JRPiePlot;
import net.sf.jasperreports.charts.JRScatterPlot;
import net.sf.jasperreports.charts.JRThermometerPlot;
import net.sf.jasperreports.charts.JRTimePeriodDataset;
import net.sf.jasperreports.charts.JRTimeSeriesDataset;
import net.sf.jasperreports.charts.JRTimeSeriesPlot;
import net.sf.jasperreports.charts.JRValueDataset;
import net.sf.jasperreports.charts.JRValueDisplay;
import net.sf.jasperreports.charts.JRXyDataset;
import net.sf.jasperreports.charts.JRXyzDataset;
import net.sf.jasperreports.charts.fill.JRFillAreaPlot;
import net.sf.jasperreports.charts.fill.JRFillBar3DPlot;
import net.sf.jasperreports.charts.fill.JRFillBarPlot;
import net.sf.jasperreports.charts.fill.JRFillCategoryDataset;
import net.sf.jasperreports.charts.fill.JRFillChartAxis;
import net.sf.jasperreports.charts.fill.JRFillHighLowDataset;
import net.sf.jasperreports.charts.fill.JRFillLinePlot;
import net.sf.jasperreports.charts.fill.JRFillMeterPlot;
import net.sf.jasperreports.charts.fill.JRFillMultiAxisPlot;
import net.sf.jasperreports.charts.fill.JRFillPie3DPlot;
import net.sf.jasperreports.charts.fill.JRFillPieDataset;
import net.sf.jasperreports.charts.fill.JRFillPiePlot;
import net.sf.jasperreports.charts.fill.JRFillThermometerPlot;
import net.sf.jasperreports.charts.fill.JRFillTimePeriodDataset;
import net.sf.jasperreports.charts.fill.JRFillTimeSeriesDataset;
import net.sf.jasperreports.charts.fill.JRFillXyDataset;
import net.sf.jasperreports.charts.fill.JRFillXyzDataset;
import net.sf.jasperreports.charts.util.CategoryChartHyperlinkProvider;
import net.sf.jasperreports.charts.util.ChartHyperlinkProvider;
import net.sf.jasperreports.charts.util.ChartRendererFactory;
import net.sf.jasperreports.charts.util.HighLowChartHyperlinkProvider;
import net.sf.jasperreports.charts.util.JRMeterInterval;
import net.sf.jasperreports.charts.util.PieChartHyperlinkProvider;
import net.sf.jasperreports.charts.util.PieLabelGenerator;
import net.sf.jasperreports.charts.util.TimePeriodChartHyperlinkProvider;
import net.sf.jasperreports.charts.util.TimeSeriesChartHyperlinkProvider;
import net.sf.jasperreports.charts.util.XYChartHyperlinkProvider;
import net.sf.jasperreports.engine.JRAbstractChartCustomizer;
import net.sf.jasperreports.engine.JRBox;
import net.sf.jasperreports.engine.JRBoxContainer;
import net.sf.jasperreports.engine.JRChart;
import net.sf.jasperreports.engine.JRChartCustomizer;
import net.sf.jasperreports.engine.JRChartDataset;
import net.sf.jasperreports.engine.JRChartPlot;
import net.sf.jasperreports.engine.JRCommonElement;
import net.sf.jasperreports.engine.JRElement;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExpression;
import net.sf.jasperreports.engine.JRExpressionCollector;
import net.sf.jasperreports.engine.JRFont;
import net.sf.jasperreports.engine.JRGroup;
import net.sf.jasperreports.engine.JRHyperlink;
import net.sf.jasperreports.engine.JRHyperlinkParameter;
import net.sf.jasperreports.engine.JRLineBox;
import net.sf.jasperreports.engine.JRPen;
import net.sf.jasperreports.engine.JRPrintElement;
import net.sf.jasperreports.engine.JRPrintHyperlinkParameters;
import net.sf.jasperreports.engine.JRPrintImage;
import net.sf.jasperreports.engine.JRRenderable;
import net.sf.jasperreports.engine.JRRuntimeException;
import net.sf.jasperreports.engine.JRStyle;
import net.sf.jasperreports.engine.JRStyleContainer;
import net.sf.jasperreports.engine.JRVisitor;
import net.sf.jasperreports.engine.base.JRBaseFont;
import net.sf.jasperreports.engine.util.JRClassLoader;
import net.sf.jasperreports.engine.util.JRFontUtil;
import net.sf.jasperreports.engine.util.JRPenUtil;
import net.sf.jasperreports.engine.util.JRProperties;
import net.sf.jasperreports.engine.util.JRSingletonCache;
import net.sf.jasperreports.engine.util.JRStyleResolver;
import net.sf.jasperreports.engine.util.LineBoxWrapper;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.Axis;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.CategoryItemLabelGenerator;
import org.jfree.chart.labels.PieSectionLabelGenerator;
import org.jfree.chart.labels.XYItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DefaultDrawingSupplier;
import org.jfree.chart.plot.DialShape;
import org.jfree.chart.plot.DrawingSupplier;
import org.jfree.chart.plot.MeterInterval;
import org.jfree.chart.plot.MeterPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.ThermometerPlot;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.renderer.category.StackedBarRenderer3D;
import org.jfree.chart.renderer.xy.CandlestickRenderer;
import org.jfree.chart.renderer.xy.HighLowRenderer;
import org.jfree.chart.renderer.xy.XYBubbleRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.chart.title.Title;
import org.jfree.data.Range;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.data.general.ValueDataset;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.data.xy.OHLCDataset;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYZDataset;
import org.jfree.ui.RectangleEdge;
public class JRFillChart extends JRFillElement implements JRChart {
private static final Color TRANSPARENT_PAINT = new Color(0, 0, 0, 0);
private static final JRSingletonCache chartRendererFactoryCache = new JRSingletonCache(ChartRendererFactory.class);
protected byte chartType = 0;
protected JRFont titleFont = null;
protected JRFont subtitleFont = null;
protected JRFont legendFont = null;
protected JRGroup evaluationGroup = null;
protected JRFillChartDataset dataset = null;
protected JRChartPlot plot = null;
protected JRRenderable renderer = null;
private String anchorName = null;
private String hyperlinkReference = null;
private String hyperlinkAnchor = null;
private Integer hyperlinkPage = null;
private String hyperlinkTooltip;
private JRPrintHyperlinkParameters hyperlinkParameters;
protected String customizerClass;
protected JRChartCustomizer chartCustomizer;
protected String renderType;
protected JFreeChart chart;
protected ChartHyperlinkProvider chartHyperlinkProvider;
protected JRFillChart(JRBaseFiller filler, JRChart chart, JRFillObjectFactory factory) {
super(filler, (JRElement)chart, factory);
this.chartType = chart.getChartType();
switch (this.chartType) {
case 1:
this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getAreaPlot((JRAreaPlot)chart.getPlot());
break;
case 3:
this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getBarPlot((JRBarPlot)chart.getPlot());
break;
case 2:
this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getBar3DPlot((JRBar3DPlot)chart.getPlot());
break;
case 4:
this.dataset = (JRFillChartDataset)factory.getXyzDataset((JRXyzDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getBubblePlot((JRBubblePlot)chart.getPlot());
break;
case 5:
this.dataset = (JRFillChartDataset)factory.getHighLowDataset((JRHighLowDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getCandlestickPlot((JRCandlestickPlot)chart.getPlot());
break;
case 6:
this.dataset = (JRFillChartDataset)factory.getHighLowDataset((JRHighLowDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getHighLowPlot((JRHighLowPlot)chart.getPlot());
break;
case 7:
this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getLinePlot((JRLinePlot)chart.getPlot());
break;
case 17:
this.dataset = (JRFillChartDataset)factory.getValueDataset((JRValueDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getMeterPlot((JRMeterPlot)chart.getPlot());
break;
case 19:
this.plot = (JRChartPlot)factory.getMultiAxisPlot((JRMultiAxisPlot)chart.getPlot());
this.dataset = ((JRFillMultiAxisPlot)this.plot).getMainDataset();
break;
case 9:
this.dataset = (JRFillChartDataset)factory.getPieDataset((JRPieDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getPiePlot((JRPiePlot)chart.getPlot());
break;
case 8:
this.dataset = (JRFillChartDataset)factory.getPieDataset((JRPieDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getPie3DPlot((JRPie3DPlot)chart.getPlot());
break;
case 10:
this.dataset = (JRFillChartDataset)factory.getXyDataset((JRXyDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getScatterPlot((JRScatterPlot)chart.getPlot());
break;
case 12:
this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getBarPlot((JRBarPlot)chart.getPlot());
break;
case 11:
this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getBar3DPlot((JRBar3DPlot)chart.getPlot());
break;
case 18:
this.dataset = (JRFillChartDataset)factory.getValueDataset((JRValueDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getThermometerPlot((JRThermometerPlot)chart.getPlot());
break;
case 16:
this.dataset = (JRFillChartDataset)factory.getTimeSeriesDataset((JRTimeSeriesDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getTimeSeriesPlot((JRTimeSeriesPlot)chart.getPlot());
break;
case 13:
this.dataset = (JRFillChartDataset)factory.getXyDataset((JRXyDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getAreaPlot((JRAreaPlot)chart.getPlot());
break;
case 14:
switch (chart.getDataset().getDatasetType()) {
case 6:
this.dataset = (JRFillChartDataset)factory.getTimeSeriesDataset((JRTimeSeriesDataset)chart.getDataset());
break;
case 5:
this.dataset = (JRFillChartDataset)factory.getTimePeriodDataset((JRTimePeriodDataset)chart.getDataset());
break;
case 3:
this.dataset = (JRFillChartDataset)factory.getXyDataset((JRXyDataset)chart.getDataset());
break;
}
this.plot = (JRChartPlot)factory.getBarPlot((JRBarPlot)chart.getPlot());
break;
case 15:
this.dataset = (JRFillChartDataset)factory.getXyDataset((JRXyDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getLinePlot((JRLinePlot)chart.getPlot());
break;
case 20:
this.dataset = (JRFillChartDataset)factory.getCategoryDataset((JRCategoryDataset)chart.getDataset());
this.plot = (JRChartPlot)factory.getAreaPlot((JRAreaPlot)chart.getPlot());
break;
default:
throw new JRRuntimeException("Chart type not supported.");
}
this.titleFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)chart, chart.getTitleFont());
this.subtitleFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)chart, chart.getSubtitleFont());
this.legendFont = (JRFont)new JRBaseFont(null, null, (JRStyleContainer)chart, chart.getLegendFont());
this.evaluationGroup = factory.getGroup(chart.getEvaluationGroup());
this.customizerClass = chart.getCustomizerClass();
if (this.customizerClass != null && this.customizerClass.length() > 0) {
try {
Class myClass = JRClassLoader.loadClassForName(this.customizerClass);
this.chartCustomizer = myClass.newInstance();
} catch (Exception e) {
throw new JRRuntimeException("Could not create chart customizer instance.", e);
}
if (this.chartCustomizer instanceof JRAbstractChartCustomizer)
((JRAbstractChartCustomizer)this.chartCustomizer).init(filler, this);
}
this.renderType = chart.getRenderType();
if (this.renderType == null)
this.renderType = JRProperties.getProperty(getParentProperties(), "net.sf.jasperreports.chart.render.type");
}
public byte getMode() {
return JRStyleResolver.getMode((JRCommonElement)this, (byte)2);
}
public boolean isShowLegend() {
return ((JRChart)this.parent).isShowLegend();
}
public void setShowLegend(boolean isShowLegend) {}
public String getRenderType() {
return this.renderType;
}
public void setRenderType(String renderType) {}
public byte getEvaluationTime() {
return ((JRChart)this.parent).getEvaluationTime();
}
public JRGroup getEvaluationGroup() {
return this.evaluationGroup;
}
public JRBox getBox() {
return (JRBox)new LineBoxWrapper(getLineBox());
}
public JRLineBox getLineBox() {
return ((JRBoxContainer)this.parent).getLineBox();
}
public byte getBorder() {
return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getPen());
}
public Byte getOwnBorder() {
return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getPen());
}
public void setBorder(byte border) {
JRPenUtil.setLinePenFromPen(border, (JRPen)getLineBox().getPen());
}
public void setBorder(Byte border) {
JRPenUtil.setLinePenFromPen(border, (JRPen)getLineBox().getPen());
}
public Color getBorderColor() {
return getLineBox().getPen().getLineColor();
}
public Color getOwnBorderColor() {
return getLineBox().getPen().getOwnLineColor();
}
public void setBorderColor(Color borderColor) {
getLineBox().getPen().setLineColor(borderColor);
}
public int getPadding() {
return getLineBox().getPadding().intValue();
}
public Integer getOwnPadding() {
return getLineBox().getOwnPadding();
}
public void setPadding(int padding) {
getLineBox().setPadding(padding);
}
public void setPadding(Integer padding) {
getLineBox().setPadding(padding);
}
public byte getTopBorder() {
return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getTopPen());
}
public Byte getOwnTopBorder() {
return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getTopPen());
}
public void setTopBorder(byte topBorder) {
JRPenUtil.setLinePenFromPen(topBorder, (JRPen)getLineBox().getTopPen());
}
public void setTopBorder(Byte topBorder) {
JRPenUtil.setLinePenFromPen(topBorder, (JRPen)getLineBox().getTopPen());
}
public Color getTopBorderColor() {
return getLineBox().getTopPen().getLineColor();
}
public Color getOwnTopBorderColor() {
return getLineBox().getTopPen().getOwnLineColor();
}
public void setTopBorderColor(Color topBorderColor) {
getLineBox().getTopPen().setLineColor(topBorderColor);
}
public int getTopPadding() {
return getLineBox().getTopPadding().intValue();
}
public Integer getOwnTopPadding() {
return getLineBox().getOwnTopPadding();
}
public void setTopPadding(int topPadding) {
getLineBox().setTopPadding(topPadding);
}
public void setTopPadding(Integer topPadding) {
getLineBox().setTopPadding(topPadding);
}
public byte getLeftBorder() {
return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getLeftPen());
}
public Byte getOwnLeftBorder() {
return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getLeftPen());
}
public void setLeftBorder(byte leftBorder) {
JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)getLineBox().getLeftPen());
}
public void setLeftBorder(Byte leftBorder) {
JRPenUtil.setLinePenFromPen(leftBorder, (JRPen)getLineBox().getLeftPen());
}
public Color getLeftBorderColor() {
return getLineBox().getLeftPen().getLineColor();
}
public Color getOwnLeftBorderColor() {
return getLineBox().getLeftPen().getOwnLineColor();
}
public void setLeftBorderColor(Color leftBorderColor) {
getLineBox().getLeftPen().setLineColor(leftBorderColor);
}
public int getLeftPadding() {
return getLineBox().getLeftPadding().intValue();
}
public Integer getOwnLeftPadding() {
return getLineBox().getOwnLeftPadding();
}
public void setLeftPadding(int leftPadding) {
getLineBox().setLeftPadding(leftPadding);
}
public void setLeftPadding(Integer leftPadding) {
getLineBox().setLeftPadding(leftPadding);
}
public byte getBottomBorder() {
return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getBottomPen());
}
public Byte getOwnBottomBorder() {
return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getBottomPen());
}
public void setBottomBorder(byte bottomBorder) {
JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)getLineBox().getBottomPen());
}
public void setBottomBorder(Byte bottomBorder) {
JRPenUtil.setLinePenFromPen(bottomBorder, (JRPen)getLineBox().getBottomPen());
}
public Color getBottomBorderColor() {
return getLineBox().getBottomPen().getLineColor();
}
public Color getOwnBottomBorderColor() {
return getLineBox().getBottomPen().getOwnLineColor();
}
public void setBottomBorderColor(Color bottomBorderColor) {
getLineBox().getBottomPen().setLineColor(bottomBorderColor);
}
public int getBottomPadding() {
return getLineBox().getBottomPadding().intValue();
}
public Integer getOwnBottomPadding() {
return getLineBox().getOwnBottomPadding();
}
public void setBottomPadding(int bottomPadding) {
getLineBox().setBottomPadding(bottomPadding);
}
public void setBottomPadding(Integer bottomPadding) {
getLineBox().setBottomPadding(bottomPadding);
}
public byte getRightBorder() {
return JRPenUtil.getPenFromLinePen((JRPen)getLineBox().getRightPen());
}
public Byte getOwnRightBorder() {
return JRPenUtil.getOwnPenFromLinePen((JRPen)getLineBox().getRightPen());
}
public void setRightBorder(byte rightBorder) {
JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)getLineBox().getRightPen());
}
public void setRightBorder(Byte rightBorder) {
JRPenUtil.setLinePenFromPen(rightBorder, (JRPen)getLineBox().getRightPen());
}
public Color getRightBorderColor() {
return getLineBox().getRightPen().getLineColor();
}
public Color getOwnRightBorderColor() {
return getLineBox().getRightPen().getOwnLineColor();
}
public void setRightBorderColor(Color rightBorderColor) {
getLineBox().getRightPen().setLineColor(rightBorderColor);
}
public int getRightPadding() {
return getLineBox().getRightPadding().intValue();
}
public Integer getOwnRightPadding() {
return getLineBox().getOwnRightPadding();
}
public void setRightPadding(int rightPadding) {
getLineBox().setRightPadding(rightPadding);
}
public void setRightPadding(Integer rightPadding) {
getLineBox().setRightPadding(rightPadding);
}
public JRFont getTitleFont() {
return this.titleFont;
}
public byte getTitlePosition() {
return ((JRChart)this.parent).getTitlePosition();
}
public void setTitlePosition(byte titlePosition) {}
public Color getTitleColor() {
return JRStyleResolver.getTitleColor(this);
}
public Color getOwnTitleColor() {
return ((JRChart)this.parent).getOwnTitleColor();
}
public void setTitleColor(Color titleColor) {}
public JRFont getSubtitleFont() {
return this.subtitleFont;
}
public Color getOwnSubtitleColor() {
return ((JRChart)this.parent).getOwnSubtitleColor();
}
public Color getSubtitleColor() {
return JRStyleResolver.getSubtitleColor(this);
}
public void setSubtitleColor(Color subtitleColor) {}
public Color getOwnLegendColor() {
return ((JRChart)this.parent).getOwnLegendColor();
}
public Color getLegendColor() {
return JRStyleResolver.getLegendColor(this);
}
public void setLegendColor(Color legendColor) {}
public Color getOwnLegendBackgroundColor() {
return ((JRChart)this.parent).getOwnLegendBackgroundColor();
}
public Color getLegendBackgroundColor() {
return JRStyleResolver.getLegendBackgroundColor(this);
}
public void setLegendBackgroundColor(Color legendBackgroundColor) {}
public JRFont getLegendFont() {
return this.legendFont;
}
public byte getLegendPosition() {
return ((JRChart)this.parent).getLegendPosition();
}
public void setLegendPosition(byte legendPosition) {}
public JRExpression getTitleExpression() {
return ((JRChart)this.parent).getTitleExpression();
}
public JRExpression getSubtitleExpression() {
return ((JRChart)this.parent).getSubtitleExpression();
}
public byte getHyperlinkType() {
return ((JRChart)this.parent).getHyperlinkType();
}
public byte getHyperlinkTarget() {
return ((JRChart)this.parent).getHyperlinkTarget();
}
public JRExpression getAnchorNameExpression() {
return ((JRChart)this.parent).getAnchorNameExpression();
}
public JRExpression getHyperlinkReferenceExpression() {
return ((JRChart)this.parent).getHyperlinkReferenceExpression();
}
public JRExpression getHyperlinkAnchorExpression() {
return ((JRChart)this.parent).getHyperlinkAnchorExpression();
}
public JRExpression getHyperlinkPageExpression() {
return ((JRChart)this.parent).getHyperlinkPageExpression();
}
public JRChartDataset getDataset() {
return this.dataset;
}
public void setDataset(JRFillChartDataset dataset) {
this.dataset = dataset;
}
public JRChartPlot getPlot() {
return this.plot;
}
protected JRRenderable getRenderer() {
return this.renderer;
}
protected String getAnchorName() {
return this.anchorName;
}
protected String getHyperlinkReference() {
return this.hyperlinkReference;
}
protected String getHyperlinkAnchor() {
return this.hyperlinkAnchor;
}
protected Integer getHyperlinkPage() {
return this.hyperlinkPage;
}
protected String getHyperlinkTooltip() {
return this.hyperlinkTooltip;
}
public Color getDefaultLineColor() {
return getForecolor();
}
protected JRTemplateImage getJRTemplateImage() {
JRStyle style = getStyle();
JRTemplateImage template = (JRTemplateImage)getTemplate(style);
if (template == null) {
template = new JRTemplateImage(this.band.getOrigin(), this.filler.getJasperPrint().getDefaultStyleProvider(), this);
transferProperties(template);
registerTemplate(style, template);
}
return template;
}
protected void rewind() {}
protected void evaluate(byte evaluation) throws JRException {
reset();
evaluatePrintWhenExpression(evaluation);
if (isPrintWhenExpressionNull() || (!isPrintWhenExpressionNull() && isPrintWhenTrue()))
if (getEvaluationTime() == 1)
evaluateRenderer(evaluation);
}
protected void evaluateRenderer(byte evaluation) throws JRException {
evaluateChart(evaluation);
Rectangle2D rectangle = new Rectangle2D.Double(0.0D, 0.0D, getWidth(), getHeight());
this.renderer = getChartRendererFactory(getRenderType()).getRenderer(this.chart, this.chartHyperlinkProvider, rectangle);
}
protected static ChartRendererFactory getChartRendererFactory(String renderType) {
ChartRendererFactory chartRendererFactory = null;
String factoryClass = JRProperties.getProperty("net.sf.jasperreports.chart.renderer.factory." + renderType);
if (factoryClass == null)
throw new JRRuntimeException("No chart renderer factory specifyed for '" + renderType + "' render type.");
try {
chartRendererFactory = (ChartRendererFactory)chartRendererFactoryCache.getCachedInstance(factoryClass);
} catch (JRException e) {
throw new JRRuntimeException(e);
}
return chartRendererFactory;
}
protected JFreeChart evaluateChart(byte evaluation) throws JRException {
evaluateProperties(evaluation);
evaluateDatasetRun(evaluation);
switch (this.chartType) {
case 1:
evaluateAreaChart(evaluation);
break;
case 3:
evaluateBarChart(evaluation);
break;
case 2:
evaluateBar3DChart(evaluation);
break;
case 4:
evaluateBubbleChart(evaluation);
break;
case 5:
evaluateCandlestickChart(evaluation);
break;
case 6:
evaluateHighLowChart(evaluation);
break;
case 7:
evaluateLineChart(evaluation);
break;
case 17:
evaluateMeterChart(evaluation);
break;
case 19:
evaluateMultiAxisChart(evaluation);
break;
case 9:
evaluatePieChart(evaluation);
break;
case 8:
evaluatePie3DChart(evaluation);
break;
case 10:
evaluateScatterChart(evaluation);
break;
case 12:
evaluateStackedBarChart(evaluation);
break;
case 11:
evaluateStackedBar3DChart(evaluation);
break;
case 18:
evaluateThermometerChart(evaluation);
break;
case 16:
evaluateTimeSeriesChart(evaluation);
break;
case 13:
evaluateXyAreaChart(evaluation);
break;
case 14:
evaluateXYBarChart(evaluation);
break;
case 15:
evaluateXyLineChart(evaluation);
break;
case 20:
evaluateStackedAreaChart(evaluation);
break;
default:
throw new JRRuntimeException("Chart type " + getChartType() + " not supported.");
}
if (this.chartCustomizer != null)
this.chartCustomizer.customize(this.chart, this);
this.anchorName = (String)evaluateExpression(getAnchorNameExpression(), evaluation);
this.hyperlinkReference = (String)evaluateExpression(getHyperlinkReferenceExpression(), evaluation);
this.hyperlinkAnchor = (String)evaluateExpression(getHyperlinkAnchorExpression(), evaluation);
this.hyperlinkPage = (Integer)evaluateExpression(getHyperlinkPageExpression(), evaluation);
this.hyperlinkTooltip = (String)evaluateExpression(getHyperlinkTooltipExpression(), evaluation);
this.hyperlinkParameters = JRFillHyperlinkHelper.evaluateHyperlinkParameters((JRHyperlink)this, this.expressionEvaluator, evaluation);
return this.chart;
}
protected boolean prepare(int availableStretchHeight, boolean isOverflow) {
boolean willOverflow = false;
if (isPrintWhenExpressionNull() || (!isPrintWhenExpressionNull() && isPrintWhenTrue())) {
setToPrint(true);
} else {
setToPrint(false);
}
if (!isToPrint())
return willOverflow;
boolean isToPrint = true;
boolean isReprinted = false;
if (getEvaluationTime() == 1) {
if (isOverflow && isAlreadyPrinted() && !isPrintWhenDetailOverflows())
isToPrint = false;
if (isToPrint && availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) {
isToPrint = false;
willOverflow = true;
}
if (isToPrint && isOverflow && isPrintWhenDetailOverflows() && (isAlreadyPrinted() || (!isAlreadyPrinted() && !isPrintRepeatedValues())))
isReprinted = true;
if (isToPrint && isRemoveLineWhenBlank() && getRenderer() == null)
isToPrint = false;
} else {
if (isOverflow && isAlreadyPrinted() && !isPrintWhenDetailOverflows())
isToPrint = false;
if (isToPrint && availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) {
isToPrint = false;
willOverflow = true;
}
if (isToPrint && isOverflow && isPrintWhenDetailOverflows() && (isAlreadyPrinted() || (!isAlreadyPrinted() && !isPrintRepeatedValues())))
isReprinted = true;
}
setToPrint(isToPrint);
setReprinted(isReprinted);
return willOverflow;
}
protected JRPrintElement fill() {
JRTemplatePrintImage printImage = new JRTemplatePrintImage(getJRTemplateImage());
printImage.setX(getX());
printImage.setY(getRelativeY());
printImage.setWidth(getWidth());
printImage.setHeight(getStretchHeight());
byte evaluationType = getEvaluationTime();
if (evaluationType == 1) {
copy(printImage);
} else {
this.filler.addBoundElement(this, printImage, evaluationType, getEvaluationGroup(), this.band);
}
return printImage;
}
protected void copy(JRPrintImage printImage) {
printImage.setRenderer(getRenderer());
printImage.setAnchorName(getAnchorName());
printImage.setHyperlinkReference(getHyperlinkReference());
printImage.setHyperlinkAnchor(getHyperlinkAnchor());
printImage.setHyperlinkPage(getHyperlinkPage());
printImage.setHyperlinkTooltip(getHyperlinkTooltip());
printImage.setBookmarkLevel(getBookmarkLevel());
printImage.setHyperlinkParameters(this.hyperlinkParameters);
transferProperties((JRPrintElement)printImage);
}
public byte getChartType() {
return this.chartType;
}
public void collectExpressions(JRExpressionCollector collector) {
collector.collect(this);
}
public void visit(JRVisitor visitor) {
visitor.visitChart(this);
}
private void configureChart(JRChartPlot jrPlot, byte evaluation) throws JRException {
if (getMode() == 1) {
this.chart.setBackgroundPaint(getBackcolor());
} else {
this.chart.setBackgroundPaint(TRANSPARENT_PAINT);
}
RectangleEdge titleEdge = getEdge(getTitlePosition());
if (this.chart.getTitle() != null) {
TextTitle title = this.chart.getTitle();
title.setPaint(getTitleColor());
title.setFont(new Font(JRFontUtil.getAttributes(getTitleFont())));
title.setPosition(titleEdge);
}
String subtitleText = (String)evaluateExpression(getSubtitleExpression(), evaluation);
if (subtitleText != null) {
TextTitle subtitle = new TextTitle(subtitleText);
subtitle.setPaint(getSubtitleColor());
subtitle.setFont(new Font(JRFontUtil.getAttributes(getSubtitleFont())));
subtitle.setPosition(titleEdge);
this.chart.addSubtitle((Title)subtitle);
}
LegendTitle legend = this.chart.getLegend();
if (legend != null) {
legend.setItemPaint(getLegendColor());
if (getOwnLegendBackgroundColor() == null) {
legend.setBackgroundPaint(TRANSPARENT_PAINT);
} else {
legend.setBackgroundPaint(getLegendBackgroundColor());
}
this.chart.getLegend().setItemFont(new Font(JRFontUtil.getAttributes(getLegendFont())));
this.chart.getLegend().setPosition(getEdge(getLegendPosition()));
}
configurePlot(this.chart.getPlot(), jrPlot);
}
private void configurePlot(Plot p, JRChartPlot jrPlot) {
p.setOutlinePaint(TRANSPARENT_PAINT);
if (getPlot().getOwnBackcolor() == null) {
p.setBackgroundPaint(TRANSPARENT_PAINT);
} else {
p.setBackgroundPaint(getPlot().getBackcolor());
}
p.setBackgroundAlpha(getPlot().getBackgroundAlpha());
p.setForegroundAlpha(getPlot().getForegroundAlpha());
SortedSet seriesColors = getPlot().getSeriesColors();
if (p instanceof CategoryPlot) {
CategoryAxis axis = ((CategoryPlot)p).getDomainAxis();
double labelRotation = getPlot().getLabelRotation();
if (labelRotation == 90.0D) {
axis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_90);
} else if (labelRotation == -90.0D) {
axis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
} else if (labelRotation < 0.0D) {
axis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(-labelRotation / 180.0D * Math.PI));
} else if (labelRotation > 0.0D) {
axis.setCategoryLabelPositions(CategoryLabelPositions.createDownRotationLabelPositions(labelRotation / 180.0D * Math.PI));
}
}
if (seriesColors != null)
if (seriesColors.size() == 1) {
Paint[] colors = new Paint[DefaultDrawingSupplier.DEFAULT_PAINT_SEQUENCE.length + 1];
colors[0] = ((JRChartPlot.JRSeriesColor)seriesColors.first()).getColor();
for (int i = 0; i < DefaultDrawingSupplier.DEFAULT_PAINT_SEQUENCE.length; i++)
colors[i + 1] = DefaultDrawingSupplier.DEFAULT_PAINT_SEQUENCE[i];
p.setDrawingSupplier((DrawingSupplier)new DefaultDrawingSupplier(colors, DefaultDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_SHAPE_SEQUENCE));
} else if (seriesColors.size() > 1) {
Color[] colors = new Color[seriesColors.size()];
JRChartPlot.JRSeriesColor[] colorSequence = new JRChartPlot.JRSeriesColor[seriesColors.size()];
seriesColors.toArray((Object[])colorSequence);
for (int i = 0; i < colorSequence.length; i++)
colors[i] = colorSequence[i].getColor();
p.setDrawingSupplier((DrawingSupplier)new DefaultDrawingSupplier((Paint[])colors, DefaultDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_SHAPE_SEQUENCE));
}
}
private void configureAxisSeriesColors(CategoryItemRenderer renderer, JRChartPlot jrPlot) {
SortedSet seriesColors = jrPlot.getSeriesColors();
if (seriesColors != null) {
Iterator iter = seriesColors.iterator();
while (iter.hasNext()) {
JRChartPlot.JRSeriesColor seriesColor = iter.next();
renderer.setSeriesPaint(seriesColor.getSeriesOrder(), seriesColor.getColor());
}
}
}
private void configureAxisSeriesColors(XYItemRenderer renderer, JRChartPlot jrPlot) {
SortedSet seriesColors = jrPlot.getSeriesColors();
if (seriesColors != null) {
Iterator iter = seriesColors.iterator();
while (iter.hasNext()) {
JRChartPlot.JRSeriesColor seriesColor = iter.next();
renderer.setSeriesPaint(seriesColor.getSeriesOrder(), seriesColor.getColor());
}
}
}
private void configureAxis(Axis axis, JRFont labelFont, Color labelColor, JRFont tickLabelFont, Color tickLabelColor, String tickLabelMask, Color lineColor) {
axis.setLabelFont(new Font(JRFontUtil.getAttributes(labelFont)));
axis.setTickLabelFont(new Font(JRFontUtil.getAttributes(tickLabelFont)));
if (labelColor != null)
axis.setLabelPaint(labelColor);
if (tickLabelColor != null)
axis.setTickLabelPaint(tickLabelColor);
if (lineColor != null) {
axis.setAxisLinePaint(lineColor);
axis.setTickMarkPaint(lineColor);
}
if (tickLabelMask != null)
if (axis instanceof NumberAxis) {
NumberFormat fmt = NumberFormat.getInstance();
if (fmt instanceof DecimalFormat)
((DecimalFormat)fmt).applyPattern(tickLabelMask);
((NumberAxis)axis).setNumberFormatOverride(fmt);
} else if (axis instanceof DateAxis) {
DateFormat fmt = null;
if (tickLabelMask.equals("SHORT") || tickLabelMask.equals("DateFormat.SHORT")) {
fmt = DateFormat.getDateInstance(3);
} else if (tickLabelMask.equals("MEDIUM") || tickLabelMask.equals("DateFormat.MEDIUM")) {
fmt = DateFormat.getDateInstance(2);
} else if (tickLabelMask.equals("LONG") || tickLabelMask.equals("DateFormat.LONG")) {
fmt = DateFormat.getDateInstance(1);
} else if (tickLabelMask.equals("FULL") || tickLabelMask.equals("DateFormat.FULL")) {
fmt = DateFormat.getDateInstance(0);
} else {
fmt = new SimpleDateFormat(tickLabelMask);
}
((DateAxis)axis).setDateFormatOverride(fmt);
}
}
protected void evaluateAreaChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createAreaChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRAreaPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRAreaPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (CategoryDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
JRFillAreaPlot areaPlot = (JRFillAreaPlot)getPlot();
configureAxis((Axis)((CategoryPlot)this.chart.getPlot()).getDomainAxis(), areaPlot.getCategoryAxisLabelFont(), areaPlot.getCategoryAxisLabelColor(), areaPlot.getCategoryAxisTickLabelFont(), areaPlot.getCategoryAxisTickLabelColor(), areaPlot.getCategoryAxisTickLabelMask(), areaPlot.getCategoryAxisLineColor());
configureAxis((Axis)((CategoryPlot)this.chart.getPlot()).getRangeAxis(), areaPlot.getValueAxisLabelFont(), areaPlot.getValueAxisLabelColor(), areaPlot.getValueAxisTickLabelFont(), areaPlot.getValueAxisTickLabelColor(), areaPlot.getCategoryAxisTickLabelMask(), areaPlot.getValueAxisLineColor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks());
}
protected void evaluateBar3DChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createBarChart3D((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRBar3DPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRBar3DPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (CategoryDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
CategoryPlot categoryPlot = (CategoryPlot)this.chart.getPlot();
JRFillBar3DPlot bar3DPlot = (JRFillBar3DPlot)getPlot();
BarRenderer3D barRenderer3D = new BarRenderer3D(bar3DPlot.getXOffset(), bar3DPlot.getYOffset());
categoryPlot.setRenderer((CategoryItemRenderer)barRenderer3D);
barRenderer3D.setBaseItemLabelGenerator((CategoryItemLabelGenerator)((JRFillCategoryDataset)getDataset()).getLabelGenerator());
barRenderer3D.setItemLabelsVisible(bar3DPlot.isShowLabels());
configureAxis((Axis)categoryPlot.getDomainAxis(), bar3DPlot.getCategoryAxisLabelFont(), bar3DPlot.getCategoryAxisLabelColor(), bar3DPlot.getCategoryAxisTickLabelFont(), bar3DPlot.getCategoryAxisTickLabelColor(), bar3DPlot.getCategoryAxisTickLabelMask(), bar3DPlot.getCategoryAxisLineColor());
configureAxis((Axis)categoryPlot.getRangeAxis(), bar3DPlot.getValueAxisLabelFont(), bar3DPlot.getValueAxisLabelColor(), bar3DPlot.getValueAxisTickLabelFont(), bar3DPlot.getValueAxisTickLabelColor(), bar3DPlot.getValueAxisTickLabelMask(), bar3DPlot.getValueAxisLineColor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks());
}
protected void evaluateBarChart(byte evaluation) throws JRException {
CategoryDataset categoryDataset = (CategoryDataset)this.dataset.getDataset();
this.chart = ChartFactory.createBarChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRBarPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRBarPlot)getPlot()).getValueAxisLabelExpression(), evaluation), categoryDataset, getPlot().getOrientation(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
CategoryPlot categoryPlot = (CategoryPlot)this.chart.getPlot();
JRFillBarPlot barPlot = (JRFillBarPlot)getPlot();
categoryPlot.getDomainAxis().setTickMarksVisible(barPlot.isShowTickMarks());
categoryPlot.getDomainAxis().setTickLabelsVisible(barPlot.isShowTickLabels());
configureAxis((Axis)categoryPlot.getDomainAxis(), barPlot.getCategoryAxisLabelFont(), barPlot.getCategoryAxisLabelColor(), barPlot.getCategoryAxisTickLabelFont(), barPlot.getCategoryAxisTickLabelColor(), barPlot.getCategoryAxisTickLabelMask(), barPlot.getCategoryAxisLineColor());
((NumberAxis)categoryPlot.getRangeAxis()).setTickMarksVisible(barPlot.isShowTickMarks());
((NumberAxis)categoryPlot.getRangeAxis()).setTickLabelsVisible(barPlot.isShowTickLabels());
configureAxis((Axis)categoryPlot.getRangeAxis(), barPlot.getValueAxisLabelFont(), barPlot.getValueAxisLabelColor(), barPlot.getValueAxisTickLabelFont(), barPlot.getValueAxisTickLabelColor(), barPlot.getValueAxisTickLabelMask(), barPlot.getValueAxisLineColor());
CategoryItemRenderer categoryRenderer = categoryPlot.getRenderer();
categoryRenderer.setBaseItemLabelGenerator((CategoryItemLabelGenerator)((JRFillCategoryDataset)getDataset()).getLabelGenerator());
categoryRenderer.setItemLabelsVisible(barPlot.isShowLabels());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks());
}
protected void evaluateBubbleChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createBubbleChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRBubblePlot)getPlot()).getXAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRBubblePlot)getPlot()).getYAxisLabelExpression(), evaluation), (XYZDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
XYPlot xyPlot = (XYPlot)this.chart.getPlot();
JRBubblePlot bubblePlot = (JRBubblePlot)getPlot();
XYBubbleRenderer bubbleRenderer = new XYBubbleRenderer(bubblePlot.getScaleType());
xyPlot.setRenderer((XYItemRenderer)bubbleRenderer);
configureAxis((Axis)xyPlot.getDomainAxis(), bubblePlot.getXAxisLabelFont(), bubblePlot.getXAxisLabelColor(), bubblePlot.getXAxisTickLabelFont(), bubblePlot.getXAxisTickLabelColor(), bubblePlot.getXAxisTickLabelMask(), bubblePlot.getXAxisLineColor());
configureAxis((Axis)xyPlot.getRangeAxis(), bubblePlot.getYAxisLabelFont(), bubblePlot.getYAxisLabelColor(), bubblePlot.getYAxisTickLabelFont(), bubblePlot.getYAxisTickLabelColor(), bubblePlot.getYAxisTickLabelMask(), bubblePlot.getYAxisLineColor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new XYChartHyperlinkProvider(((JRFillXyzDataset)getDataset()).getItemHyperlinks());
}
protected void evaluateCandlestickChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createCandlestickChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRCandlestickPlot)getPlot()).getTimeAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRCandlestickPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (OHLCDataset)this.dataset.getDataset(), isShowLegend());
configureChart(getPlot(), evaluation);
XYPlot xyPlot = (XYPlot)this.chart.getPlot();
JRCandlestickPlot candlestickPlot = (JRCandlestickPlot)getPlot();
CandlestickRenderer candlestickRenderer = (CandlestickRenderer)xyPlot.getRenderer();
candlestickRenderer.setDrawVolume(candlestickPlot.isShowVolume());
configureAxis((Axis)xyPlot.getDomainAxis(), candlestickPlot.getTimeAxisLabelFont(), candlestickPlot.getTimeAxisLabelColor(), candlestickPlot.getTimeAxisTickLabelFont(), candlestickPlot.getTimeAxisTickLabelColor(), candlestickPlot.getTimeAxisTickLabelMask(), candlestickPlot.getTimeAxisLineColor());
configureAxis((Axis)xyPlot.getRangeAxis(), candlestickPlot.getValueAxisLabelFont(), candlestickPlot.getValueAxisLabelColor(), candlestickPlot.getValueAxisTickLabelFont(), candlestickPlot.getValueAxisTickLabelColor(), candlestickPlot.getValueAxisTickLabelMask(), candlestickPlot.getValueAxisLineColor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new HighLowChartHyperlinkProvider(((JRFillHighLowDataset)getDataset()).getItemHyperlinks());
}
protected void evaluateHighLowChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createHighLowChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRHighLowPlot)getPlot()).getTimeAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRHighLowPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (OHLCDataset)this.dataset.getDataset(), isShowLegend());
configureChart(getPlot(), evaluation);
XYPlot xyPlot = (XYPlot)this.chart.getPlot();
JRHighLowPlot highLowPlot = (JRHighLowPlot)getPlot();
HighLowRenderer hlRenderer = (HighLowRenderer)xyPlot.getRenderer();
hlRenderer.setDrawOpenTicks(highLowPlot.isShowOpenTicks());
hlRenderer.setDrawCloseTicks(highLowPlot.isShowCloseTicks());
configureAxis((Axis)xyPlot.getDomainAxis(), highLowPlot.getTimeAxisLabelFont(), highLowPlot.getTimeAxisLabelColor(), highLowPlot.getTimeAxisTickLabelFont(), highLowPlot.getTimeAxisTickLabelColor(), highLowPlot.getTimeAxisTickLabelMask(), highLowPlot.getTimeAxisLineColor());
configureAxis((Axis)xyPlot.getRangeAxis(), highLowPlot.getValueAxisLabelFont(), highLowPlot.getValueAxisLabelColor(), highLowPlot.getValueAxisTickLabelFont(), highLowPlot.getValueAxisTickLabelColor(), highLowPlot.getValueAxisTickLabelMask(), highLowPlot.getValueAxisLineColor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new HighLowChartHyperlinkProvider(((JRFillHighLowDataset)getDataset()).getItemHyperlinks());
}
protected void evaluateLineChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createLineChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRLinePlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRLinePlot)getPlot()).getValueAxisLabelExpression(), evaluation), (CategoryDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
CategoryPlot categoryPlot = (CategoryPlot)this.chart.getPlot();
JRFillLinePlot linePlot = (JRFillLinePlot)getPlot();
LineAndShapeRenderer lineRenderer = (LineAndShapeRenderer)categoryPlot.getRenderer();
lineRenderer.setShapesVisible(linePlot.isShowShapes());
lineRenderer.setLinesVisible(linePlot.isShowLines());
configureAxis((Axis)categoryPlot.getDomainAxis(), linePlot.getCategoryAxisLabelFont(), linePlot.getCategoryAxisLabelColor(), linePlot.getCategoryAxisTickLabelFont(), linePlot.getCategoryAxisTickLabelColor(), linePlot.getCategoryAxisTickLabelMask(), linePlot.getCategoryAxisLineColor());
configureAxis((Axis)categoryPlot.getRangeAxis(), linePlot.getValueAxisLabelFont(), linePlot.getValueAxisLabelColor(), linePlot.getValueAxisTickLabelFont(), linePlot.getValueAxisTickLabelColor(), linePlot.getValueAxisTickLabelMask(), linePlot.getValueAxisLineColor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks());
}
protected void evaluatePie3DChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createPieChart3D((String)evaluateExpression(getTitleExpression(), evaluation), (PieDataset)this.dataset.getDataset(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
PiePlot3D piePlot3D = (PiePlot3D)this.chart.getPlot();
piePlot3D.setDepthFactor(((JRFillPie3DPlot)getPlot()).getDepthFactor());
piePlot3D.setCircular(((JRFillPie3DPlot)getPlot()).isCircular());
PieLabelGenerator pieLabelGenerator = ((JRFillPieDataset)getDataset()).getLabelGenerator();
if (pieLabelGenerator != null)
piePlot3D.setLabelGenerator((PieSectionLabelGenerator)pieLabelGenerator);
piePlot3D.setLabelFont(new Font(JRFontUtil.getAttributes((JRFont)new JRBaseFont(null, null, (JRStyleContainer)this, null))));
piePlot3D.setLabelPaint(getForecolor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new PieChartHyperlinkProvider(((JRFillPieDataset)getDataset()).getSectionHyperlinks());
}
protected void evaluatePieChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createPieChart((String)evaluateExpression(getTitleExpression(), evaluation), (PieDataset)this.dataset.getDataset(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
PiePlot piePlot = (PiePlot)this.chart.getPlot();
piePlot.setCircular(((JRFillPiePlot)getPlot()).isCircular());
PieLabelGenerator pieLabelGenerator = ((JRFillPieDataset)getDataset()).getLabelGenerator();
if (pieLabelGenerator != null)
piePlot.setLabelGenerator((PieSectionLabelGenerator)pieLabelGenerator);
piePlot.setLabelFont(new Font(JRFontUtil.getAttributes((JRFont)new JRBaseFont(null, null, (JRStyleContainer)this, null))));
piePlot.setLabelPaint(getForecolor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new PieChartHyperlinkProvider(((JRFillPieDataset)getDataset()).getSectionHyperlinks());
}
protected void evaluateScatterChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createScatterPlot((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRScatterPlot)getPlot()).getXAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRScatterPlot)getPlot()).getYAxisLabelExpression(), evaluation), (XYDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
XYLineAndShapeRenderer plotRenderer = (XYLineAndShapeRenderer)((XYPlot)this.chart.getPlot()).getRenderer();
JRScatterPlot scatterPlot = (JRScatterPlot)getPlot();
plotRenderer.setLinesVisible(scatterPlot.isShowLines());
plotRenderer.setShapesVisible(scatterPlot.isShowShapes());
configureAxis((Axis)this.chart.getXYPlot().getDomainAxis(), scatterPlot.getXAxisLabelFont(), scatterPlot.getXAxisLabelColor(), scatterPlot.getXAxisTickLabelFont(), scatterPlot.getXAxisTickLabelColor(), scatterPlot.getXAxisTickLabelMask(), scatterPlot.getXAxisLineColor());
configureAxis((Axis)this.chart.getXYPlot().getRangeAxis(), scatterPlot.getYAxisLabelFont(), scatterPlot.getYAxisLabelColor(), scatterPlot.getYAxisTickLabelFont(), scatterPlot.getYAxisTickLabelColor(), scatterPlot.getYAxisTickLabelMask(), scatterPlot.getYAxisLineColor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new XYChartHyperlinkProvider(((JRFillXyDataset)getDataset()).getItemHyperlinks());
}
protected void evaluateStackedBar3DChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createStackedBarChart3D((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRBar3DPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRBar3DPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (CategoryDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
CategoryPlot categoryPlot = (CategoryPlot)this.chart.getPlot();
JRFillBar3DPlot bar3DPlot = (JRFillBar3DPlot)getPlot();
StackedBarRenderer3D stackedBarRenderer3D = new StackedBarRenderer3D(bar3DPlot.getXOffset(), bar3DPlot.getYOffset());
categoryPlot.setRenderer((CategoryItemRenderer)stackedBarRenderer3D);
stackedBarRenderer3D.setBaseItemLabelGenerator((CategoryItemLabelGenerator)((JRFillCategoryDataset)getDataset()).getLabelGenerator());
stackedBarRenderer3D.setItemLabelsVisible(bar3DPlot.isShowLabels());
configureAxis((Axis)categoryPlot.getDomainAxis(), bar3DPlot.getCategoryAxisLabelFont(), bar3DPlot.getCategoryAxisLabelColor(), bar3DPlot.getCategoryAxisTickLabelFont(), bar3DPlot.getCategoryAxisTickLabelColor(), bar3DPlot.getCategoryAxisTickLabelMask(), bar3DPlot.getCategoryAxisLineColor());
configureAxis((Axis)categoryPlot.getRangeAxis(), bar3DPlot.getValueAxisLabelFont(), bar3DPlot.getValueAxisLabelColor(), bar3DPlot.getValueAxisTickLabelFont(), bar3DPlot.getValueAxisTickLabelColor(), bar3DPlot.getValueAxisTickLabelMask(), bar3DPlot.getValueAxisLineColor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks());
}
protected void evaluateStackedBarChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createStackedBarChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRBarPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRBarPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (CategoryDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
CategoryPlot categoryPlot = (CategoryPlot)this.chart.getPlot();
JRFillBarPlot barPlot = (JRFillBarPlot)getPlot();
categoryPlot.getDomainAxis().setTickMarksVisible(barPlot.isShowTickMarks());
categoryPlot.getDomainAxis().setTickLabelsVisible(barPlot.isShowTickLabels());
((NumberAxis)categoryPlot.getRangeAxis()).setTickMarksVisible(barPlot.isShowTickMarks());
((NumberAxis)categoryPlot.getRangeAxis()).setTickLabelsVisible(barPlot.isShowTickLabels());
CategoryItemRenderer categoryRenderer = categoryPlot.getRenderer();
categoryRenderer.setBaseItemLabelGenerator((CategoryItemLabelGenerator)((JRFillCategoryDataset)getDataset()).getLabelGenerator());
categoryRenderer.setItemLabelsVisible(((JRFillBarPlot)getPlot()).isShowLabels());
configureAxis((Axis)categoryPlot.getDomainAxis(), barPlot.getCategoryAxisLabelFont(), barPlot.getCategoryAxisLabelColor(), barPlot.getCategoryAxisTickLabelFont(), barPlot.getCategoryAxisTickLabelColor(), barPlot.getCategoryAxisTickLabelMask(), barPlot.getCategoryAxisLineColor());
configureAxis((Axis)categoryPlot.getRangeAxis(), barPlot.getValueAxisLabelFont(), barPlot.getValueAxisLabelColor(), barPlot.getValueAxisTickLabelFont(), barPlot.getValueAxisTickLabelColor(), barPlot.getValueAxisTickLabelMask(), barPlot.getValueAxisLineColor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks());
}
protected void evaluateStackedAreaChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createStackedAreaChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRAreaPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRAreaPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (CategoryDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
JRFillAreaPlot areaPlot = (JRFillAreaPlot)getPlot();
configureAxis((Axis)((CategoryPlot)this.chart.getPlot()).getDomainAxis(), areaPlot.getCategoryAxisLabelFont(), areaPlot.getCategoryAxisLabelColor(), areaPlot.getCategoryAxisTickLabelFont(), areaPlot.getCategoryAxisTickLabelColor(), areaPlot.getCategoryAxisTickLabelMask(), areaPlot.getCategoryAxisLineColor());
configureAxis((Axis)((CategoryPlot)this.chart.getPlot()).getRangeAxis(), areaPlot.getValueAxisLabelFont(), areaPlot.getValueAxisLabelColor(), areaPlot.getValueAxisTickLabelFont(), areaPlot.getValueAxisTickLabelColor(), areaPlot.getCategoryAxisTickLabelMask(), areaPlot.getValueAxisLineColor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new CategoryChartHyperlinkProvider(((JRFillCategoryDataset)getDataset()).getItemHyperlinks());
}
protected void evaluateXyAreaChart(byte evaluation) throws JRException {
this.chart = ChartFactory.createXYAreaChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRAreaPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(((JRAreaPlot)getPlot()).getValueAxisLabelExpression(), evaluation), (XYDataset)this.dataset.getDataset(), getPlot().getOrientation(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
JRAreaPlot areaPlot = (JRAreaPlot)getPlot();
configureAxis((Axis)this.chart.getXYPlot().getDomainAxis(), areaPlot.getCategoryAxisLabelFont(), areaPlot.getCategoryAxisLabelColor(), areaPlot.getCategoryAxisTickLabelFont(), areaPlot.getCategoryAxisTickLabelColor(), areaPlot.getCategoryAxisTickLabelMask(), areaPlot.getCategoryAxisLineColor());
configureAxis((Axis)this.chart.getXYPlot().getRangeAxis(), areaPlot.getValueAxisLabelFont(), areaPlot.getValueAxisLabelColor(), areaPlot.getValueAxisTickLabelFont(), areaPlot.getValueAxisTickLabelColor(), areaPlot.getValueAxisTickLabelMask(), areaPlot.getValueAxisLineColor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new XYChartHyperlinkProvider(((JRFillXyDataset)getDataset()).getItemHyperlinks());
}
protected void evaluateXYBarChart(byte evaluation) throws JRException {
IntervalXYDataset tmpDataset = (IntervalXYDataset)this.dataset.getDataset();
boolean isDate = true;
if (this.dataset.getDatasetType() == 3)
isDate = false;
this.chart = ChartFactory.createXYBarChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(((JRBarPlot)getPlot()).getCategoryAxisLabelExpression(), evaluation), isDate, (String)evaluateExpression(((JRBarPlot)getPlot()).getValueAxisLabelExpression(), evaluation), tmpDataset, getPlot().getOrientation(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
XYPlot xyPlot = (XYPlot)this.chart.getPlot();
XYItemRenderer itemRenderer = xyPlot.getRenderer();
if (getDataset().getDatasetType() == 6) {
itemRenderer.setBaseItemLabelGenerator((XYItemLabelGenerator)((JRFillTimeSeriesDataset)getDataset()).getLabelGenerator());
} else if (getDataset().getDatasetType() == 5) {
itemRenderer.setBaseItemLabelGenerator((XYItemLabelGenerator)((JRFillTimePeriodDataset)getDataset()).getLabelGenerator());
} else if (getDataset().getDatasetType() == 3) {
itemRenderer.setBaseItemLabelGenerator((XYItemLabelGenerator)((JRFillXyDataset)getDataset()).getLabelGenerator());
}
JRFillBarPlot barPlot = (JRFillBarPlot)getPlot();
itemRenderer.setBaseItemLabelsVisible(barPlot.isShowLabels());
configureAxis((Axis)xyPlot.getDomainAxis(), barPlot.getCategoryAxisLabelFont(), barPlot.getCategoryAxisLabelColor(), barPlot.getCategoryAxisTickLabelFont(), barPlot.getCategoryAxisTickLabelColor(), barPlot.getCategoryAxisTickLabelMask(), barPlot.getCategoryAxisLineColor());
configureAxis((Axis)xyPlot.getRangeAxis(), barPlot.getValueAxisLabelFont(), barPlot.getValueAxisLabelColor(), barPlot.getValueAxisTickLabelFont(), barPlot.getValueAxisTickLabelColor(), barPlot.getValueAxisTickLabelMask(), barPlot.getValueAxisLineColor());
if (getDataset().getDatasetType() == 6) {
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new TimeSeriesChartHyperlinkProvider(((JRFillTimeSeriesDataset)getDataset()).getItemHyperlinks());
} else if (getDataset().getDatasetType() == 5) {
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new TimePeriodChartHyperlinkProvider(((JRFillTimePeriodDataset)getDataset()).getItemHyperlinks());
} else if (getDataset().getDatasetType() == 3) {
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new XYChartHyperlinkProvider(((JRFillXyDataset)getDataset()).getItemHyperlinks());
} else {
this.chartHyperlinkProvider = null;
}
}
protected void evaluateXyLineChart(byte evaluation) throws JRException {
JRLinePlot linePlot = (JRLinePlot)getPlot();
this.chart = ChartFactory.createXYLineChart((String)evaluateExpression(getTitleExpression(), evaluation), (String)evaluateExpression(linePlot.getCategoryAxisLabelExpression(), evaluation), (String)evaluateExpression(linePlot.getValueAxisLabelExpression(), evaluation), (XYDataset)this.dataset.getDataset(), linePlot.getOrientation(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
configureAxis((Axis)this.chart.getXYPlot().getDomainAxis(), linePlot.getCategoryAxisLabelFont(), linePlot.getCategoryAxisLabelColor(), linePlot.getCategoryAxisTickLabelFont(), linePlot.getCategoryAxisTickLabelColor(), linePlot.getCategoryAxisTickLabelMask(), linePlot.getCategoryAxisLineColor());
configureAxis((Axis)this.chart.getXYPlot().getRangeAxis(), linePlot.getValueAxisLabelFont(), linePlot.getValueAxisLabelColor(), linePlot.getValueAxisTickLabelFont(), linePlot.getValueAxisTickLabelColor(), linePlot.getValueAxisTickLabelMask(), linePlot.getValueAxisLineColor());
XYLineAndShapeRenderer lineRenderer = (XYLineAndShapeRenderer)this.chart.getXYPlot().getRenderer();
lineRenderer.setShapesVisible(linePlot.isShowShapes());
lineRenderer.setLinesVisible(linePlot.isShowLines());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new XYChartHyperlinkProvider(((JRFillXyDataset)getDataset()).getItemHyperlinks());
}
protected void evaluateTimeSeriesChart(byte evaluation) throws JRException {
String timeAxisLabel = (String)evaluateExpression(((JRTimeSeriesPlot)getPlot()).getTimeAxisLabelExpression(), evaluation);
String valueAxisLabel = (String)evaluateExpression(((JRTimeSeriesPlot)getPlot()).getValueAxisLabelExpression(), evaluation);
this.chart = ChartFactory.createTimeSeriesChart((String)evaluateExpression(getTitleExpression(), evaluation), timeAxisLabel, valueAxisLabel, (XYDataset)this.dataset.getDataset(), isShowLegend(), true, false);
configureChart(getPlot(), evaluation);
XYPlot xyPlot = (XYPlot)this.chart.getPlot();
JRTimeSeriesPlot timeSeriesPlot = (JRTimeSeriesPlot)getPlot();
XYLineAndShapeRenderer lineRenderer = (XYLineAndShapeRenderer)xyPlot.getRenderer();
lineRenderer.setLinesVisible(((JRTimeSeriesPlot)getPlot()).isShowLines());
lineRenderer.setShapesVisible(((JRTimeSeriesPlot)getPlot()).isShowShapes());
configureAxis((Axis)xyPlot.getDomainAxis(), timeSeriesPlot.getTimeAxisLabelFont(), timeSeriesPlot.getTimeAxisLabelColor(), timeSeriesPlot.getTimeAxisTickLabelFont(), timeSeriesPlot.getTimeAxisTickLabelColor(), timeSeriesPlot.getTimeAxisTickLabelMask(), timeSeriesPlot.getTimeAxisLineColor());
configureAxis((Axis)xyPlot.getRangeAxis(), timeSeriesPlot.getValueAxisLabelFont(), timeSeriesPlot.getValueAxisLabelColor(), timeSeriesPlot.getValueAxisTickLabelFont(), timeSeriesPlot.getValueAxisTickLabelColor(), timeSeriesPlot.getValueAxisTickLabelMask(), timeSeriesPlot.getValueAxisLineColor());
this.chartHyperlinkProvider = (ChartHyperlinkProvider)new TimeSeriesChartHyperlinkProvider(((JRFillTimeSeriesDataset)getDataset()).getItemHyperlinks());
}
protected Range convertRange(JRDataRange dataRange, byte evaluation) throws JRException {
if (dataRange == null)
return null;
Number low = (Number)evaluateExpression(dataRange.getLowExpression(), evaluation);
Number high = (Number)evaluateExpression(dataRange.getHighExpression(), evaluation);
return new Range((low != null) ? low.doubleValue() : 0.0D, (high != null) ? high.doubleValue() : 100.0D);
}
protected MeterInterval convertInterval(JRMeterInterval interval, byte evaluation) throws JRException {
String label = interval.getLabel();
if (label == null)
label = "";
Range range = convertRange(interval.getDataRange(), evaluation);
Color color = interval.getBackgroundColor();
float[] components = color.getRGBColorComponents(null);
Color alphaColor = new Color(components[0], components[1], components[2], (float)interval.getAlpha());
return new MeterInterval(label, range, alphaColor, null, alphaColor);
}
protected void evaluateMeterChart(byte evaluation) throws JRException {
JRFillMeterPlot jrPlot = (JRFillMeterPlot)getPlot();
MeterPlot chartPlot = new MeterPlot((ValueDataset)this.dataset.getDataset());
int shape = jrPlot.getShape();
if (shape == 0) {
chartPlot.setDialShape(DialShape.CHORD);
} else if (shape == 1) {
chartPlot.setDialShape(DialShape.CIRCLE);
} else {
chartPlot.setDialShape(DialShape.PIE);
}
chartPlot.setRange(convertRange(jrPlot.getDataRange(), evaluation));
chartPlot.setMeterAngle(jrPlot.getMeterAngle());
String units = jrPlot.getUnits();
if (units != null && units.length() > 0)
chartPlot.setUnits(units);
chartPlot.setTickSize(jrPlot.getTickInterval());
Color color = jrPlot.getMeterBackgroundColor();
if (color != null)
chartPlot.setDialBackgroundPaint(color);
color = jrPlot.getNeedleColor();
if (color != null)
chartPlot.setNeedlePaint(color);
JRValueDisplay display = jrPlot.getValueDisplay();
if (display != null) {
if (display.getColor() != null)
chartPlot.setValuePaint(display.getColor());
if (display.getMask() != null)
chartPlot.setTickLabelFormat(new DecimalFormat(display.getMask()));
if (display.getFont() != null)
chartPlot.setValueFont(new Font(JRFontUtil.getAttributes(display.getFont())));
}
color = jrPlot.getTickColor();
if (color != null)
chartPlot.setTickPaint(color);
List intervals = jrPlot.getIntervals();
if (intervals != null) {
Iterator iter = intervals.iterator();
while (iter.hasNext()) {
JRMeterInterval interval = iter.next();
chartPlot.addInterval(convertInterval(interval, evaluation));
}
}
this.chart = new JFreeChart((String)evaluateExpression(getTitleExpression(), evaluation), null, (Plot)chartPlot, isShowLegend());
configureChart(getPlot(), evaluation);
this.chartHyperlinkProvider = null;
}
protected void evaluateThermometerChart(byte evaluation) throws JRException {
JRFillThermometerPlot jrPlot = (JRFillThermometerPlot)getPlot();
ThermometerPlot chartPlot = new ThermometerPlot((ValueDataset)this.dataset.getDataset());
Range range = convertRange(jrPlot.getDataRange(), evaluation);
chartPlot.setLowerBound(range.getLowerBound());
chartPlot.setUpperBound(range.getUpperBound());
chartPlot.setShowValueLines(jrPlot.isShowValueLines());
chartPlot.setUnits(0);
Color color = jrPlot.getMercuryColor();
if (color != null)
chartPlot.setMercuryPaint(color);
JRValueDisplay display = jrPlot.getValueDisplay();
if (display != null) {
if (display.getColor() != null)
chartPlot.setValuePaint(display.getColor());
if (display.getMask() != null)
chartPlot.setValueFormat(new DecimalFormat(display.getMask()));
if (display.getFont() != null)
chartPlot.setValueFont(new Font(JRFontUtil.getAttributes(display.getFont())));
}
switch (jrPlot.getValueLocation()) {
case 0:
chartPlot.setValueLocation(0);
break;
case 1:
chartPlot.setValueLocation(2);
break;
case 2:
chartPlot.setValueLocation(1);
break;
default:
chartPlot.setValueLocation(3);
break;
}
range = convertRange(jrPlot.getLowRange(), evaluation);
if (range != null)
chartPlot.setSubrangeInfo(2, range.getLowerBound(), range.getUpperBound());
range = convertRange(jrPlot.getMediumRange(), evaluation);
if (range != null)
chartPlot.setSubrangeInfo(1, range.getLowerBound(), range.getUpperBound());
range = convertRange(jrPlot.getHighRange(), evaluation);
if (range != null)
chartPlot.setSubrangeInfo(0, range.getLowerBound(), range.getUpperBound());
this.chart = new JFreeChart((Plot)chartPlot);
configureChart(getPlot(), evaluation);
this.chartHyperlinkProvider = null;
}
protected void evaluateMultiAxisChart(byte evaluation) throws JRException {
Plot mainPlot = null;
JRFillMultiAxisPlot jrPlot = (JRFillMultiAxisPlot)getPlot();
Iterator iter = jrPlot.getAxes().iterator();
if (iter.hasNext()) {
JRFillChartAxis axis = iter.next();
JRFillChart fillChart = axis.getFillChart();
this.chart = fillChart.evaluateChart(evaluation);
configureChart(getPlot(), evaluation);
mainPlot = this.chart.getPlot();
if (axis.getPosition() == 2) {
if (mainPlot instanceof CategoryPlot)
((CategoryPlot)mainPlot).setRangeAxisLocation(0, AxisLocation.BOTTOM_OR_RIGHT);
if (mainPlot instanceof XYPlot)
((XYPlot)mainPlot).setRangeAxisLocation(0, AxisLocation.BOTTOM_OR_RIGHT);
} else {
if (mainPlot instanceof CategoryPlot)
((CategoryPlot)mainPlot).setRangeAxisLocation(0, AxisLocation.TOP_OR_LEFT);
if (mainPlot instanceof XYPlot)
((XYPlot)mainPlot).setRangeAxisLocation(0, AxisLocation.TOP_OR_LEFT);
}
}
int axisNumber = 0;
while (iter.hasNext()) {
axisNumber++;
JRFillChartAxis chartAxis = iter.next();
JRFillChart fillChart = chartAxis.getFillChart();
JFreeChart axisChart = fillChart.evaluateChart(evaluation);
if (mainPlot instanceof CategoryPlot) {
CategoryPlot mainCatPlot = (CategoryPlot)mainPlot;
if (!(axisChart.getPlot() instanceof CategoryPlot))
throw new JRException("You can not mix plot types in a MultiAxisChart");
CategoryPlot axisPlot = (CategoryPlot)axisChart.getPlot();
mainCatPlot.setRangeAxis(axisNumber, axisPlot.getRangeAxis());
if (chartAxis.getPosition() == 2) {
mainCatPlot.setRangeAxisLocation(axisNumber, AxisLocation.BOTTOM_OR_RIGHT);
} else {
mainCatPlot.setRangeAxisLocation(axisNumber, AxisLocation.TOP_OR_LEFT);
}
mainCatPlot.setDataset(axisNumber, axisPlot.getDataset());
mainCatPlot.mapDatasetToRangeAxis(axisNumber, axisNumber);
mainCatPlot.setRenderer(axisNumber, axisPlot.getRenderer());
configureAxisSeriesColors(axisPlot.getRenderer(), fillChart.getPlot());
continue;
}
if (mainPlot instanceof XYPlot) {
XYPlot mainXyPlot = (XYPlot)mainPlot;
if (!(axisChart.getPlot() instanceof XYPlot))
throw new JRException("You can not mix plot types in a MultiAxisChart");
XYPlot axisPlot = (XYPlot)axisChart.getPlot();
mainXyPlot.setRangeAxis(axisNumber, axisPlot.getRangeAxis());
if (chartAxis.getPosition() == 2) {
mainXyPlot.setRangeAxisLocation(axisNumber, AxisLocation.BOTTOM_OR_RIGHT);
} else {
mainXyPlot.setRangeAxisLocation(axisNumber, AxisLocation.TOP_OR_LEFT);
}
mainXyPlot.setDataset(axisNumber, axisPlot.getDataset());
mainXyPlot.mapDatasetToRangeAxis(axisNumber, axisNumber);
mainXyPlot.setRenderer(axisNumber, axisPlot.getRenderer());
configureAxisSeriesColors(axisPlot.getRenderer(), fillChart.getPlot());
continue;
}
throw new JRException("MultiAxis charts only support Category and XY plots.");
}
this.chartHyperlinkProvider = null;
}
protected void resolveElement(JRPrintElement element, byte evaluation) throws JRException {
evaluateRenderer(evaluation);
copy((JRPrintImage)element);
}
public int getBookmarkLevel() {
return ((JRChart)this.parent).getBookmarkLevel();
}
public String getCustomizerClass() {
return this.customizerClass;
}
private void evaluateDatasetRun(byte evaluation) throws JRException {
this.dataset.evaluateDatasetRun(evaluation);
}
public JRFillCloneable createClone(JRFillCloneFactory factory) {
return null;
}
public JRHyperlinkParameter[] getHyperlinkParameters() {
return ((JRChart)this.parent).getHyperlinkParameters();
}
public String getLinkType() {
return ((JRChart)this.parent).getLinkType();
}
public JRExpression getHyperlinkTooltipExpression() {
return ((JRChart)this.parent).getHyperlinkTooltipExpression();
}
private static RectangleEdge getEdge(byte position) {
RectangleEdge edge = RectangleEdge.TOP;
switch (position) {
case 1:
edge = RectangleEdge.TOP;
break;
case 2:
edge = RectangleEdge.BOTTOM;
break;
case 3:
edge = RectangleEdge.LEFT;
break;
case 4:
edge = RectangleEdge.RIGHT;
break;
}
return edge;
}
}