Mercurial > dive4elements > gnv-client
view gnv-artifacts/src/main/java/de/intevation/gnv/chart/AbstractHistogram.java @ 774:d0a39efbfd96
Removed race-condition when trying to access the index of the next line color used in charts (applied patch in issue211).
gnv-artifacts/trunk@834 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 26 Mar 2010 10:06:36 +0000 |
parents | 79401c871da4 |
children | 86ca3c10523f |
line wrap: on
line source
package de.intevation.gnv.chart; import java.util.Locale; import org.apache.log4j.Logger; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartTheme; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.XYBarRenderer; /** * This abstract class defines some methods to adjust chart settings after its * creation. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public abstract class AbstractHistogram implements Chart { /** * Logger used for logging with Apache log4j. */ private Logger logger = Logger.getLogger(AbstractHistogram.class); /** * JFreeChart chart stored at this place after chart creation. */ protected JFreeChart chart; /** * Labels used for chart title, subtitle, axis description. */ protected ChartLabels labels; /** * Theme which is used to adjust the styling of this chart. */ protected ChartTheme theme; /** * Raw data which should be displayed in the chart. */ protected Object[] data; /** * Locale object used for i18n support. */ protected Locale locale; /** * Constructor for creating histogram charts. * * @param labels See {@link #labels} * @param data See {@link #data} * @param theme See {@link #theme} */ public AbstractHistogram( ChartLabels labels, Object[] data, ChartTheme theme ) { this.labels = labels; this.data = data; this.theme = theme; } /** * @see de.intevation.gnv.chart.Chart#generateChart() */ public JFreeChart generateChart() { if (chart != null) return chart; chart = ChartFactory.createHistogram( labels.getTitle(), labels.getDomainAxisLabel(), labels.getRangeAxisLabel(), null, PlotOrientation.VERTICAL, true, false, false); applyDatasets(); theme.apply(chart); adjustPlot(); return chart; } /** * Method to do some changes in plot settings. */ protected void adjustPlot() { XYPlot plot = (XYPlot) chart.getPlot(); XYBarRenderer renderer = (XYBarRenderer) plot.getRenderer(); renderer.setShadowVisible(false); renderer.setSeriesVisibleInLegend(0, false); } /** * This method needs to be implemented by subclasses and should add valid * <code>HistogramDataset</code> objects to the created chart. It is called * by {@link #generateChart} after chart creation. */ protected abstract void applyDatasets(); } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :