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 }

http://dive4elements.wald.intevation.org