comparison 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
comparison
equal deleted inserted replaced
923:7ca4a287cd0e 924:f7761914f745
12 import org.jfree.chart.JFreeChart; 12 import org.jfree.chart.JFreeChart;
13 import org.jfree.chart.axis.NumberAxis; 13 import org.jfree.chart.axis.NumberAxis;
14 import org.jfree.chart.axis.ValueAxis; 14 import org.jfree.chart.axis.ValueAxis;
15 import org.jfree.chart.plot.PlotOrientation; 15 import org.jfree.chart.plot.PlotOrientation;
16 import org.jfree.chart.plot.XYPlot; 16 import org.jfree.chart.plot.XYPlot;
17 import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
17 import org.jfree.data.Range; 18 import org.jfree.data.Range;
18 import org.jfree.data.xy.XYDataset; 19 import org.jfree.data.xy.XYDataset;
19 import org.jfree.data.xy.XYSeries; 20 import org.jfree.data.xy.XYSeries;
20 import org.jfree.data.xy.XYSeriesCollection; 21 import org.jfree.data.xy.XYSeriesCollection;
21 22
110 111
111 removeEmptyRangeAxes(plot); 112 removeEmptyRangeAxes(plot);
112 113
113 autoZoom(plot); 114 autoZoom(plot);
114 115
116 applyThemes(plot);
117
115 return chart; 118 return chart;
116 } 119 }
117 120
118 121
119 protected void addDatasets(XYPlot plot) { 122 protected void addDatasets(XYPlot plot) {
327 330
328 331
329 protected void addSubtitles(JFreeChart chart) { 332 protected void addSubtitles(JFreeChart chart) {
330 // override this method in subclasses that need subtitles 333 // override this method in subclasses that need subtitles
331 } 334 }
335
336
337 protected void applyThemes(XYPlot plot) {
338 if (first != null) {
339 applyThemes(plot, first, 0);
340 }
341
342 if (second != null) {
343 applyThemes(plot, second, 1);
344 }
345 }
346
347
348 protected void applyThemes(XYPlot plot, XYSeriesCollection dataset, int i) {
349 XYLineAndShapeRenderer r = getRenderer(plot, i);
350
351 for (int s = 0, num = dataset.getSeriesCount(); s < num; s++) {
352 XYSeries series = dataset.getSeries(s);
353
354 if (series instanceof StyledXYSeries) {
355 ((StyledXYSeries) series).applyTheme(r, s);
356 }
357 }
358
359 plot.setRenderer(i, r);
360 }
361
362
363 protected XYLineAndShapeRenderer getRenderer(XYPlot plot, int idx) {
364 XYLineAndShapeRenderer r =
365 (XYLineAndShapeRenderer) plot.getRenderer(idx);
366
367 if (r != null) {
368 return r;
369 }
370
371 if (idx == 0) {
372 logger.warn("No default renderer set!");
373 return new XYLineAndShapeRenderer();
374 }
375
376 r = (XYLineAndShapeRenderer) plot.getRenderer(0);
377
378 try {
379 return (XYLineAndShapeRenderer) r.clone();
380 }
381 catch (CloneNotSupportedException cnse) {
382 logger.warn(cnse, cnse);
383 }
384
385 logger.warn("No applicalable renderer found!");
386
387 return new XYLineAndShapeRenderer();
388 }
332 } 389 }
333 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 390 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org