KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfree > util > PaintList


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 JavaDoc;
47 import java.io.IOException JavaDoc;
48 import java.io.ObjectInputStream JavaDoc;
49 import java.io.ObjectOutputStream JavaDoc;
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 JavaDoc getPaint(final int index) {
75         return (Paint JavaDoc) 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 JavaDoc 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 JavaDoc 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 JavaDoc stream) throws IOException JavaDoc {
131
132         stream.defaultWriteObject();
133         final int count = size();
134         stream.writeInt(count);
135         for (int i = 0; i < count; i++) {
136             final Paint JavaDoc 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 JavaDoc stream) throws IOException JavaDoc, ClassNotFoundException JavaDoc {
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 }
170
171
Popular Tags