001: /* ===========================================================
002: * JFreeChart : a free chart library for the Java(tm) platform
003: * ===========================================================
004: *
005: * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
006: *
007: * Project Info: http://www.jfree.org/jfreechart/index.html
008: *
009: * This library is free software; you can redistribute it and/or modify it
010: * under the terms of the GNU Lesser General Public License as published by
011: * the Free Software Foundation; either version 2.1 of the License, or
012: * (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful, but
015: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017: * License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
022: * USA.
023: *
024: * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
025: * in the United States and other countries.]
026: *
027: * --------------
028: * AxisState.java
029: * --------------
030: * (C) Copyright 2003, 2004, by Object Refinery Limited and Contributors.
031: *
032: * Original Author: David Gilbert (for Object Refinery Limited);
033: * Contributor(s): -;
034: *
035: * $Id: AxisState.java,v 1.2.2.1 2005/10/25 20:37:34 mungady Exp $
036: *
037: * Changes
038: * -------
039: * 03-Nov-2003 : Added standard header (DG);
040: * 07-Nov-2003 : Added 'max' attribute (DG);
041: *
042: */
043:
044: package org.jfree.chart.axis;
045:
046: import java.util.List;
047:
048: import org.jfree.ui.RectangleEdge;
049:
050: /**
051: * Instances of this class are used to carry state information for an axis
052: * during the drawing process. By retaining this information in a separate
053: * object, it is possible for multiple threads to draw the same axis to
054: * different output targets (each drawing will maintain separate state
055: * information).
056: */
057: public class AxisState {
058:
059: /** The cursor position. */
060: private double cursor;
061:
062: /** The axis ticks. */
063: private List ticks;
064:
065: /** The maximum width/height. */
066: private double max;
067:
068: /**
069: * Creates a new axis state.
070: */
071: public AxisState() {
072: this (0.0);
073: }
074:
075: /**
076: * Creates a new axis state.
077: *
078: * @param cursor the cursor.
079: */
080: public AxisState(double cursor) {
081: this .cursor = cursor;
082: this .ticks = new java.util.ArrayList();
083: }
084:
085: /**
086: * Returns the cursor position.
087: *
088: * @return The cursor position.
089: */
090: public double getCursor() {
091: return this .cursor;
092: }
093:
094: /**
095: * Sets the cursor position.
096: *
097: * @param cursor the cursor position.
098: */
099: public void setCursor(double cursor) {
100: this .cursor = cursor;
101: }
102:
103: /**
104: * Moves the cursor outwards by the specified number of units.
105: *
106: * @param units the units.
107: * @param edge the edge.
108: */
109: public void moveCursor(double units, RectangleEdge edge) {
110: if (edge == RectangleEdge.TOP) {
111: cursorUp(units);
112: } else if (edge == RectangleEdge.BOTTOM) {
113: cursorDown(units);
114: } else if (edge == RectangleEdge.LEFT) {
115: cursorLeft(units);
116: } else if (edge == RectangleEdge.RIGHT) {
117: cursorRight(units);
118: }
119: }
120:
121: /**
122: * Moves the cursor up by the specified number of Java 2D units.
123: *
124: * @param units the units.
125: */
126: public void cursorUp(double units) {
127: this .cursor = this .cursor - units;
128: }
129:
130: /**
131: * Moves the cursor down by the specified number of Java 2D units.
132: *
133: * @param units the units.
134: */
135: public void cursorDown(double units) {
136: this .cursor = this .cursor + units;
137: }
138:
139: /**
140: * Moves the cursor left by the specified number of Java 2D units.
141: *
142: * @param units the units.
143: */
144: public void cursorLeft(double units) {
145: this .cursor = this .cursor - units;
146: }
147:
148: /**
149: * Moves the cursor right by the specified number of Java 2D units.
150: *
151: * @param units the units.
152: */
153: public void cursorRight(double units) {
154: this .cursor = this .cursor + units;
155: }
156:
157: /**
158: * Returns the list of ticks.
159: *
160: * @return The list of ticks.
161: */
162: public List getTicks() {
163: return this .ticks;
164: }
165:
166: /**
167: * Sets the list of ticks.
168: *
169: * @param ticks the ticks.
170: */
171: public void setTicks(List ticks) {
172: this .ticks = ticks;
173: }
174:
175: /**
176: * Returns the maximum width/height.
177: *
178: * @return The maximum width/height.
179: */
180: public double getMax() {
181: return this .max;
182: }
183:
184: /**
185: * Sets the maximum width/height.
186: *
187: * @param max the maximum width/height.
188: */
189: public void setMax(double max) {
190: this.max = max;
191: }
192: }
|