Revision: 1155
Author:   atdixon
Date:     Sun Nov 13 11:00:58 2011
Log: Issue 227; fixed bounds issue when replacing PCamera on a PCanvas; added relevant tests
http://code.google.com/p/piccolo2d/source/detail?r=1155

Modified:
/piccolo2d.java/branches/release-1.3.1/core/src/main/java/edu/umd/cs/piccolo/PCanvas.java /piccolo2d.java/branches/release-1.3.1/core/src/test/java/edu/umd/cs/piccolo/PCanvasTest.java

=======================================
--- /piccolo2d.java/branches/release-1.3.1/core/src/main/java/edu/umd/cs/piccolo/PCanvas.java Tue Mar 15 15:28:41 2011 +++ /piccolo2d.java/branches/release-1.3.1/core/src/main/java/edu/umd/cs/piccolo/PCanvas.java Sun Nov 13 11:00:58 2011
@@ -28,6 +28,19 @@
  */
 package edu.umd.cs.piccolo;

+import edu.umd.cs.piccolo.event.PInputEventListener;
+import edu.umd.cs.piccolo.event.PPanEventHandler;
+import edu.umd.cs.piccolo.event.PZoomEventHandler;
+import edu.umd.cs.piccolo.util.PBounds;
+import edu.umd.cs.piccolo.util.PDebug;
+import edu.umd.cs.piccolo.util.PPaintContext;
+import edu.umd.cs.piccolo.util.PStack;
+import edu.umd.cs.piccolo.util.PUtil;
+
+import javax.swing.FocusManager;
+import javax.swing.JComponent;
+import javax.swing.RepaintManager;
+import javax.swing.Timer;
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Cursor;
@@ -46,20 +59,6 @@
 import java.awt.event.MouseWheelEvent;
 import java.awt.event.MouseWheelListener;

-import javax.swing.FocusManager;
-import javax.swing.JComponent;
-import javax.swing.RepaintManager;
-import javax.swing.Timer;
-
-import edu.umd.cs.piccolo.event.PInputEventListener;
-import edu.umd.cs.piccolo.event.PPanEventHandler;
-import edu.umd.cs.piccolo.event.PZoomEventHandler;
-import edu.umd.cs.piccolo.util.PBounds;
-import edu.umd.cs.piccolo.util.PDebug;
-import edu.umd.cs.piccolo.util.PPaintContext;
-import edu.umd.cs.piccolo.util.PStack;
-import edu.umd.cs.piccolo.util.PUtil;
-
 /**
* <b>PCanvas</b> is a simple Swing component that can be used to embed Piccolo * into a Java Swing application. Canvases view the Piccolo scene graph through
@@ -286,7 +285,7 @@

         if (camera != null) {
             camera.setComponent(this);
-            camera.setBounds(getBounds());
+            camera.setBounds(0, 0, getWidth(), getHeight());
         }
     }

=======================================
--- /piccolo2d.java/branches/release-1.3.1/core/src/test/java/edu/umd/cs/piccolo/PCanvasTest.java Tue Mar 15 15:28:41 2011 +++ /piccolo2d.java/branches/release-1.3.1/core/src/test/java/edu/umd/cs/piccolo/PCanvasTest.java Sun Nov 13 11:00:58 2011
@@ -28,12 +28,13 @@
  */
 package edu.umd.cs.piccolo;

-import java.awt.Cursor;
-
-import junit.framework.TestCase;
 import edu.umd.cs.piccolo.event.PInputEventListener;
 import edu.umd.cs.piccolo.util.PBounds;
 import edu.umd.cs.piccolo.util.PPaintContext;
+import edu.umd.cs.piccolo.util.PUtil;
+import junit.framework.TestCase;
+
+import java.awt.Cursor;

 /**
  * Unit test for PCanvas.
@@ -127,6 +128,25 @@
         canvas.setBounds(0, 0, 100, 100);
assertEquals(new PBounds(0, 0, 100, 100), canvas.getCamera().getBounds());
     }
+
+    public void testSettingCanvasBoundsNotAtOrigin() {
+        canvas.setBounds(50, 50, 100, 100);
+ assertEquals(new PBounds(0, 0, 100, 100), canvas.getCamera().getBounds()); // camera should remain at (0,0)
+    }
+
+    public void testSettingCameraAffectsCameraBounds() {
+        canvas.setBounds(0, 0, 100, 100);
+        PCamera camera = PUtil.createBasicScenegraph();
+        canvas.setCamera(camera);
+ assertEquals(new PBounds(0, 0, 100, 100), canvas.getCamera().getBounds());
+    }
+
+    public void testSettingCameraOnCanvasNotAtOrigin() {
+        canvas.setBounds(50, 50, 100, 100);
+        PCamera camera = PUtil.createBasicScenegraph();
+        canvas.setCamera(camera);
+ assertEquals(new PBounds(0, 0, 100, 100), canvas.getCamera().getBounds()); // camera should remain at (0,0)
+    }

     public void testAddInputEventListenersIsHonoured() {
         canvas.addInputEventListener(mockListener);

--
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en

Reply via email to