001 /* ===========================================================
002 * JFreeChart : a free chart library for the Java(tm) platform
003 * ===========================================================
004 *
005 * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors.
006 *
007 * Project Info: http://www.jfree.org/jfreechart/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 * LegendItemCollection.java
029 * -------------------------
030 * (C) Copyright 2002-2007, by Object Refinery Limited.
031 *
032 * Original Author: David Gilbert (for Object Refinery Limited);
033 * Contributor(s): -;
034 *
035 * Changes
036 * -------
037 * 07-Feb-2002 : Version 1 (DG);
038 * 24-Sep-2002 : Added get(int) and getItemCount() methods (DG);
039 * 02-Oct-2002 : Fixed errors reported by Checkstyle (DG);
040 * 18-Apr-2005 : Added equals() method and implemented Cloneable and
041 * Serializable (DG);
042 *
043 */
044
045 package org.jfree.chart;
046
047 import java.io.Serializable;
048 import java.util.Iterator;
049 import java.util.List;
050
051 /**
052 * A collection of legend items.
053 */
054 public class LegendItemCollection implements Cloneable, Serializable {
055
056 /** For serialization. */
057 private static final long serialVersionUID = 1365215565589815953L;
058
059 /** Storage for the legend items. */
060 private List items;
061
062 /**
063 * Constructs a new legend item collection, initially empty.
064 */
065 public LegendItemCollection() {
066 this.items = new java.util.ArrayList();
067 }
068
069 /**
070 * Adds a legend item to the collection.
071 *
072 * @param item the item to add.
073 */
074 public void add(LegendItem item) {
075 this.items.add(item);
076 }
077
078 /**
079 * Adds the legend items from another collection to this collection.
080 *
081 * @param collection the other collection.
082 */
083 public void addAll(LegendItemCollection collection) {
084 this.items.addAll(collection.items);
085 }
086
087 /**
088 * Returns a legend item from the collection.
089 *
090 * @param index the legend item index (zero-based).
091 *
092 * @return The legend item.
093 */
094 public LegendItem get(int index) {
095 return (LegendItem) this.items.get(index);
096 }
097
098 /**
099 * Returns the number of legend items in the collection.
100 *
101 * @return The item count.
102 */
103 public int getItemCount() {
104 return this.items.size();
105 }
106
107 /**
108 * Returns an iterator that provides access to all the legend items.
109 *
110 * @return An iterator.
111 */
112 public Iterator iterator() {
113 return this.items.iterator();
114 }
115
116 /**
117 * Tests this collection for equality with an arbitrary object.
118 *
119 * @param obj the object (<code>null</code> permitted).
120 *
121 * @return A boolean.
122 */
123 public boolean equals(Object obj) {
124 if (obj == this) {
125 return true;
126 }
127 if (!(obj instanceof LegendItemCollection)) {
128 return false;
129 }
130 LegendItemCollection that = (LegendItemCollection) obj;
131 if (!this.items.equals(that.items)) {
132 return false;
133 }
134 return true;
135 }
136
137 /**
138 * Returns a clone of the collection.
139 *
140 * @return A clone.
141 *
142 * @throws CloneNotSupportedException if an item in the collection is not
143 * cloneable.
144 */
145 public Object clone() throws CloneNotSupportedException {
146 return super.clone();
147 }
148
149 }