Mercurial > dive4elements > river
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 : |