/* MouseWheelEvent.java -- a mouse wheel event
   Copyright (C) 2002, 2005  Free Software Foundation, Inc.

This file is part of GNU Classpath.

GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING.  If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.

Linking this library statically or dynamically with other modules is
making a combined work based on this library.  Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.

As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module.  An independent module is a module which is not derived from
or based on this library.  If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so.  If you do not wish to do so, delete this
exception statement from your version. */


package java.awt.event;

import java.awt.Adjustable;
import java.awt.Component;
import java.awt.Rectangle;
import java.awt.ScrollPane;

import javax.swing.JScrollPane;
import javax.swing.Scrollable;

/**
 * This event is generated for a mouse wheel rotation. The wheel (the middle
 * mouse button on most modern mice) can be rotated towards or away from the
 * user, and is often used for scrolling.
 *
 * <p>Because of the special use for scrolling components, MouseWheelEvents
 * often affect a different component than the one located at the point of
 * the event. If the component under the mouse cursor does not accept wheel
 * events, the event is passed to the first ancestor container which does. This
 * is often a ScrollPane, which knows how to scroll. If an AWT component is
 * built from a native widget that knows how to use mouse wheel events, that
 * component will consume the event.
 *
 * <p>The two most common scroll types are "units" (lines at a time) or
 * "blocks" (pages at a time). The initial setting is taken from the platform,
 * although the user can adjust the setting at any time.
 *
 * @author Eric Blake (ebb9@email.byu.edu)
 * @see MouseWheelListener
 * @see ScrollPane
 * @see ScrollPane#setWheelScrollingEnabled(boolean)
 * @see JScrollPane
 * @see JScrollPane#setWheelScrollingEnabled(boolean)
 * @since 1.4
 * @status updated to 1.4
 */
public class MouseWheelEvent extends MouseEvent
{
  /**
   * Compatible with JDK 1.4+.
   */
  private static final long serialVersionUID = 6459879390515399677L;

  /**
   * Indicates scrolling by units (lines).
   *
   * @see #getScrollType()
   */
  public static final int WHEEL_UNIT_SCROLL = 0;

  /**
   * Indicates scrolling by blocks (pages).
   *
   * @see #getScrollType()
   */
  public static final int WHEEL_BLOCK_SCROLL = 1;

  /**
   * Indicates what scroll type should take place. This should be limited
   * to {@link #WHEEL_UNIT_SCROLL} and {@link #WHEEL_BLOCK_SCROLL}.
   *
   * @serial the scroll type
   */
  private final int scrollType;

  /**
   * Indicates the scroll amount. This is only meaningful if scrollType is
   * WHEEL_UNIT_SCROLL.
   *
   * @serial the number of lines to scroll
   */
  private final int scrollAmount;

  /**
   * Indicates how far the mouse wheel was rotated.
   *
   * @serial the rotation amount
   */
  private final int wheelRotation;

  /**
   * Initializes a new instance of <code>MouseWheelEvent</code> with the
   * specified information. Note that an invalid id leads to unspecified
   * results.
   *
   * @param source the source of the event
   * @param id the event id
   * @param when the timestamp of when the event occurred
   * @param modifiers any modifier bits for this event
   * @param x the X coordinate of the mouse point
   * @param y the Y coordinate of the mouse point
   * @param clickCount the number of mouse clicks for this event
   * @param popupTrigger true if this event triggers a popup menu
   * @param scrollType one of {@link #WHEEL_UNIT_SCROLL},
   *        {@link #WHEEL_BLOCK_SCROLL}
   * @param scrollAmount the number of units to scroll, ignored for block type
   * @param wheelRotation the number of rotation "clicks"
   * @throws IllegalArgumentException if source is null
   * @see MouseEvent#MouseEvent(Component, int, long, int, int, int, int,
   *      boolean) 
   */
  public MouseWheelEvent(Component source, int id, long when, int modifiers,
                         int x, int y, int clickCount, boolean popupTrigger,
                         int scrollType, int scrollAmount, int wheelRotation)
  {
    super(source, id, when, modifiers, x, y, clickCount, popupTrigger);
    this.scrollType = scrollType;
    this.scrollAmount = scrollAmount;
    this.wheelRotation = wheelRotation;
  }

  /**
   * This method returns the scrolling pattern this event requests. Legal
   * values are {@link #WHEEL_UNIT_SCROLL} and {@link #WHEEL_BLOCK_SCROLL}.
   *
   * @return the scroll type
   * @see Adjustable#getUnitIncrement()
   * @see Adjustable#getBlockIncrement()
   * @see Scrollable#getScrollableUnitIncrement(Rectangle, int, int)
   * @see Scrollable#getScrollableBlockIncrement(Rectangle, int, int)
   */
  public int getScrollType()
  {
    return scrollType;
  }

  /**
   * Returns the number of units to scroll in response to this event. This
   * only makes sense when the scroll type is WHEEL_UNIT_SCROLL.
   *
   * @return the number of scroll units, if defined
   * @see #getScrollType()
   */
  public int getScrollAmount()
  {
    return scrollAmount;
  }

  /**
   * Gets the number of "clicks" the wheel was rotated. Negative values move
   * up (away) from the user, positive values move down (towards) the user.
   *
   * @return the number of rotation clicks
   */
  public int getWheelRotation()
  {
    return wheelRotation;
  }

  /**
   * This is a convenience method which aids in a common listener for scrolling
   * a scrollpane (although this is already built into ScrollPane and
   * JScrollPane). This method only makes sense when getScrollType() returns
   * WHEEL_UNIT_SCROLL.
   *
   * <p>This accounts for direction of scroll and amount of wheel movement, as
   * interpreted by the platform settings.
   *
   * @return the number of units to scroll
   * @see #getScrollType()
   * @see #getScrollAmount()
   * @see MouseWheelListener
   * @see Adjustable
   * @see Adjustable#getUnitIncrement()
   * @see Scrollable
   * @see Scrollable#getScrollableUnitIncrement(Rectangle, int, int)
   * @see ScrollPane
   * @see ScrollPane#setWheelScrollingEnabled(boolean)
   * @see JScrollPane
   * @see JScrollPane#setWheelScrollingEnabled(boolean)
   */
  public int getUnitsToScroll()
  {
    return wheelRotation * scrollAmount;
  }

  /**
   * Returns a string identifying this event. For mouse wheel events, this
   * is <code>super.paramString() + ",scrollType=WHEEL_" +
   * (getScrollType() == WHEEL_UNIT_SCROLL ? "UNIT" : "BLOCK")
   * + "_SCROLL,scrollAmount=" + getScrollAmount() + ",wheelRotation="
   * + getWheelRotation()</code>.
   *
   * @return a string identifying this event
   */
  public String paramString()
  {
    return super.paramString() + ",scrollType="
      + (scrollType == WHEEL_UNIT_SCROLL ? "WHEEL_UNIT_SCROLL"
         : scrollType == WHEEL_BLOCK_SCROLL ? "WHEEL_BLOCK_SCROLL"
         : "unknown scroll type")
      + ",scrollAmount=" + scrollAmount + ",wheelRotation=" + wheelRotation;
  }
} // class MouseWheelEvent
