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);
     }
 }

http://dive4elements.wald.intevation.org