Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/jfree/XYStyle.java @ 4221:480de0dbca8e
Extended location input helper.
The locationpicker has now an attribute whether the input is distance or
location to display one or two clickable columns.
Replaced the record click handler with cell click handler.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Tue, 23 Oct 2012 13:17:20 +0200 |
parents | 0b9b2a0c4e64 |
children |
line wrap: on
line source
package de.intevation.flys.jfree; import de.intevation.flys.utils.ThemeUtil; import java.awt.BasicStroke; import java.awt.Color; import java.awt.geom.Ellipse2D; import org.apache.log4j.Logger; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.w3c.dom.Document; /** * Utility to apply theme-settings to a renderer. * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class XYStyle implements Style { private static Logger logger = Logger.getLogger(XYStyle.class); protected Document theme; protected XYLineAndShapeRenderer renderer; public XYStyle(Document theme) { this.theme = theme; this.renderer = null; } /** * Applies line color, size and type attributes to renderer, also * whether to draw lines and/or points. */ @Override public XYLineAndShapeRenderer applyTheme(XYLineAndShapeRenderer r, int idx){ this.renderer = r; applyLineColor(r, idx); applyLineSize(r, idx); applyLineType(r, idx); applyShowLine(r, idx); applyShowPoints(r, idx); applyPointSize(r, idx); applyPointColor(r, idx); applyShowMinimum(r, idx); applyShowMaximum(r, idx); // Line label styles applyShowLineLabel(r, idx); applyShowLineLabelBG(r, idx); applyLineLabelFont(r, idx); applyLineLabelColor(r, idx); applyLineLabelBGColor(r, idx); // Point label styles // TODO: Currently point label are annotations and are not drawn this way /* applyShowPointLabelBG(r, idx); applyLinePointFont(r, idx); applyLinePointColor(r, idx); applyLinePointBGColor(r, idx);*/ return r; } /** Set line color to renderer. */ protected void applyLineColor(XYLineAndShapeRenderer r, int idx) { Color c = ThemeUtil.parseLineColorField(theme); if(c != null) { logger.debug("applyLineColor " + c.toString()); r.setSeriesPaint(idx, c); } else { logger.warn("applyLineColor: color is null - malformed linecolor field?"); } } /** Tells the renderer whether or not to add a label to a line. */ protected void applyShowLineLabel(XYLineAndShapeRenderer r, int idx) { if (!(r instanceof EnhancedLineAndShapeRenderer)) { return; } boolean showLabelLine = ThemeUtil.parseShowLineLabel(theme); boolean anyLabel = showLabelLine || ThemeUtil.parseShowWidth(theme) || ThemeUtil.parseShowLevel(theme) || ThemeUtil.parseShowMiddleHeight(theme); ((EnhancedLineAndShapeRenderer)r).setShowLineLabel(anyLabel, idx); } /** Tells the renderer whether or not to fill the bg of a lines label. */ protected void applyShowLineLabelBG(XYLineAndShapeRenderer r, int idx) { if (!(r instanceof EnhancedLineAndShapeRenderer)) { return; } boolean showLabelLine = ThemeUtil.parseLabelShowBackground(theme); ((EnhancedLineAndShapeRenderer)r).setShowLineLabelBG(idx, showLabelLine); } /** Tell the renderer which font (and -size and -style) to use for * linelabels. */ protected void applyLineLabelFont(XYLineAndShapeRenderer r, int idx) { if (!(r instanceof EnhancedLineAndShapeRenderer)) { return; } ((EnhancedLineAndShapeRenderer)r).setLineLabelFont( ThemeUtil.parseTextFont(theme), idx); } /** Tell the renderer which color to use for * linelabels. */ protected void applyLineLabelColor(XYLineAndShapeRenderer r, int idx) { if (!(r instanceof EnhancedLineAndShapeRenderer)) { return; } ((EnhancedLineAndShapeRenderer)r).setLineLabelTextColor( idx, ThemeUtil.parseTextColor(theme)); } /** Tell the renderer which color to use for bg of * linelabels. */ protected void applyLineLabelBGColor(XYLineAndShapeRenderer r, int idx) { if (!(r instanceof EnhancedLineAndShapeRenderer)) { return; } ((EnhancedLineAndShapeRenderer)r).setLineLabelBGColor(idx, ThemeUtil.parseTextBackground(theme)); } /** Set stroke of series. */ protected void applyLineSize(XYLineAndShapeRenderer r, int idx) { int size = ThemeUtil.parseLineWidth(theme); r.setSeriesStroke( idx, new BasicStroke(size)); } /** Set stroke strength of series. */ 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(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)); } protected void applyPointColor(XYLineAndShapeRenderer r, int idx) { Color c = ThemeUtil.parsePointColor(theme); if (c != null) { r.setSeriesFillPaint(idx, c); r.setUseFillPaint(true); r.setDrawOutlines(false); } } /** * 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 XYLineAndShapeRenderer getRenderer() { return this.renderer; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :