001 /* ======================================================
002 * Orson : a free chart beans library based on JFreeChart
003 * ======================================================
004 *
005 * (C) Copyright 2007, by Object Refinery Limited.
006 *
007 * Project Info: not-yet-released
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
029 package org.jfree.beans;
030
031 import java.io.ObjectStreamException;
032 import java.io.Serializable;
033
034 /**
035 * A token representing the legend position.
036 */
037 public final class LegendPosition implements Serializable {
038
039 /** TOP. */
040 public static final LegendPosition TOP = new LegendPosition(
041 "LegendPosition.TOP");
042
043 /** BOTTOM. */
044 public static final LegendPosition BOTTOM = new LegendPosition(
045 "LegendPosition.BOTTOM");
046
047 /** LEFT. */
048 public static final LegendPosition LEFT = new LegendPosition(
049 "LegendPosition.LEFT");
050
051 /** RIGHT. */
052 public static final LegendPosition RIGHT = new LegendPosition(
053 "LegendPosition.RIGHT");
054
055 /** NONE. */
056 public static final LegendPosition NONE = new LegendPosition(
057 "LegendPosition.NONE");
058
059
060 /** The name. */
061 private String name;
062
063 /**
064 * Private constructor.
065 *
066 * @param name the name.
067 */
068 private LegendPosition(String name) {
069 this.name = name;
070 }
071
072 /**
073 * Returns a string representing the object.
074 *
075 * @return the string (never <code>null</code>).
076 */
077 public String toString() {
078 return this.name;
079 }
080
081
082 /**
083 * Compares this object for equality with an other object.
084 * Implementation note: This simply compares the factor instead
085 * of the name.
086 *
087 * @param obj the other object
088 *
089 * @return true or false
090 */
091 public boolean equals(Object obj) {
092 if (this == obj) {
093 return true;
094 }
095 if (!(obj instanceof LegendPosition)) {
096 return false;
097 }
098 LegendPosition that = (LegendPosition) obj;
099 return this.name.equals(that.name);
100 }
101
102 /**
103 * Returns a hash code value for the object.
104 *
105 * @return the hashcode
106 */
107 public int hashCode() {
108 return this.name.hashCode();
109 }
110
111 /**
112 * Ensures that serialization returns the unique instances.
113 *
114 * @return the object.
115 *
116 * @throws ObjectStreamException if there is a problem.
117 */
118 private Object readResolve() throws ObjectStreamException {
119 if (this.equals(LegendPosition.TOP)) {
120 return LegendPosition.TOP;
121 }
122 else if (this.equals(LegendPosition.BOTTOM)) {
123 return LegendPosition.BOTTOM;
124 }
125 else if (this.equals(LegendPosition.LEFT)) {
126 return LegendPosition.LEFT;
127 }
128 else if (this.equals(LegendPosition.RIGHT)) {
129 return LegendPosition.RIGHT;
130 }
131 else if (this.equals(LegendPosition.NONE)) {
132 return LegendPosition.NONE;
133 }
134 return null;
135 }
136
137 }