diff gnv-artifacts/src/main/java/de/intevation/gnv/chart/AbstractXYLineChart.java @ 315:63f8b3fb7d9a

Localization of chart axis with locale which fits best to server and browser settings. gnv-artifacts/trunk@373 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 26 Nov 2009 08:47:44 +0000
parents f0f106c7b906
children 22a6493e8460
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/chart/AbstractXYLineChart.java	Thu Nov 26 08:45:04 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/AbstractXYLineChart.java	Thu Nov 26 08:47:44 2009 +0000
@@ -1,13 +1,16 @@
 package de.intevation.gnv.chart;
 
 import java.awt.Color;
+import java.text.NumberFormat;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.Locale;
 
 import org.apache.log4j.Logger;
 
 import org.jfree.chart.JFreeChart;
 import org.jfree.chart.ChartFactory;
+import org.jfree.chart.axis.Axis;
 import org.jfree.chart.axis.NumberAxis;
 import org.jfree.chart.axis.NumberTickUnit;
 import org.jfree.chart.axis.AxisLocation;
@@ -36,6 +39,7 @@
     protected abstract void initData();
     protected abstract void addValue(Result row, Series series);
     protected abstract void addSeries(Series series, int idx);
+    protected abstract void localizeDomainAxis(Axis axis, Locale locale);
     protected abstract String createSeriesName(
         String breakPoint1,
         String breakPoint2,
@@ -69,20 +73,25 @@
 
     protected void prepareAxis(String seriesKey, int idx) {
         log.debug("prepare axis of xychart");
-        XYPlot plot     = chart.getXYPlot();
-        NumberAxis axis = new NumberAxis(seriesKey);
+
+        XYPlot plot      = chart.getXYPlot();
+        Axis xAxis       = plot.getDomainAxis();
+        NumberAxis yAxis = new NumberAxis(seriesKey);
+
+        localizeDomainAxis(xAxis, locale);
+        localizeRangeAxis(yAxis, locale);
 
         if (seriesKey.contains("richtung")) {
-            axis.setTickUnit(new NumberTickUnit(30.0));
-            axis.setUpperBound(360.0);
-            axis.setLowerBound(0.0);
-            plot.setRangeAxis(idx, axis);
+            yAxis.setTickUnit(new NumberTickUnit(30.0));
+            yAxis.setUpperBound(360.0);
+            yAxis.setLowerBound(0.0);
+            plot.setRangeAxis(idx, yAxis);
         }
         else {
-            axis.setFixedDimension(10.0);
-            axis.setAutoRangeIncludesZero(false);
-            plot.setRangeAxis(idx, axis);
-            axis.configure();
+            yAxis.setFixedDimension(10.0);
+            yAxis.setAutoRangeIncludesZero(false);
+            plot.setRangeAxis(idx, yAxis);
+            yAxis.configure();
         }
 
         if (idx % 2 != 0)
@@ -97,6 +106,20 @@
     }
 
 
+    protected void localizeRangeAxis(Axis axis, Locale locale) {
+        if (locale == null)
+            return;
+
+        log.debug(
+            "Set language of axis [" + axis.getLabel() + "] " +
+            "to " + locale.toString()
+        );
+
+        NumberFormat format = NumberFormat.getInstance(locale);
+        ((NumberAxis) axis).setNumberFormatOverride(format);
+    }
+
+
     protected String findValueTitle(Collection values, String id) {
         log.debug("find description of dataset");
 
@@ -104,7 +127,7 @@
             Iterator it = values.iterator();
             while (it.hasNext()) {
                 KeyValueDescibeData data = (KeyValueDescibeData) it.next();
-    
+
                 if (id.equals(data.getKey()))
                     return data.getValue();
             }
@@ -112,4 +135,4 @@
         return "";
     }
 }
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=latin1 :
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org