Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/jfree/StickyAxisAnnotation.java @ 4255:670e98f5a441
Fixed leak while merging facets.
The ThemeList that is used by OutputHelper to sort the
Facets for an Output now uses a list to store the ManagedFacets.
The correct order is made up by sorting the List using
Collections.sort() function of the Java JDK. Therfore, the
ManagedFacet class implements the Comparable interface. The
return value of its compareTo(other) method depends on the
value of the 'position' field.
author | Ingo Weinzierl <weinzierl.ingo@googlemail.com> |
---|---|
date | Thu, 25 Oct 2012 14:01:46 +0200 |
parents | 293a0d098606 |
children |
line wrap: on
line source
package de.intevation.flys.jfree; /** * Text, position on axis, and maybe a hit-point in a class. * * Idea is to draw a given text and a line to it from either axis. * This class just keeps the info. */ public class StickyAxisAnnotation { /** Simplified view on axes. */ public static enum SimpleAxis { X_AXIS, /** Usually "horizontal". */ Y_AXIS, /** Usually "vertical". */ Y_AXIS2 } /** The "symbolic" integer representing which axis to stick to. */ protected int axisSymbol; /** Which axis to stick to. */ protected SimpleAxis stickyAxis = SimpleAxis.X_AXIS; /** The 1-dimensional position of this annotation. */ protected float pos; /** * Optional field used when from axis a line should be drawn that * hits a curve or something similar (current scenario: duration curves). * This value is in the "other" dimension than the pos - field. */ protected float hitPoint; /** The text to display at axis. */ String text; /** * Constructor with implicit sticky x-axis. * @param text the text to display. * @param pos the position at which to draw the text and mark. */ public StickyAxisAnnotation(String text, float pos) { this(text, pos, SimpleAxis.X_AXIS); } /** * Constructor with given explicit axis. * @param text the text to display. * @param pos the position at which to draw the text and mark. * @param stickAxis the axis at which to stick (and to which 'pos' is * relative). */ public StickyAxisAnnotation(String text, float pos, SimpleAxis stickAxis ) { this(text, pos, stickAxis, 0); } /** * Constructor with given explicit axis and axisSymbol * @param text the text to display. * @param pos the position at which to draw the text and mark. * @param stickAxis the axis at which to stick (and to which 'pos' is * relative). */ public StickyAxisAnnotation(String text, float pos, SimpleAxis stickAxis, int axisSymbol ) { setStickyAxis(stickAxis); this.text = text; this.pos = pos; this.axisSymbol = axisSymbol; this.hitPoint = Float.NaN; } /** * Sets the "sticky axis" (whether to draw annotations at the * X- or the Y-Axis. * * @param stickyAxis axis to stick to. */ public void setStickyAxis(SimpleAxis stickyAxis) { this.stickyAxis = stickyAxis; } public float getPos() { return this.pos; } public SimpleAxis getStickyAxis() { return this.stickyAxis; } public boolean atX() { return this.getStickyAxis() == SimpleAxis.X_AXIS; } /** Get text to be displayed at axis. */ public String getText() { return this.text; } public int getAxisSymbol() { return this.axisSymbol; } /** Set where to hit a curve (if any). */ public void setHitPoint(float pos) { this.hitPoint = pos; } /** Get where to hit a curve (if any). */ public float getHitPoint() { return this.hitPoint; } /** Set sticky axis to the X axis if it is currently Y, and vice versa. */ public void flipStickyAxis() { if (this.getStickyAxis() == SimpleAxis.X_AXIS) { this.setStickyAxis(SimpleAxis.Y_AXIS); } else { this.setStickyAxis(SimpleAxis.X_AXIS); } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :