Source for org.jfree.chart.plot.Zoomable

   1: /* ===========================================================
   2:  * JFreeChart : a free chart library for the Java(tm) platform
   3:  * ===========================================================
   4:  *
   5:  * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors.
   6:  *
   7:  * Project Info:  http://www.jfree.org/jfreechart/index.html
   8:  *
   9:  * This library is free software; you can redistribute it and/or modify it 
  10:  * under the terms of the GNU Lesser General Public License as published by 
  11:  * the Free Software Foundation; either version 2.1 of the License, or 
  12:  * (at your option) any later version.
  13:  *
  14:  * This library is distributed in the hope that it will be useful, but 
  15:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
  16:  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
  17:  * License for more details.
  18:  *
  19:  * You should have received a copy of the GNU Lesser General Public
  20:  * License along with this library; if not, write to the Free Software
  21:  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
  22:  * USA.  
  23:  *
  24:  * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
  25:  * in the United States and other countries.]
  26:  *
  27:  * -------------
  28:  * Zoomable.java
  29:  * -------------
  30:  *
  31:  * (C) Copyright 2004-2007, by Object Refinery Limited and Contributors.
  32:  *
  33:  * Original Author:  David Gilbert (for Object Refinery Limited);
  34:  * Contributor(s):   Rune Fauske;
  35:  *
  36:  * Changes
  37:  * -------
  38:  * 12-Nov-2004 : Version 1 (DG);
  39:  * 26-Jan-2004 : Added getOrientation() method (DG);
  40:  * 04-Sep-2006 : Added credit for Rune Fauske, see patch 1050659 (DG);
  41:  * 21-Sep-2007 : Added new zooming methods with 'useAnchor' flag.  This breaks
  42:  *               the API, but is the cleanest way I can think of to fix a 
  43:  *               long-standing bug (DG);
  44:  *
  45:  */
  46: 
  47: package org.jfree.chart.plot;
  48: 
  49: import java.awt.geom.Point2D;
  50: 
  51: import org.jfree.chart.ChartPanel;
  52: 
  53: /**
  54:  * A plot that is zoomable must implement this interface to provide a
  55:  * mechanism for the {@link ChartPanel} to control the zooming.
  56:  */
  57: public interface Zoomable {
  58: 
  59:     /**
  60:      * Returns <code>true</code> if the plot's domain is zoomable, and 
  61:      * <code>false</code> otherwise.
  62:      * 
  63:      * @return A boolean.
  64:      * 
  65:      * @see #isRangeZoomable()
  66:      */
  67:     public boolean isDomainZoomable();
  68:     
  69:     /**
  70:      * Returns <code>true</code> if the plot's range is zoomable, and 
  71:      * <code>false</code> otherwise.
  72:      * 
  73:      * @return A boolean.
  74:      * 
  75:      * @see #isDomainZoomable()
  76:      */
  77:     public boolean isRangeZoomable();
  78: 
  79:     /**
  80:      * Returns the orientation of the plot.
  81:      * 
  82:      * @return The orientation.
  83:      */
  84:     public PlotOrientation getOrientation();
  85:     
  86:     /**
  87:      * Multiplies the range on the domain axis/axes by the specified factor.
  88:      * The <code>source</code> point can be used in some cases to identify a 
  89:      * subplot, or to determine the center of zooming (refer to the 
  90:      * documentation of the implementing class for details).
  91:      *
  92:      * @param factor  the zoom factor.
  93:      * @param state  the plot state.
  94:      * @param source  the source point (in Java2D coordinates).
  95:      * 
  96:      * @see #zoomRangeAxes(double, PlotRenderingInfo, Point2D)
  97:      */
  98:     public void zoomDomainAxes(double factor, PlotRenderingInfo state, 
  99:                                Point2D source);
 100: 
 101:     /**
 102:      * Multiplies the range on the domain axis/axes by the specified factor.
 103:      * The <code>source</code> point can be used in some cases to identify a 
 104:      * subplot, or to determine the center of zooming (refer to the 
 105:      * documentation of the implementing class for details).
 106:      *
 107:      * @param factor  the zoom factor.
 108:      * @param state  the plot state.
 109:      * @param source  the source point (in Java2D coordinates).
 110:      * @param useAnchor  use source point as zoom anchor?
 111:      * 
 112:      * @see #zoomRangeAxes(double, PlotRenderingInfo, Point2D, boolean)
 113:      * 
 114:      * @since 1.0.7
 115:      */
 116:     public void zoomDomainAxes(double factor, PlotRenderingInfo state, 
 117:                                Point2D source, boolean useAnchor);
 118: 
 119:     /**
 120:      * Zooms in on the domain axes.  The <code>source</code> point can be used 
 121:      * in some cases to identify a subplot for zooming.
 122:      * 
 123:      * @param lowerPercent  the new lower bound.
 124:      * @param upperPercent  the new upper bound.
 125:      * @param state  the plot state.
 126:      * @param source  the source point (in Java2D coordinates).
 127:      * 
 128:      * @see #zoomRangeAxes(double, double, PlotRenderingInfo, Point2D)
 129:      */
 130:     public void zoomDomainAxes(double lowerPercent, double upperPercent, 
 131:                                PlotRenderingInfo state, Point2D source);
 132: 
 133:     /**
 134:      * Multiplies the range on the range axis/axes by the specified factor.
 135:      * The <code>source</code> point can be used in some cases to identify a 
 136:      * subplot, or to determine the center of zooming (refer to the 
 137:      * documentation of the implementing class for details).
 138:      *
 139:      * @param factor  the zoom factor.
 140:      * @param state  the plot state.
 141:      * @param source  the source point (in Java2D coordinates).
 142:      * 
 143:      * @see #zoomDomainAxes(double, PlotRenderingInfo, Point2D)
 144:      */
 145:     public void zoomRangeAxes(double factor, PlotRenderingInfo state, 
 146:                               Point2D source);
 147: 
 148:     /**
 149:      * Multiplies the range on the range axis/axes by the specified factor.
 150:      * The <code>source</code> point can be used in some cases to identify a 
 151:      * subplot, or to determine the center of zooming (refer to the 
 152:      * documentation of the implementing class for details).
 153:      *
 154:      * @param factor  the zoom factor.
 155:      * @param state  the plot state.
 156:      * @param source  the source point (in Java2D coordinates).
 157:      * @param useAnchor  use source point as zoom anchor?
 158:      * 
 159:      * @see #zoomDomainAxes(double, PlotRenderingInfo, Point2D)
 160:      * 
 161:      * @since 1.0.7
 162:      */
 163:     public void zoomRangeAxes(double factor, PlotRenderingInfo state, 
 164:                               Point2D source, boolean useAnchor);
 165:     
 166:     /**
 167:      * Zooms in on the range axes.  The <code>source</code> point can be used 
 168:      * in some cases to identify a subplot for zooming.
 169:      * 
 170:      * @param lowerPercent  the new lower bound.
 171:      * @param upperPercent  the new upper bound.
 172:      * @param state  the plot state.
 173:      * @param source  the source point (in Java2D coordinates).
 174:      * 
 175:      * @see #zoomDomainAxes(double, double, PlotRenderingInfo, Point2D)
 176:      */
 177:     public void zoomRangeAxes(double lowerPercent, double upperPercent, 
 178:                               PlotRenderingInfo state, Point2D source);
 179: 
 180: }