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