Source for org.jfree.chart.axis.AxisState

   1: /* ===========================================================
   2:  * JFreeChart : a free chart library for the Java(tm) platform
   3:  * ===========================================================
   4:  *
   5:  * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
   6:  *
   7:  * Project Info:  http://www.jfree.org/jfreechart/index.html
   8:  *
   9:  * This library is free software; you can redistribute it and/or modify it 
  10:  * under the terms of the GNU Lesser General Public License as published by 
  11:  * the Free Software Foundation; either version 2.1 of the License, or 
  12:  * (at your option) any later version.
  13:  *
  14:  * This library is distributed in the hope that it will be useful, but 
  15:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
  16:  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
  17:  * License for more details.
  18:  *
  19:  * You should have received a copy of the GNU Lesser General Public
  20:  * License along with this library; if not, write to the Free Software
  21:  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
  22:  * USA.  
  23:  *
  24:  * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
  25:  * in the United States and other countries.]
  26:  *
  27:  * --------------
  28:  * AxisState.java
  29:  * --------------
  30:  * (C) Copyright 2003, 2004, by Object Refinery Limited and Contributors.
  31:  *
  32:  * Original Author:  David Gilbert (for Object Refinery Limited);
  33:  * Contributor(s):   -;
  34:  *
  35:  * $Id: AxisState.java,v 1.2.2.1 2005/10/25 20:37:34 mungady Exp $
  36:  *
  37:  * Changes
  38:  * -------
  39:  * 03-Nov-2003 : Added standard header (DG);
  40:  * 07-Nov-2003 : Added 'max' attribute (DG);
  41:  *
  42:  */
  43: 
  44: package org.jfree.chart.axis;
  45: 
  46: import java.util.List;
  47: 
  48: import org.jfree.ui.RectangleEdge;
  49: 
  50: /**
  51:  * Instances of this class are used to carry state information for an axis 
  52:  * during the drawing process.  By retaining this information in a separate 
  53:  * object, it is possible for multiple threads to draw the same axis to 
  54:  * different output targets (each drawing will maintain separate state 
  55:  * information).
  56:  */
  57: public class AxisState {
  58: 
  59:     /** The cursor position. */
  60:     private double cursor;
  61:     
  62:     /** The axis ticks. */
  63:     private List ticks;
  64:     
  65:     /** The maximum width/height. */
  66:     private double max;
  67:     
  68:     /**
  69:      * Creates a new axis state.
  70:      */
  71:     public AxisState() {
  72:         this(0.0);
  73:     }
  74:     
  75:     /**
  76:      * Creates a new axis state.
  77:      * 
  78:      * @param cursor  the cursor.
  79:      */
  80:     public AxisState(double cursor) {
  81:         this.cursor = cursor;
  82:         this.ticks = new java.util.ArrayList();
  83:     }
  84:     
  85:     /**
  86:      * Returns the cursor position.
  87:      * 
  88:      * @return The cursor position.
  89:      */
  90:     public double getCursor() {
  91:         return this.cursor;
  92:     }
  93: 
  94:     /**
  95:      * Sets the cursor position.
  96:      * 
  97:      * @param cursor  the cursor position.
  98:      */
  99:     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:         }
 113:         else if (edge == RectangleEdge.BOTTOM) {
 114:             cursorDown(units);   
 115:         }
 116:         else if (edge == RectangleEdge.LEFT) {
 117:             cursorLeft(units);   
 118:         }
 119:         else if (edge == RectangleEdge.RIGHT) {
 120:             cursorRight(units);   
 121:         }
 122:     }
 123:     
 124:     /**
 125:      * Moves the cursor up by the specified number of Java 2D units.
 126:      * 
 127:      * @param units  the units.
 128:      */
 129:     public void cursorUp(double units) {
 130:         this.cursor = this.cursor - units;
 131:     }
 132:     
 133:     /**
 134:      * Moves the cursor down by the specified number of Java 2D units.
 135:      * 
 136:      * @param units  the units.
 137:      */
 138:     public void cursorDown(double units) {
 139:         this.cursor = this.cursor + units;
 140:     }
 141:     
 142:     /**
 143:      * Moves the cursor left by the specified number of Java 2D units.
 144:      * 
 145:      * @param units  the units.
 146:      */
 147:     public void cursorLeft(double units) {
 148:         this.cursor = this.cursor - units;
 149:     }
 150:     
 151:     /**
 152:      * Moves the cursor right by the specified number of Java 2D units.
 153:      * 
 154:      * @param units  the units.
 155:      */
 156:     public void cursorRight(double units) {
 157:         this.cursor = this.cursor + units;
 158:     }
 159:     
 160:     /**
 161:      * Returns the list of ticks.
 162:      * 
 163:      * @return The list of ticks.
 164:      */
 165:     public List getTicks() {
 166:         return this.ticks;
 167:     }
 168:     
 169:     /**
 170:      * Sets the list of ticks.
 171:      * 
 172:      * @param ticks  the ticks.
 173:      */
 174:     public void setTicks(List ticks) {
 175:         this.ticks = ticks;
 176:     }
 177:     
 178:     /**
 179:      * Returns the maximum width/height.
 180:      * 
 181:      * @return The maximum width/height.
 182:      */
 183:     public double getMax() {
 184:         return this.max;
 185:     }
 186:     
 187:     /**
 188:      * Sets the maximum width/height.
 189:      * 
 190:      * @param max the maximum width/height.
 191:      */
 192:     public void setMax(double max) {
 193:         this.max = max;
 194:     }
 195: }