diff flys-artifacts/src/main/java/de/intevation/flys/jfree/StyledXYSeries.java @ 2321:991e4a5df323

Enabled styling in timeseries charts. flys-artifacts/trunk@4003 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 09 Feb 2012 14:27:47 +0000
parents 41037d51c8b6
children 9d2a06c3a134
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/jfree/StyledXYSeries.java	Thu Feb 09 14:26:03 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/jfree/StyledXYSeries.java	Thu Feb 09 14:27:47 2012 +0000
@@ -1,31 +1,22 @@
 package de.intevation.flys.jfree;
 
-import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.geom.Ellipse2D;
 
 import org.apache.log4j.Logger;
 
 import org.w3c.dom.Document;
 
-import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
 import org.jfree.data.xy.XYSeries;
 
-import de.intevation.flys.utils.ThemeUtil;
 
 /**
- * Dataseries in two dimensions with additional theme-document and further
- * display options.
- * The theme-document will later "style" the graphical representation.
- * The display options can be used to control the z-order and the axis of the 
- * dataseries.
+ * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
  */
-public class StyledXYSeries extends XYSeries {
-
-    protected Document theme;
+public class StyledXYSeries extends XYSeries implements StyledSeries {
 
     private static final Logger logger = Logger.getLogger(StyledXYSeries.class);
 
+    protected Style style;
+
 
     public StyledXYSeries(String key, Document theme) {
         this(key, true, theme);
@@ -39,109 +30,19 @@
      */
     public StyledXYSeries(String key, boolean sorted, Document theme) {
         super(key, sorted);
-        this.theme = theme;
-    }
-
-
-    /**
-     * Applies line color, size and type attributes to renderer, also
-     * whether to draw lines and/or points.
-     */
-    public XYLineAndShapeRenderer applyTheme(XYLineAndShapeRenderer r, int idx){
-        applyLineColor(r, idx);
-        applyLineSize(r, idx);
-        applyLineType(r, idx);
-        applyShowLine(r, idx);
-        applyShowPoints(r, idx);
-        applyPointSize(r, idx);
-        applyShowMinimum(r, idx);
-        applyShowMaximum(r, idx);
-
-        return r;
-    }
-
-
-    /** Set line color to renderer. */
-    protected void applyLineColor(XYLineAndShapeRenderer r, int idx) {
-        Color c = ThemeUtil.parseLineColorField(theme);
-        r.setSeriesPaint(idx, c);
-    }
-
-
-    protected void applyLineSize(XYLineAndShapeRenderer r, int idx) {
-        int size = ThemeUtil.parseLineWidth(theme);
-        r.setSeriesStroke(
-            idx,
-            new BasicStroke(Integer.valueOf(size)));
+        setStyle(new XYStyle(theme));
     }
 
 
-    protected void applyLineType(XYLineAndShapeRenderer r, int idx) {
-        int size = ThemeUtil.parseLineWidth(theme);
-        float[] dashes = ThemeUtil.parseLineStyle(theme);
-
-        // Do not apply the dashed style.
-        if (dashes.length <= 1) {
-            return;
-        }
-
-        r.setSeriesStroke(
-            idx,
-            new BasicStroke(Integer.valueOf(size),
-                            BasicStroke.CAP_BUTT,
-                            BasicStroke.JOIN_ROUND,
-                            1.0f,
-                            dashes,
-                            0.0f));
-    }
-
-
-    protected void applyPointSize(XYLineAndShapeRenderer r, int idx) {
-        int size = ThemeUtil.parsePointWidth(theme);
-        int dim  = 2 * size;
-
-        r.setSeriesShape(idx, new Ellipse2D.Double(-size, -size, dim, dim));
+    @Override
+    public void setStyle(Style style) {
+        this.style = style;
     }
 
 
-    /**
-     * Sets form and visibility of points.
-     */
-    protected void applyShowPoints(XYLineAndShapeRenderer r, int idx) {
-        boolean show = ThemeUtil.parseShowPoints(theme);
-
-        r.setSeriesShapesVisible(idx, show);
-        r.setDrawOutlines(true);
-    }
-
-
-    protected void applyShowLine(XYLineAndShapeRenderer r, int idx) {
-        boolean show = ThemeUtil.parseShowLine(theme);
-        r.setSeriesLinesVisible(idx, show);
-    }
-
-
-    protected void applyShowMinimum(XYLineAndShapeRenderer r, int idx) {
-        if (!(r instanceof EnhancedLineAndShapeRenderer)) {
-            return;
-        }
-
-        boolean visible = ThemeUtil.parseShowMinimum(theme);
-
-        EnhancedLineAndShapeRenderer er = (EnhancedLineAndShapeRenderer) r;
-        er.setIsMinimumShapeVisisble(idx, visible);
-    }
-
-
-    protected void applyShowMaximum(XYLineAndShapeRenderer r, int idx) {
-        if (!(r instanceof EnhancedLineAndShapeRenderer)) {
-            return;
-        }
-
-        boolean visible = ThemeUtil.parseShowMaximum(theme);
-
-        EnhancedLineAndShapeRenderer er = (EnhancedLineAndShapeRenderer) r;
-        er.setIsMaximumShapeVisible(idx, visible);
+    @Override
+    public Style getStyle() {
+        return style;
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org