Frames | No Frames |
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: * TickUnit.java 29: * ------------- 30: * (C) Copyright 2001-2005, by Object Refinery Limited. 31: * 32: * Original Author: David Gilbert (for Object Refinery Limited); 33: * Contributor(s): -; 34: * 35: * $Id: TickUnit.java,v 1.3.2.2 2005/10/25 20:37:34 mungady Exp $ 36: * 37: * Changes (from 19-Dec-2001) 38: * -------------------------- 39: * 19-Dec-2001 : Added standard header (DG); 40: * 01-May-2002 : Changed the unit size from Number to double (DG); 41: * 26-Sep-2002 : Fixed errors reported by Checkstyle (DG); 42: * 08-Nov-2002 : Moved to new package com.jrefinery.chart.axis (DG); 43: * 26-Mar-2003 : Implemented Serializable (DG); 44: * 05-Sep-2005 : Implemented hashCode(), thanks to Thomas Morgner (DG); 45: * 46: */ 47: 48: package org.jfree.chart.axis; 49: 50: import java.io.Serializable; 51: 52: /** 53: * Base class representing a tick unit. This determines the spacing of the 54: * tick marks on an axis. 55: * <P> 56: * This class (and any subclasses) should be immutable, the reason being that 57: * ORDERED collections of tick units are maintained and if one instance can be 58: * changed, it may destroy the order of the collection that it belongs to. 59: * In addition, if the implementations are immutable, they can belong to 60: * multiple collections. 61: * 62: * @see ValueAxis 63: */ 64: public abstract class TickUnit implements Comparable, Serializable { 65: 66: /** For serialization. */ 67: private static final long serialVersionUID = 510179855057013974L; 68: 69: /** The size of the tick unit. */ 70: private double size; 71: 72: /** 73: * Constructs a new tick unit. 74: * 75: * @param size the tick unit size. 76: */ 77: public TickUnit(double size) { 78: this.size = size; 79: } 80: 81: /** 82: * Returns the size of the tick unit. 83: * 84: * @return The size of the tick unit. 85: */ 86: public double getSize() { 87: return this.size; 88: } 89: 90: /** 91: * Converts the supplied value to a string. 92: * <P> 93: * Subclasses may implement special formatting by overriding this method. 94: * 95: * @param value the data value. 96: * 97: * @return Value as string. 98: */ 99: public String valueToString(double value) { 100: return String.valueOf(value); 101: } 102: 103: /** 104: * Compares this tick unit to an arbitrary object. 105: * 106: * @param object the object to compare against. 107: * 108: * @return <code>1</code> if the size of the other object is less than this, 109: * <code>0</code> if both have the same size and <code>-1</code> this 110: * size is less than the others. 111: */ 112: public int compareTo(Object object) { 113: 114: if (object instanceof TickUnit) { 115: TickUnit other = (TickUnit) object; 116: if (this.size > other.getSize()) { 117: return 1; 118: } 119: else if (this.size < other.getSize()) { 120: return -1; 121: } 122: else { 123: return 0; 124: } 125: } 126: else { 127: return -1; 128: } 129: 130: } 131: 132: /** 133: * Tests this unit for equality with another object. 134: * 135: * @param obj the object. 136: * 137: * @return <code>true</code> or <code>false</code>. 138: */ 139: public boolean equals(Object obj) { 140: 141: if (obj == null) { 142: return false; 143: } 144: if (obj == this) { 145: return true; 146: } 147: if (obj instanceof TickUnit) { 148: TickUnit tu = (TickUnit) obj; 149: return this.size == tu.size; 150: } 151: return false; 152: 153: } 154: 155: /** 156: * Returns a hash code for this instance. 157: * 158: * @return A hash code. 159: */ 160: public int hashCode() { 161: final long temp = size != +0.0d ? Double.doubleToLongBits(size) : 0L; 162: return (int) (temp ^ (temp >>> 32)); 163: } 164: 165: }