Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/exports/SyncNumberAxis.java @ 7597:fca46ce8e4f5
(issue1225) Implement Magic labels.
There is now a new value in the chartsettings "Suggested Label" which
is hidden in the property editor. A suggested label is the label that
combines the label's of all processors that wrote data to an axis.
This suggested label is set as the label when the user has not
overwritten the label.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Mon, 25 Nov 2013 14:58:14 +0100 |
parents | 0747ca95ad6e |
children |
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde * Software engineering by Intevation GmbH * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.exports; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.event.AxisChangeEvent; import org.jfree.chart.event.AxisChangeListener; import org.jfree.data.Range; import org.apache.log4j.Logger; /** * Axis which is to be registered with other axis and tries * to clone its range. The cloned range is transformed. * Keeps in sync via AxisChangedEvents. */ public class SyncNumberAxis extends IdentifiableNumberAxis implements AxisChangeListener { /** The logger used in this generator. */ private static Logger logger = Logger.getLogger(SyncNumberAxis.class); /** The other axis to clone range from. */ protected NumberAxis proxyAxis; /** Value to translate range by. */ protected double shift; public SyncNumberAxis(String key, String label, NumberAxis n) { super(key, label); this.proxyAxis = n; } /** Range of other axis changed, adjust own range. */ @Override public void axisChanged(AxisChangeEvent event) { logger.debug("SyncNumberAxis: axischange event"); this.setRange( transRange(((NumberAxis)event.getAxis()).getRange())); } /** Set value by which to translate the range. */ public void setShift(double shift) { this.shift = shift; } /** Set other axis to relate to, register listener. */ public void setProxyAxis(NumberAxis ax) { proxyAxis = ax; proxyAxis.addChangeListener(this); } /** Translate range by shift, scale by 100. */ protected Range transRange(Range r) { return new Range(100d*(r.getLowerBound()+shift), 100d*(r.getUpperBound()+shift)); } /** Set Range. */ @Override public void setRange(Range r) { super.setRange(r); logger.debug("SyncAxis: setRange"); } /* @Override public Range getRange() { Range r = new Range(100d*(proxyAxis.getRange().getLowerBound()+shift), 100d*(proxyAxis.getRange().getUpperBound()+shift)); return r; } @Override public void setLowerBound(double max) { } @Override public void setLowerMargin(double margin) { } @Override public void setUpperBound(double max) { } @Override public void setUpperMargin(double margin) { } @Override public void setRange(double a, double b) { } @Override public void setRange(Range range, boolean turnOffAutoRange, boolean notify){ } @Override public void setRangeAboutValue(double value, double length) {} @Override public void setRangeWithMargins(double lower, double upper) {} @Override public void setRangeWithMargins(Range range) {} @Override public void pan(double percent) {} @Override public void resizeRange(double p){} @Override public void resizeRange(double p, double a){} @Override public void resizeRange2(double p, double a){} */ } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :