protected void configureChart(final JFreeChart chart)
{
super.configureChart(chart);
final XYPlot plot = chart.getXYPlot();
final XYItemRenderer renderer = plot.getRenderer();
if (StringUtils.isEmpty(getTooltipFormula()) == false)
{
renderer.setBaseToolTipGenerator(new FormulaXYZTooltipGenerator(getRuntime(), getTooltipFormula()));
}
if (StringUtils.isEmpty(getUrlFormula()) == false)
{
renderer.setURLGenerator(new FormulaXYZURLGenerator(getRuntime(), getUrlFormula()));
}
renderer.setBaseItemLabelsVisible(Boolean.TRUE.equals(getItemsLabelVisible()));
if (getItemLabelFont() != null)
{
renderer.setBaseItemLabelFont(getItemLabelFont());
}
plot.setOrientation(computePlotOrientation());
// May be an axis that supports dates
final ValueAxis domainAxis = plot.getDomainAxis();
if (domainAxis instanceof NumberAxis)
{
final NumberAxis numberAxis = (NumberAxis) domainAxis;
numberAxis.setAutoRangeIncludesZero(isDomainIncludesZero());
numberAxis.setAutoRangeStickyZero(isDomainStickyZero());
if (getDomainPeriodCount() > 0)
{
if (getDomainTickFormat() != null)
{
numberAxis.setTickUnit(new NumberTickUnit(getDomainPeriodCount(), getDomainTickFormat()));
}
else if (getDomainTickFormatString() != null)
{
final FastDecimalFormat formatter = new FastDecimalFormat
(getDomainTickFormatString(), getResourceBundleFactory().getLocale());
numberAxis.setTickUnit(new FastNumberTickUnit(getDomainPeriodCount(), formatter));
}
else
{
numberAxis.setTickUnit(new FastNumberTickUnit(getDomainPeriodCount()));
}
}
else
{
if (getDomainTickFormat() != null)
{
numberAxis.setNumberFormatOverride(getDomainTickFormat());
}
else if (getDomainTickFormatString() != null)
{
final DecimalFormat formatter = new DecimalFormat
(getDomainTickFormatString(), new DecimalFormatSymbols(getResourceBundleFactory().getLocale()));
numberAxis.setNumberFormatOverride(formatter);
}
}
}
else if (domainAxis instanceof DateAxis)
{
final DateAxis numberAxis = (DateAxis) domainAxis;
if (getDomainPeriodCount() > 0 && getDomainTimePeriod() != null)
{
if (getDomainTickFormatString() != null)
{
final SimpleDateFormat formatter = new SimpleDateFormat
(getDomainTickFormatString(), new DateFormatSymbols(getResourceBundleFactory().getLocale()));
numberAxis.setTickUnit
(new DateTickUnit(getDateUnitAsInt(getDomainTimePeriod()), (int) getDomainPeriodCount(), formatter));
}
else
{
numberAxis.setTickUnit
(new DateTickUnit(getDateUnitAsInt(getDomainTimePeriod()), (int) getDomainPeriodCount()));
}
}
}
if (domainAxis != null)
{
domainAxis.setLabel(getDomainTitle());
if (getDomainTitleFont() != null)
{
domainAxis.setLabelFont(getDomainTitleFont());
}
domainAxis.setVerticalTickLabels(isDomainVerticalTickLabels());
if (getDomainTickFont() != null)
{
domainAxis.setTickLabelFont(getDomainTickFont());
}
if (getDomainMinimum() != ValueAxis.DEFAULT_LOWER_BOUND)
{
domainAxis.setLowerBound(getDomainMinimum());
}
if (getDomainMaximum() != ValueAxis.DEFAULT_UPPER_BOUND)
{
domainAxis.setUpperBound(getDomainMaximum());
}
}
final ValueAxis rangeAxis = plot.getRangeAxis();
if (rangeAxis instanceof NumberAxis)
{
final NumberAxis numberAxis = (NumberAxis) rangeAxis;
if (getRangePeriodCount() > 0)
{
if (getRangeTickFormat() != null)
{
numberAxis.setTickUnit(new NumberTickUnit(getRangePeriodCount(), getRangeTickFormat()));
}
else if (getRangeTickFormatString() != null)
{
final FastDecimalFormat formatter = new FastDecimalFormat
(getRangeTickFormatString(), getResourceBundleFactory().getLocale());
numberAxis.setTickUnit(new FastNumberTickUnit(getRangePeriodCount(), formatter));
}
else
{
numberAxis.setTickUnit(new FastNumberTickUnit(getRangePeriodCount()));
}
}
else
{
if (getRangeTickFormat() != null)
{
numberAxis.setNumberFormatOverride(getRangeTickFormat());
}
else if (getRangeTickFormatString() != null)
{
final DecimalFormat formatter = new DecimalFormat
(getRangeTickFormatString(), new DecimalFormatSymbols(getResourceBundleFactory().getLocale()));
numberAxis.setNumberFormatOverride(formatter);
}
}
}
else if (rangeAxis instanceof DateAxis)
{
final DateAxis numberAxis = (DateAxis) rangeAxis;
if (getRangePeriodCount() > 0 && getRangeTimePeriod() != null)
{
if (getRangeTickFormatString() != null)
{
final SimpleDateFormat formatter = new SimpleDateFormat
(getRangeTickFormatString(), new DateFormatSymbols(getResourceBundleFactory().getLocale()));
numberAxis.setTickUnit
(new DateTickUnit(getDateUnitAsInt(getRangeTimePeriod()), (int) getRangePeriodCount(), formatter));
}
else
{
numberAxis.setTickUnit
(new DateTickUnit(getDateUnitAsInt(getRangeTimePeriod()), (int) getRangePeriodCount()));
}
}
else
{
if (getRangeTickFormatString() != null)
{
final SimpleDateFormat formatter = new SimpleDateFormat
(getRangeTickFormatString(), new DateFormatSymbols(getResourceBundleFactory().getLocale()));
numberAxis.setDateFormatOverride(formatter);
}
}
}
if (rangeAxis != null)
{
rangeAxis.setLabel(getRangeTitle());
if (getRangeTitleFont() != null)
{
rangeAxis.setLabelFont(getRangeTitleFont());
}
if (getRangeTickFont() != null)
{
rangeAxis.setTickLabelFont(getRangeTickFont());
}
if (getRangeMinimum() != ValueAxis.DEFAULT_LOWER_BOUND)
{
rangeAxis.setLowerBound(getRangeMinimum());
}
if (getRangeMaximum() != ValueAxis.DEFAULT_UPPER_BOUND)
{
rangeAxis.setUpperBound(getRangeMaximum());
}
}
final String[] colors = getSeriesColor();
for (int i = 0; i < colors.length; i++)
{
renderer.setSeriesPaint(i, parseColorFromString(colors[i]));
}
}