    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    }