001    /* ===========================================================
002     * JFreeChart : a free chart library for the Java(tm) platform
003     * ===========================================================
004     *
005     * (C) Copyright 2000-2005, 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     * Zoomable.java
029     * -------------
030     *
031     * (C) Copyright 2004, by Object Refinery Limited and Contributors.
032     *
033     * Original Author:  David Gilbert (for Object Refinery Limited);
034     * Contributor(s):   -;
035     *
036     * Changes
037     * -------
038     * 12-Nov-2004 : Version 1 (DG);
039     * 26-Jan-2004 : Added getOrientation() method (DG);
040     *
041     */
042    
043    package org.jfree.chart.plot;
044    
045    import java.awt.geom.Point2D;
046    
047    import org.jfree.chart.ChartPanel;
048    
049    /**
050     * A plot that is zoomable must implement this interface to provide a
051     * mechanism for the {@link ChartPanel} to control the zooming.
052     */
053    public interface Zoomable {
054    
055        /**
056         * Returns <code>true</code> if the plot's domain is zoomable, and 
057         * <code>false</code> otherwise.
058         * 
059         * @return A boolean.
060         */
061        public boolean isDomainZoomable();
062        
063        /**
064         * Returns <code>true</code> if the plot's range is zoomable, and 
065         * <code>false</code> otherwise.
066         * 
067         * @return A boolean.
068         */
069        public boolean isRangeZoomable();
070    
071        /**
072         * Returns the orientation of the plot.
073         * 
074         * @return The orientation.
075         */
076        public PlotOrientation getOrientation();
077        
078        /**
079         * Multiplies the range on the domain axis/axes by the specified factor.
080         *
081         * @param factor  the zoom factor.
082         * @param state  the plot state.
083         * @param source  the source point (in Java2D coordinates).
084         */
085        public void zoomDomainAxes(double factor, PlotRenderingInfo state, 
086                                   Point2D source);
087    
088        /**
089         * Zooms in on the domain axes.
090         * 
091         * @param lowerPercent  the new lower bound.
092         * @param upperPercent  the new upper bound.
093         * @param state  the plot state.
094         * @param source  the source point (in Java2D coordinates).
095         */
096        public void zoomDomainAxes(double lowerPercent, double upperPercent, 
097                                   PlotRenderingInfo state, Point2D source);
098    
099        /**
100         * Multiplies the range on the range axis/axes by the specified factor.
101         *
102         * @param factor  the zoom factor.
103         * @param state  the plot state.
104         * @param source  the source point (in Java2D coordinates).
105         */
106        public void zoomRangeAxes(double factor, PlotRenderingInfo state, 
107                                  Point2D source);
108    
109        /**
110         * Zooms in on the range axes.
111         * 
112         * @param lowerPercent  the new lower bound.
113         * @param upperPercent  the new upper bound.
114         * @param state  the plot state.
115         * @param source  the source point (in Java2D coordinates).
116         */
117        public void zoomRangeAxes(double lowerPercent, double upperPercent, 
118                                  PlotRenderingInfo state, Point2D source);
119    
120    }