diff gnv-artifacts/src/main/java/de/intevation/gnv/chart/XMLChartTheme.java @ 617:3d13fa281a7e

Added new ouput mode: histogram. gnv-artifacts/trunk@688 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 15 Feb 2010 11:44:01 +0000
parents 22a6493e8460
children 79401c871da4
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/chart/XMLChartTheme.java	Fri Feb 12 18:04:58 2010 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/XMLChartTheme.java	Mon Feb 15 11:44:01 2010 +0000
@@ -2,6 +2,7 @@
 
 import java.awt.Font;
 import java.awt.Color;
+import java.awt.Paint;
 import java.awt.geom.Ellipse2D;
 import java.lang.NumberFormatException;
 
@@ -9,6 +10,8 @@
 
 import org.jfree.chart.StandardChartTheme;
 import org.jfree.chart.plot.XYPlot;
+import org.jfree.chart.renderer.xy.AbstractXYItemRenderer;
+import org.jfree.chart.renderer.xy.XYBarRenderer;
 import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
 import org.jfree.ui.RectangleInsets;
 import org.jfree.util.UnitType;
@@ -36,6 +39,8 @@
     protected int pointWidth;
     protected int pointHeight;
 
+    protected Paint histogramBasePaint;
+
 
     public XMLChartTheme(String name) {
         super(name);
@@ -62,6 +67,16 @@
     }
 
 
+    public void setHistogramBasePaint(Color c) {
+        this.histogramBasePaint = c;
+    }
+
+
+    public Paint getHistogramBasePaint() {
+        return histogramBasePaint;
+    }
+
+
     public void applyXMLConfiguration(Document document) {
         log.debug("create XMLChartTheme");
 
@@ -79,6 +94,7 @@
         initAxisParameters(document);
         initLegendParameters(document);
         initRenderer(document);
+        initHistogramColor(document);
     }
 
 
@@ -213,6 +229,16 @@
     }
 
 
+    private void initHistogramColor(Document document) {
+        log.debug("init histogram color");
+        String tmp = getString(document, "theme/histogram/bar/color/@value");
+        Color c = decodeColor(tmp);
+
+        if (c != null)
+            setHistogramBasePaint(c);
+    }
+
+
     private static String getString(Document document, String xpath) {
         return Config.getStringXPath(document, xpath);
     }
@@ -271,7 +297,14 @@
         plot.setDomainCrosshairVisible(this.domainCrosshairVisible);
         plot.setRangeCrosshairVisible(this.rangeCrosshairVisible);
 
-        applyToXYLineAndShapeRenderer(plot);
+        AbstractXYItemRenderer renderer = (AbstractXYItemRenderer) 
+            plot.getRenderer();
+
+        if (renderer instanceof XYLineAndShapeRenderer)
+            applyToXYLineAndShapeRenderer(plot);
+
+        if (renderer instanceof XYBarRenderer)
+            applyToXYBarRenderer(plot);
     }
 
 
@@ -292,4 +325,14 @@
 
         plot.setRenderer(renderer);
     }
+
+
+    protected void applyToXYBarRenderer(XYPlot plot) {
+        if (plot == null)
+            return;
+
+        XYBarRenderer renderer = (XYBarRenderer) plot.getRenderer();
+
+        renderer.setSeriesPaint(0, histogramBasePaint);
+    }
 }

http://dive4elements.wald.intevation.org