Mercurial > dive4elements > gnv-client
comparison gnv-artifacts/src/main/java/de/intevation/gnv/chart/XMLChartTheme.java @ 327:22a6493e8460
New options in chart template: visibility of lines and points in charts and point's size.
gnv-artifacts/trunk@393 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 02 Dec 2009 10:50:12 +0000 |
parents | a16d337c5678 |
children | 3d13fa281a7e |
comparison
equal
deleted
inserted
replaced
326:37847d724fc9 | 327:22a6493e8460 |
---|---|
1 package de.intevation.gnv.chart; | 1 package de.intevation.gnv.chart; |
2 | 2 |
3 import java.awt.Font; | 3 import java.awt.Font; |
4 import java.awt.Color; | 4 import java.awt.Color; |
5 import java.awt.geom.Ellipse2D; | |
5 import java.lang.NumberFormatException; | 6 import java.lang.NumberFormatException; |
6 | 7 |
7 import org.apache.log4j.Logger; | 8 import org.apache.log4j.Logger; |
8 | 9 |
9 import org.jfree.chart.StandardChartTheme; | 10 import org.jfree.chart.StandardChartTheme; |
10 import org.jfree.chart.plot.XYPlot; | 11 import org.jfree.chart.plot.XYPlot; |
12 import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; | |
11 import org.jfree.ui.RectangleInsets; | 13 import org.jfree.ui.RectangleInsets; |
12 import org.jfree.util.UnitType; | 14 import org.jfree.util.UnitType; |
13 | 15 |
14 | 16 |
15 import org.w3c.dom.Document; | 17 import org.w3c.dom.Document; |
26 | 28 |
27 private Logger log = Logger.getLogger(XMLChartTheme.class); | 29 private Logger log = Logger.getLogger(XMLChartTheme.class); |
28 | 30 |
29 protected boolean domainCrosshairVisible; | 31 protected boolean domainCrosshairVisible; |
30 protected boolean rangeCrosshairVisible; | 32 protected boolean rangeCrosshairVisible; |
33 protected boolean renderLines; | |
34 protected boolean renderShapes; | |
35 | |
36 protected int pointWidth; | |
37 protected int pointHeight; | |
31 | 38 |
32 | 39 |
33 public XMLChartTheme(String name) { | 40 public XMLChartTheme(String name) { |
34 super(name); | 41 super(name); |
35 } | 42 } |
69 initTitleParameters(document); | 76 initTitleParameters(document); |
70 initSubtitleParameters(document); | 77 initSubtitleParameters(document); |
71 initPlotParameters(document); | 78 initPlotParameters(document); |
72 initAxisParameters(document); | 79 initAxisParameters(document); |
73 initLegendParameters(document); | 80 initLegendParameters(document); |
81 initRenderer(document); | |
74 } | 82 } |
75 | 83 |
76 | 84 |
77 private void initTitleParameters(Document document) { | 85 private void initTitleParameters(Document document) { |
78 log.debug("init title parameters."); | 86 log.debug("init title parameters."); |
187 if (c != null) | 195 if (c != null) |
188 setLegendBackgroundPaint(c); | 196 setLegendBackgroundPaint(c); |
189 } | 197 } |
190 | 198 |
191 | 199 |
200 private void initRenderer(Document document) { | |
201 log.debug("init renderer parameters."); | |
202 | |
203 pointWidth = getInt(document, "theme/plot/itemrenderer/width/@value"); | |
204 log.debug("Read point width of " + pointWidth); | |
205 pointHeight = getInt(document, "theme/plot/itemrenderer/height/@value"); | |
206 log.debug("Read point height of " + pointHeight); | |
207 renderLines = getBool( | |
208 document, "theme/plot/itemrenderer/renderLines/@value" | |
209 ); | |
210 renderShapes = getBool( | |
211 document, "theme/plot/itemrenderer/renderPoints/@value" | |
212 ); | |
213 } | |
214 | |
215 | |
192 private static String getString(Document document, String xpath) { | 216 private static String getString(Document document, String xpath) { |
193 return Config.getStringXPath(document, xpath); | 217 return Config.getStringXPath(document, xpath); |
194 } | 218 } |
195 | 219 |
196 | 220 |
244 log.debug("apply theme parameter to XYPlot"); | 268 log.debug("apply theme parameter to XYPlot"); |
245 | 269 |
246 super.applyToXYPlot(plot); | 270 super.applyToXYPlot(plot); |
247 plot.setDomainCrosshairVisible(this.domainCrosshairVisible); | 271 plot.setDomainCrosshairVisible(this.domainCrosshairVisible); |
248 plot.setRangeCrosshairVisible(this.rangeCrosshairVisible); | 272 plot.setRangeCrosshairVisible(this.rangeCrosshairVisible); |
273 | |
274 applyToXYLineAndShapeRenderer(plot); | |
275 } | |
276 | |
277 | |
278 protected void applyToXYLineAndShapeRenderer(XYPlot plot) { | |
279 if (plot == null) | |
280 return; | |
281 | |
282 XYLineAndShapeRenderer renderer = | |
283 (XYLineAndShapeRenderer) plot.getRenderer(); | |
284 | |
285 Ellipse2D.Double point = new Ellipse2D.Double( | |
286 -(pointWidth/2), -(pointHeight/2), pointWidth, pointHeight | |
287 ); | |
288 | |
289 renderer.setSeriesShape(0, point); | |
290 renderer.setSeriesShapesVisible(0, renderShapes); | |
291 renderer.setSeriesLinesVisible(0, renderLines); | |
292 | |
293 plot.setRenderer(renderer); | |
249 } | 294 } |
250 } | 295 } |