Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java @ 924:f7761914f745
An initial implementation to render chart series based on the XML configuration in themes.xml.
flys-artifacts/trunk@2276 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 01 Jul 2011 14:46:13 +0000 |
parents | 7ca4a287cd0e |
children | fd5c70973e0b |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java Fri Jul 01 11:16:11 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/XYChartGenerator.java Fri Jul 01 14:46:13 2011 +0000 @@ -14,6 +14,7 @@ import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; +import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.data.Range; import org.jfree.data.xy.XYDataset; import org.jfree.data.xy.XYSeries; @@ -112,6 +113,8 @@ autoZoom(plot); + applyThemes(plot); + return chart; } @@ -329,5 +332,59 @@ protected void addSubtitles(JFreeChart chart) { // override this method in subclasses that need subtitles } + + + protected void applyThemes(XYPlot plot) { + if (first != null) { + applyThemes(plot, first, 0); + } + + if (second != null) { + applyThemes(plot, second, 1); + } + } + + + protected void applyThemes(XYPlot plot, XYSeriesCollection dataset, int i) { + XYLineAndShapeRenderer r = getRenderer(plot, i); + + for (int s = 0, num = dataset.getSeriesCount(); s < num; s++) { + XYSeries series = dataset.getSeries(s); + + if (series instanceof StyledXYSeries) { + ((StyledXYSeries) series).applyTheme(r, s); + } + } + + plot.setRenderer(i, r); + } + + + protected XYLineAndShapeRenderer getRenderer(XYPlot plot, int idx) { + XYLineAndShapeRenderer r = + (XYLineAndShapeRenderer) plot.getRenderer(idx); + + if (r != null) { + return r; + } + + if (idx == 0) { + logger.warn("No default renderer set!"); + return new XYLineAndShapeRenderer(); + } + + r = (XYLineAndShapeRenderer) plot.getRenderer(0); + + try { + return (XYLineAndShapeRenderer) r.clone(); + } + catch (CloneNotSupportedException cnse) { + logger.warn(cnse, cnse); + } + + logger.warn("No applicalable renderer found!"); + + return new XYLineAndShapeRenderer(); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :