felix@6421: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde felix@6421: * Software engineering by Intevation GmbH felix@6421: * felix@6421: * This file is Free Software under the GNU AGPL (>=v3) felix@6421: * and comes with ABSOLUTELY NO WARRANTY! Check out the felix@6421: * documentation coming with Dive4Elements River for details. felix@6421: */ felix@6421: felix@6421: package org.dive4elements.river.exports; felix@6421: felix@6421: import org.jfree.chart.axis.NumberAxis; felix@6421: import org.jfree.chart.event.AxisChangeEvent; felix@6421: import org.jfree.chart.event.AxisChangeListener; felix@6421: import org.jfree.data.Range; felix@6421: felix@6421: import org.apache.log4j.Logger; felix@6421: felix@6421: /** felix@6421: * Axis which is to be registered with other axis and tries felix@6421: * to clone its range. The cloned range is transformed. felix@6795: * Keeps in sync via AxisChangedEvents. felix@6421: */ felix@6421: public class SyncNumberAxis extends IdentifiableNumberAxis felix@6421: implements AxisChangeListener felix@6421: { felix@6421: /** The logger used in this generator. */ felix@6421: private static Logger logger = felix@6421: Logger.getLogger(SyncNumberAxis.class); felix@6421: felix@6421: /** The other axis to clone range from. */ felix@6421: protected NumberAxis proxyAxis; felix@6421: felix@6421: /** Value to translate range by. */ felix@6421: protected double shift; felix@6421: felix@6421: felix@6462: public SyncNumberAxis(String key, String label, NumberAxis n) { felix@6421: super(key, label); felix@6421: this.proxyAxis = n; felix@6421: } felix@6421: felix@6421: felix@6421: /** Range of other axis changed, adjust own range. */ felix@6421: @Override felix@6421: public void axisChanged(AxisChangeEvent event) { felix@6421: logger.debug("SyncNumberAxis: axischange event"); felix@6421: this.setRange( felix@6421: transRange(((NumberAxis)event.getAxis()).getRange())); felix@6421: } felix@6421: felix@6421: /** Set value by which to translate the range. */ felix@6462: public void setShift(double shift) { felix@6421: this.shift = shift; felix@6421: } felix@6421: felix@6421: felix@6421: /** Set other axis to relate to, register listener. */ felix@6421: public void setProxyAxis(NumberAxis ax) { felix@6421: proxyAxis = ax; felix@6421: proxyAxis.addChangeListener(this); felix@6421: } felix@6421: felix@6421: /** Translate range by shift, scale by 100. */ felix@6421: protected Range transRange(Range r) { felix@6421: return new Range(100d*(r.getLowerBound()+shift), felix@6421: 100d*(r.getUpperBound()+shift)); felix@6421: } felix@6421: felix@6421: /** Set Range. */ felix@6421: @Override felix@6421: public void setRange(Range r) { felix@6421: super.setRange(r); felix@6421: logger.debug("SyncAxis: setRange"); felix@6421: } felix@6421: felix@6421: felix@6421: /* felix@6421: @Override felix@6421: public Range getRange() { felix@6421: Range r = new Range(100d*(proxyAxis.getRange().getLowerBound()+shift), felix@6421: 100d*(proxyAxis.getRange().getUpperBound()+shift)); felix@6421: return r; felix@6421: } felix@6421: felix@6421: @Override felix@6421: public void setLowerBound(double max) { felix@6421: } felix@6421: felix@6421: @Override felix@6421: public void setLowerMargin(double margin) { felix@6421: } felix@6421: felix@6421: @Override felix@6421: public void setUpperBound(double max) { felix@6421: } felix@6421: felix@6421: @Override felix@6421: public void setUpperMargin(double margin) { felix@6421: } felix@6421: felix@6421: @Override felix@6421: public void setRange(double a, double b) { felix@6421: } felix@6421: felix@6421: @Override felix@6421: public void setRange(Range range, boolean turnOffAutoRange, boolean notify){ felix@6421: } felix@6421: felix@6421: @Override felix@6421: public void setRangeAboutValue(double value, double length) {} felix@6421: felix@6421: @Override felix@6421: public void setRangeWithMargins(double lower, double upper) {} felix@6421: felix@6421: @Override felix@6421: public void setRangeWithMargins(Range range) {} felix@6421: felix@6421: @Override felix@6421: public void pan(double percent) {} felix@6421: felix@6421: @Override felix@6421: public void resizeRange(double p){} felix@6421: felix@6421: @Override felix@6421: public void resizeRange(double p, double a){} felix@6421: felix@6421: @Override felix@6421: public void resizeRange2(double p, double a){} felix@6421: felix@6421: */ felix@6421: } felix@6421: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :