Frames | No Frames |
1: /* ======================================================================== 2: * JCommon : a free general purpose class 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/jcommon/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: * PaintList.java 29: * -------------- 30: * (C) Copyright 2003, 2004, by Object Refinery Limited. 31: * 32: * Original Author: David Gilbert (for Object Refinery Limited); 33: * Contributor(s): -; 34: * 35: * $Id: PaintList.java,v 1.5 2005/10/18 13:24:19 mungady Exp $ 36: * 37: * Changes 38: * ------- 39: * 13-Aug-2003 : Version 1 (DG); 40: * 27-Jun-2005 : Fixed equals() method to handle GradientPaint (DG); 41: * 42: */ 43: 44: package org.jfree.util; 45: 46: import java.awt.Paint; 47: import java.io.IOException; 48: import java.io.ObjectInputStream; 49: import java.io.ObjectOutputStream; 50: 51: import org.jfree.io.SerialUtilities; 52: 53: /** 54: * A table of {@link Paint} objects. 55: * 56: * @author David Gilbert 57: */ 58: public class PaintList extends AbstractObjectList { 59: 60: /** 61: * Creates a new list. 62: */ 63: public PaintList() { 64: super(); 65: } 66: 67: /** 68: * Returns a {@link Paint} object from the list. 69: * 70: * @param index the index (zero-based). 71: * 72: * @return The object. 73: */ 74: public Paint getPaint(final int index) { 75: return (Paint) get(index); 76: } 77: 78: /** 79: * Sets the {@link Paint} for an item in the list. The list is expanded if necessary. 80: * 81: * @param index the index (zero-based). 82: * @param paint the {@link Paint}. 83: */ 84: public void setPaint(final int index, final Paint paint) { 85: set(index, paint); 86: } 87: 88: /** 89: * Tests the list for equality with another object (typically also a list). 90: * 91: * @param obj the other object (<code>null</code> permitted). 92: * 93: * @return A boolean. 94: */ 95: public boolean equals(final Object obj) { 96: if (obj == null) { 97: return false; 98: } 99: if (obj == this) { 100: return true; 101: } 102: if (obj instanceof PaintList) { 103: PaintList that = (PaintList) obj; 104: int listSize = size(); 105: for (int i = 0; i < listSize; i++) { 106: if (!PaintUtilities.equal(getPaint(i), that.getPaint(i))) { 107: return false; 108: } 109: } 110: } 111: return true; 112: } 113: 114: /** 115: * Returns a hash code value for the object. 116: * 117: * @return the hashcode 118: */ 119: public int hashCode() { 120: return super.hashCode(); 121: } 122: 123: /** 124: * Provides serialization support. 125: * 126: * @param stream the output stream. 127: * 128: * @throws IOException if there is an I/O error. 129: */ 130: private void writeObject(final ObjectOutputStream stream) throws IOException { 131: 132: stream.defaultWriteObject(); 133: final int count = size(); 134: stream.writeInt(count); 135: for (int i = 0; i < count; i++) { 136: final Paint paint = getPaint(i); 137: if (paint != null) { 138: stream.writeInt(i); 139: SerialUtilities.writePaint(paint, stream); 140: } 141: else { 142: stream.writeInt(-1); 143: } 144: } 145: 146: } 147: 148: /** 149: * Provides serialization support. 150: * 151: * @param stream the input stream. 152: * 153: * @throws IOException if there is an I/O error. 154: * @throws ClassNotFoundException if there is a classpath problem. 155: */ 156: private void readObject(final ObjectInputStream stream) throws IOException, ClassNotFoundException { 157: 158: stream.defaultReadObject(); 159: final int count = stream.readInt(); 160: for (int i = 0; i < count; i++) { 161: final int index = stream.readInt(); 162: if (index != -1) { 163: setPaint(index, SerialUtilities.readPaint(stream)); 164: } 165: } 166: 167: } 168: 169: }