Mercurial > dive4elements > gnv-client
diff 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 |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/chart/XMLChartTheme.java Tue Dec 01 16:27:56 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/XMLChartTheme.java Wed Dec 02 10:50:12 2009 +0000 @@ -2,12 +2,14 @@ import java.awt.Font; import java.awt.Color; +import java.awt.geom.Ellipse2D; import java.lang.NumberFormatException; import org.apache.log4j.Logger; import org.jfree.chart.StandardChartTheme; import org.jfree.chart.plot.XYPlot; +import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.ui.RectangleInsets; import org.jfree.util.UnitType; @@ -28,6 +30,11 @@ protected boolean domainCrosshairVisible; protected boolean rangeCrosshairVisible; + protected boolean renderLines; + protected boolean renderShapes; + + protected int pointWidth; + protected int pointHeight; public XMLChartTheme(String name) { @@ -71,6 +78,7 @@ initPlotParameters(document); initAxisParameters(document); initLegendParameters(document); + initRenderer(document); } @@ -189,6 +197,22 @@ } + private void initRenderer(Document document) { + log.debug("init renderer parameters."); + + pointWidth = getInt(document, "theme/plot/itemrenderer/width/@value"); + log.debug("Read point width of " + pointWidth); + pointHeight = getInt(document, "theme/plot/itemrenderer/height/@value"); + log.debug("Read point height of " + pointHeight); + renderLines = getBool( + document, "theme/plot/itemrenderer/renderLines/@value" + ); + renderShapes = getBool( + document, "theme/plot/itemrenderer/renderPoints/@value" + ); + } + + private static String getString(Document document, String xpath) { return Config.getStringXPath(document, xpath); } @@ -246,5 +270,26 @@ super.applyToXYPlot(plot); plot.setDomainCrosshairVisible(this.domainCrosshairVisible); plot.setRangeCrosshairVisible(this.rangeCrosshairVisible); + + applyToXYLineAndShapeRenderer(plot); + } + + + protected void applyToXYLineAndShapeRenderer(XYPlot plot) { + if (plot == null) + return; + + XYLineAndShapeRenderer renderer = + (XYLineAndShapeRenderer) plot.getRenderer(); + + Ellipse2D.Double point = new Ellipse2D.Double( + -(pointWidth/2), -(pointHeight/2), pointWidth, pointHeight + ); + + renderer.setSeriesShape(0, point); + renderer.setSeriesShapesVisible(0, renderShapes); + renderer.setSeriesLinesVisible(0, renderLines); + + plot.setRenderer(renderer); } }