Revision: 1163
Author: heuermh
Date: Thu Feb 23 14:00:48 2012
Log: Issue 236 ; adding zoom event handler that responds to mouse
wheel events
http://code.google.com/p/piccolo2d/source/detail?r=1163
Added:
/piccolo2d.java/trunk/core/src/main/java/org/piccolo2d/event/PMouseWheelZoomEventHandler.java
/piccolo2d.java/trunk/core/src/test/java/org/piccolo2d/event/PMouseWheelZoomEventHandlerTest.java
/piccolo2d.java/trunk/examples/src/main/java/org/piccolo2d/examples/MouseWheelZoomExample.java
Modified:
/piccolo2d.java/trunk/examples/src/main/java/org/piccolo2d/examples/ExampleRunner.java
===
--- /dev/null
+++
/piccolo2d.java/trunk/core/src/main/java/org/piccolo2d/event/PMouseWheelZoomEventHandler.java
Thu Feb 23 14:00:48 2012
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2008-2012, Piccolo2D project, http://piccolo2d.org
+ * Copyright (c) 1998-2008, University of Maryland
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
this list of conditions
+ * and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright
notice, this list of conditions
+ * and the following disclaimer in the documentation and/or other
materials provided with the
+ * distribution.
+ *
+ * None of the name of the University of Maryland, the name of the
Piccolo2D project, or the names of its
+ * contributors may be used to endorse or promote products derived from
this software without specific
+ * prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS
IS AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.piccolo2d.event;
+
+import java.awt.Rectangle;
+import java.awt.geom.Point2D;
+
+import org.piccolo2d.PCamera;
+import org.piccolo2d.PCanvas;
+
+/**
+ * Zoom event handler that scales the camera view transform in response to
mouse wheel events.
+ *
+ * @since 2.0
+ */
+public final class PMouseWheelZoomEventHandler extends
PBasicInputEventHandler {
+/** Default scale factor, code0.1d/code. */
+static final double DEFAULT_SCALE_FACTOR = 0.1d;
+
+/** Scale factor. */
+private double scaleFactor = DEFAULT_SCALE_FACTOR;
+
+/** Zoom mode. */
+private ZoomMode zoomMode = ZoomMode.ZOOM_ABOUT_CANVAS_CENTER;
+
+
+/**
+ * Create a new mouse wheel zoom event handler.
+ */
+public PMouseWheelZoomEventHandler() {
+super();
+PInputEventFilter eventFilter = new PInputEventFilter();
+eventFilter.rejectAllEventTypes();
+eventFilter.setAcceptsMouseWheelRotated(true);
+setEventFilter(eventFilter);
+}
+
+
+/**
+ * Return the scale factor for this mouse wheel zoom event handler.
Defaults to codeDEFAULT_SCALE_FACTOR/code.
+ *
+ * @see #DEFAULT_SCALE_FACTOR
+ * @return the scale factor for this mouse wheel zoom event handler
+ */
+public double getScaleFactor() {
+return scaleFactor;
+}
+
+/**
+ * Set the scale factor for this mouse wheel zoom event handler to
codescaleFactor/code.
+ *
+ * @param scaleFactor scale factor for this mouse wheel zoom event
handler
+ */
+public void setScaleFactor(final double scaleFactor) {
+this.scaleFactor = scaleFactor;
+}
+
+/**
+ * Switch to zoom about mouse mode.
+ *
+ * @see ZoomMode#ZOOM_ABOUT_MOUSE
+ */
+public void zoomAboutMouse() {
+zoomMode = ZoomMode.ZOOM_ABOUT_MOUSE;
+}
+
+/**
+ * Switch to zoom about canvas center mode.
+ *
+ * @see ZoomMode#ZOOM_ABOUT_CANVAS_CENTER
+ */
+public void zoomAboutCanvasCenter() {
+zoomMode = ZoomMode.ZOOM_ABOUT_CANVAS_CENTER;
+}
+
+/**
+ * Switch to zoom about view center mode.
+ *
+ * @see ZoomMode#ZOOM_ABOUT_VIEW_CENTER
+ */
+public void zoomAboutViewCenter() {
+zoomMode = ZoomMode.ZOOM_ABOUT_VIEW_CENTER;
+}
+
+/**
+ * Return the zoom mode for this mouse wheel zoom event handler.
Defaults to
+ * codeZoomMode.ZOOM_ABOUT_CANVAS_CENTER/code.
+