001    /* ===========================================================
002     * JFreeChart : a free chart library for the Java(tm) platform
003     * ===========================================================
004     *
005     * (C) Copyright 2000-2008, 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     * AxisCollection.java
029     * -------------------
030     * (C) Copyright 2003-2008, by Object Refinery Limited.
031     *
032     * Original Author:  David Gilbert (for Object Refinery Limited);
033     * Contributor(s):   -;
034     *
035     * Changes
036     * -------
037     * 03-Nov-2003 : Added standard header (DG);
038     *
039     */
040    
041    package org.jfree.chart.axis;
042    
043    import java.util.List;
044    
045    import org.jfree.ui.RectangleEdge;
046    
047    /**
048     * A collection of axes that have been assigned to the TOP, BOTTOM, LEFT or
049     * RIGHT of a chart.  This class is used internally by JFreeChart, you won't
050     * normally need to use it yourself.
051     */
052    public class AxisCollection {
053    
054        /** The axes that need to be drawn at the top of the plot area. */
055        private List axesAtTop;
056    
057        /** The axes that need to be drawn at the bottom of the plot area. */
058        private List axesAtBottom;
059    
060        /** The axes that need to be drawn at the left of the plot area. */
061        private List axesAtLeft;
062    
063        /** The axes that need to be drawn at the right of the plot area. */
064        private List axesAtRight;
065    
066        /**
067         * Creates a new empty collection.
068         */
069        public AxisCollection() {
070            this.axesAtTop = new java.util.ArrayList();
071            this.axesAtBottom = new java.util.ArrayList();
072            this.axesAtLeft = new java.util.ArrayList();
073            this.axesAtRight = new java.util.ArrayList();
074        }
075    
076        /**
077         * Returns a list of the axes (if any) that need to be drawn at the top of
078         * the plot area.
079         *
080         * @return A list of axes.
081         */
082        public List getAxesAtTop() {
083            return this.axesAtTop;
084        }
085    
086       /**
087        * Returns a list of the axes (if any) that need to be drawn at the bottom
088        * of the plot area.
089        *
090        * @return A list of axes.
091        */
092       public List getAxesAtBottom() {
093            return this.axesAtBottom;
094        }
095    
096        /**
097         * Returns a list of the axes (if any) that need to be drawn at the left
098         * of the plot area.
099         *
100         * @return A list of axes.
101         */
102        public List getAxesAtLeft() {
103            return this.axesAtLeft;
104        }
105    
106        /**
107        * Returns a list of the axes (if any) that need to be drawn at the right
108        * of the plot area.
109        *
110        * @return A list of axes.
111        */
112        public List getAxesAtRight() {
113            return this.axesAtRight;
114        }
115    
116        /**
117         * Adds an axis to the collection.
118         *
119         * @param axis  the axis (<code>null</code> not permitted).
120         * @param edge  the edge of the plot that the axis should be drawn on
121         *              (<code>null</code> not permitted).
122         */
123        public void add(Axis axis, RectangleEdge edge) {
124            if (axis == null) {
125                throw new IllegalArgumentException("Null 'axis' argument.");
126            }
127            if (edge == null) {
128                throw new IllegalArgumentException("Null 'edge' argument.");
129            }
130            if (edge == RectangleEdge.TOP) {
131                this.axesAtTop.add(axis);
132            }
133            else if (edge == RectangleEdge.BOTTOM) {
134                this.axesAtBottom.add(axis);
135            }
136            else if (edge == RectangleEdge.LEFT) {
137                this.axesAtLeft.add(axis);
138            }
139            else if (edge == RectangleEdge.RIGHT) {
140                this.axesAtRight.add(axis);
141            }
142        }
143    
144    }