001 /* ======================================================================== 002 * JCommon : a free general purpose class 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/jcommon/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 * TextAnchor.java 029 * --------------- 030 * (C) Copyright 2003-2005, by Object Refinery Limited. 031 * 032 * Original Author: David Gilbert (for Object Refinery Limited); 033 * Contributor(s): -; 034 * 035 * $Id: TextAnchor.java,v 1.5 2005/10/18 13:18:34 mungady Exp $ 036 * 037 * Changes: 038 * -------- 039 * 10-Jun-2003 : Version 1 (DG); 040 * 11-Jan-2005 : Removed deprecated code (DG); 041 * 042 */ 043 044 package org.jfree.ui; 045 046 import java.io.ObjectStreamException; 047 import java.io.Serializable; 048 049 /** 050 * Used to indicate the position of an anchor point for a text string. This is 051 * frequently used to align a string to a fixed point in some coordinate space. 052 * 053 * @author David Gilbert 054 */ 055 public final class TextAnchor implements Serializable { 056 057 /** For serialization. */ 058 private static final long serialVersionUID = 8219158940496719660L; 059 060 /** Top/left. */ 061 public static final TextAnchor TOP_LEFT 062 = new TextAnchor("TextAnchor.TOP_LEFT"); 063 064 /** Top/center. */ 065 public static final TextAnchor TOP_CENTER 066 = new TextAnchor("TextAnchor.TOP_CENTER"); 067 068 /** Top/right. */ 069 public static final TextAnchor TOP_RIGHT 070 = new TextAnchor("TextAnchor.TOP_RIGHT"); 071 072 /** Half-ascent/left. */ 073 public static final TextAnchor HALF_ASCENT_LEFT 074 = new TextAnchor("TextAnchor.HALF_ASCENT_LEFT"); 075 076 /** Half-ascent/center. */ 077 public static final TextAnchor HALF_ASCENT_CENTER 078 = new TextAnchor("TextAnchor.HALF_ASCENT_CENTER"); 079 080 /** Half-ascent/right. */ 081 public static final TextAnchor HALF_ASCENT_RIGHT 082 = new TextAnchor("TextAnchor.HALF_ASCENT_RIGHT"); 083 084 /** Middle/left. */ 085 public static final TextAnchor CENTER_LEFT 086 = new TextAnchor("TextAnchor.CENTER_LEFT"); 087 088 /** Middle/center. */ 089 public static final TextAnchor CENTER = new TextAnchor("TextAnchor.CENTER"); 090 091 /** Middle/right. */ 092 public static final TextAnchor CENTER_RIGHT 093 = new TextAnchor("TextAnchor.CENTER_RIGHT"); 094 095 /** Baseline/left. */ 096 public static final TextAnchor BASELINE_LEFT 097 = new TextAnchor("TextAnchor.BASELINE_LEFT"); 098 099 /** Baseline/center. */ 100 public static final TextAnchor BASELINE_CENTER 101 = new TextAnchor("TextAnchor.BASELINE_CENTER"); 102 103 /** Baseline/right. */ 104 public static final TextAnchor BASELINE_RIGHT 105 = new TextAnchor("TextAnchor.BASELINE_RIGHT"); 106 107 /** Bottom/left. */ 108 public static final TextAnchor BOTTOM_LEFT 109 = new TextAnchor("TextAnchor.BOTTOM_LEFT"); 110 111 /** Bottom/center. */ 112 public static final TextAnchor BOTTOM_CENTER 113 = new TextAnchor("TextAnchor.BOTTOM_CENTER"); 114 115 /** Bottom/right. */ 116 public static final TextAnchor BOTTOM_RIGHT 117 = new TextAnchor("TextAnchor.BOTTOM_RIGHT"); 118 119 /** The name. */ 120 private String name; 121 122 /** 123 * Private constructor. 124 * 125 * @param name the name. 126 */ 127 private TextAnchor(final String name) { 128 this.name = name; 129 } 130 131 /** 132 * Returns a string representing the object. 133 * 134 * @return The string. 135 */ 136 public String toString() { 137 return this.name; 138 } 139 140 /** 141 * Returns <code>true</code> if this object is equal to the specified 142 * object, and <code>false</code> otherwise. 143 * 144 * @param o the other object. 145 * 146 * @return A boolean. 147 */ 148 public boolean equals(final Object o) { 149 150 if (this == o) { 151 return true; 152 } 153 if (!(o instanceof TextAnchor)) { 154 return false; 155 } 156 157 final TextAnchor order = (TextAnchor) o; 158 if (!this.name.equals(order.name)) { 159 return false; 160 } 161 162 return true; 163 } 164 165 /** 166 * Returns a hash code value for the object. 167 * 168 * @return The hashcode 169 */ 170 public int hashCode() { 171 return this.name.hashCode(); 172 } 173 174 /** 175 * Ensures that serialization returns the unique instances. 176 * 177 * @return The object. 178 * 179 * @throws ObjectStreamException if there is a problem. 180 */ 181 private Object readResolve() throws ObjectStreamException { 182 TextAnchor result = null; 183 if (this.equals(TextAnchor.TOP_LEFT)) { 184 result = TextAnchor.TOP_LEFT; 185 } 186 else if (this.equals(TextAnchor.TOP_CENTER)) { 187 result = TextAnchor.TOP_CENTER; 188 } 189 else if (this.equals(TextAnchor.TOP_RIGHT)) { 190 result = TextAnchor.TOP_RIGHT; 191 } 192 else if (this.equals(TextAnchor.BOTTOM_LEFT)) { 193 result = TextAnchor.BOTTOM_LEFT; 194 } 195 else if (this.equals(TextAnchor.BOTTOM_CENTER)) { 196 result = TextAnchor.BOTTOM_CENTER; 197 } 198 else if (this.equals(TextAnchor.BOTTOM_RIGHT)) { 199 result = TextAnchor.BOTTOM_RIGHT; 200 } 201 else if (this.equals(TextAnchor.BASELINE_LEFT)) { 202 result = TextAnchor.BASELINE_LEFT; 203 } 204 else if (this.equals(TextAnchor.BASELINE_CENTER)) { 205 result = TextAnchor.BASELINE_CENTER; 206 } 207 else if (this.equals(TextAnchor.BASELINE_RIGHT)) { 208 result = TextAnchor.BASELINE_RIGHT; 209 } 210 else if (this.equals(TextAnchor.CENTER_LEFT)) { 211 result = TextAnchor.CENTER_LEFT; 212 } 213 else if (this.equals(TextAnchor.CENTER)) { 214 result = TextAnchor.CENTER; 215 } 216 else if (this.equals(TextAnchor.CENTER_RIGHT)) { 217 result = TextAnchor.CENTER_RIGHT; 218 } 219 else if (this.equals(TextAnchor.HALF_ASCENT_LEFT)) { 220 result = TextAnchor.HALF_ASCENT_LEFT; 221 } 222 else if (this.equals(TextAnchor.HALF_ASCENT_CENTER)) { 223 result = TextAnchor.HALF_ASCENT_CENTER; 224 } 225 else if (this.equals(TextAnchor.HALF_ASCENT_RIGHT)) { 226 result = TextAnchor.HALF_ASCENT_RIGHT; 227 } 228 return result; 229 } 230 231 }