Author: allain.lalonde
Date: Sun Jul 19 07:32:25 2009
New Revision: 518
Modified:
piccolo2d.java/trunk/core/src/main/java/edu/umd/cs/piccolo/PCanvas.java
piccolo2d.java/trunk/core/src/main/java/edu/umd/cs/piccolo/PNode.java
piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/PCanvasTest.java
Log:
Added getInputEventListeners to PCanvas and PNode making them return an
array of PInputEventListener objects. This makes it fall inline with the
other listeners inherited from JComponent and it also makes listener
methods testable.
Modified:
piccolo2d.java/trunk/core/src/main/java/edu/umd/cs/piccolo/PCanvas.java
==============================================================================
--- piccolo2d.java/trunk/core/src/main/java/edu/umd/cs/piccolo/PCanvas.java
(original)
+++ piccolo2d.java/trunk/core/src/main/java/edu/umd/cs/piccolo/PCanvas.java
Sun Jul 19 07:32:25 2009
@@ -688,4 +688,8 @@
public int getInteractingRenderQuality() {
return interactingRenderQuality;
}
+
+ public PInputEventListener[] getInputEventListeners() {
+ return camera.getInputEventListeners();
+ }
}
Modified:
piccolo2d.java/trunk/core/src/main/java/edu/umd/cs/piccolo/PNode.java
==============================================================================
--- piccolo2d.java/trunk/core/src/main/java/edu/umd/cs/piccolo/PNode.java
(original)
+++ piccolo2d.java/trunk/core/src/main/java/edu/umd/cs/piccolo/PNode.java
Sun Jul 19 07:32:25 2009
@@ -59,6 +59,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
+import java.util.EventListener;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
@@ -3194,5 +3195,18 @@
}
return result.toString();
+ }
+
+ public PInputEventListener[] getInputEventListeners() {
+ if (listenerList == null || listenerList.getListenerCount() == 0)
+ return new PInputEventListener[] {};
+
+ EventListener[] listeners =
listenerList.getListeners(PInputEventListener.class);
+
+ PInputEventListener[] result = new
PInputEventListener[listeners.length];
+ for (int i=0; i<listeners.length; i++) {
+ result[i] = (PInputEventListener) listeners[i];
+ }
+ return result;
}
}
Modified:
piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/PCanvasTest.java
==============================================================================
---
piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/PCanvasTest.java
(original)
+++
piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/PCanvasTest.java
Sun Jul 19 07:32:25 2009
@@ -5,109 +5,137 @@
import javax.swing.JPanel;
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;
public class PCanvasTest extends TestCase {
- private PCanvas canvas;
- private int pCanvasFinalizerCount;
-
+ private PCanvas canvas;
+ private int pCanvasFinalizerCount;
+ private MockPInputEventListener mockListener;
+
public void setUp() {
pCanvasFinalizerCount = 0;
- canvas = new PCanvas();
- }
-
- public void testDefaultPanHandlerIsNotNull() {
- assertNotNull(canvas.getPanEventHandler());
- }
-
- public void testGetInteractingReturnsFalseByDefault() {
- assertFalse(canvas.getInteracting());
- }
-
- public void testGetAnimatingReturnsFalseByDefault() {
- assertFalse(canvas.getAnimating());
- }
-
- public void testSetInteractingPersists() {
- canvas.setInteracting(true);
- assertTrue(canvas.getInteracting());
- }
-
- public void testSetInteractingFiresChangeEvent() {
- MockPropertyChangeListener mockListener = new
MockPropertyChangeListener();
-
canvas.addPropertyChangeListener(PCanvas.INTERATING_CHANGED_NOTIFICATION,
mockListener);
- canvas.setInteracting(true);
- assertEquals(1, mockListener.getPropertyChangeCount());
- }
-
- public void testDefaultRenderQualityIsHigh() {
- assertEquals(PPaintContext.HIGH_QUALITY_RENDERING,
canvas.getDefaultRenderQuality());
- }
-
- public void testDefaultAnimatingRenderQualityIsLow() {
- assertEquals(PPaintContext.LOW_QUALITY_RENDERING,
canvas.getAnimatingRenderQuality());
- }
-
- public void testDefaultInteractingRenderQualityIsLow() {
- assertEquals(PPaintContext.LOW_QUALITY_RENDERING,
canvas.getInteractingRenderQuality());
- }
-
- public void testDefaultZoomHandlerIsNotNull() {
- assertNotNull(canvas.getZoomEventHandler());
- }
-
- public void testCanvasLayerIsNotNullByDefault() {
- assertNotNull(canvas.getLayer());
- }
-
- public void testCursorStackWorksAsExpected() {
- Cursor moveCursor=
Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR);
- Cursor handCursor =
Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);
- Cursor crosshairCursor =
Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR);
-
- canvas.pushCursor(moveCursor);
- canvas.pushCursor(handCursor);
- canvas.pushCursor(crosshairCursor);
-
- assertEquals(crosshairCursor, canvas.getCursor());
- canvas.popCursor();
- assertEquals(handCursor, canvas.getCursor());
- canvas.popCursor();
- assertEquals(moveCursor, canvas.getCursor());
- }
-
- public void testPoppingEmptyCursorStackShouldDoNothing() {
- try {
- canvas.popCursor();
- } catch (IndexOutOfBoundsException e) {
- fail("Pop cursor shouldn't fail on an empty stack");
- }
- assertEquals(Cursor.getDefaultCursor(), canvas.getCursor());
- }
-
- public void testSettingCanvasBoundsAffectsCameraBounds() {
- canvas.setBounds(0, 0, 100, 100);
- assertEquals(new PBounds(0, 0, 100, 100),
canvas.getCamera().getBounds());
- }
-
- public void testMemoryLeak() throws InterruptedException {
- JPanel panel = new JPanel();
- for (int i=0; i < 10; i++) {
+ canvas = new PCanvas();
+ mockListener = new MockPInputEventListener();
+ }
+
+ public void testDefaultPanHandlerIsNotNull() {
+ assertNotNull(canvas.getPanEventHandler());
+ }
+
+ public void testGetInteractingReturnsFalseByDefault() {
+ assertFalse(canvas.getInteracting());
+ }
+
+ public void testDefaultNumberOfEventListenersIs2() {
+ PInputEventListener[] listeners = canvas.getInputEventListeners();
+ assertNotNull(listeners);
+ assertEquals(2, listeners.length);
+ }
+
+ public void testGetAnimatingReturnsFalseByDefault() {
+ assertFalse(canvas.getAnimating());
+ }
+
+ public void testSetInteractingPersists() {
+ canvas.setInteracting(true);
+ assertTrue(canvas.getInteracting());
+ }
+
+ public void testSetInteractingFiresChangeEvent() {
+ MockPropertyChangeListener mockListener = new
MockPropertyChangeListener();
+
canvas.addPropertyChangeListener(PCanvas.INTERATING_CHANGED_NOTIFICATION,
mockListener);
+ canvas.setInteracting(true);
+ assertEquals(1, mockListener.getPropertyChangeCount());
+ }
+
+ public void testDefaultRenderQualityIsHigh() {
+ assertEquals(PPaintContext.HIGH_QUALITY_RENDERING,
canvas.getDefaultRenderQuality());
+ }
+
+ public void testDefaultAnimatingRenderQualityIsLow() {
+ assertEquals(PPaintContext.LOW_QUALITY_RENDERING,
canvas.getAnimatingRenderQuality());
+ }
+
+ public void testDefaultInteractingRenderQualityIsLow() {
+ assertEquals(PPaintContext.LOW_QUALITY_RENDERING,
canvas.getInteractingRenderQuality());
+ }
+
+ public void testDefaultZoomHandlerIsNotNull() {
+ assertNotNull(canvas.getZoomEventHandler());
+ }
+
+ public void testCanvasLayerIsNotNullByDefault() {
+ assertNotNull(canvas.getLayer());
+ }
+
+ public void testCursorStackWorksAsExpected() {
+ Cursor moveCursor = Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR);
+ Cursor handCursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);
+ Cursor crosshairCursor =
Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR);
+
+ canvas.pushCursor(moveCursor);
+ canvas.pushCursor(handCursor);
+ canvas.pushCursor(crosshairCursor);
+
+ assertEquals(crosshairCursor, canvas.getCursor());
+ canvas.popCursor();
+ assertEquals(handCursor, canvas.getCursor());
+ canvas.popCursor();
+ assertEquals(moveCursor, canvas.getCursor());
+ }
+
+ public void testPoppingEmptyCursorStackShouldDoNothing() {
+ try {
+ canvas.popCursor();
+ }
+ catch (IndexOutOfBoundsException e) {
+ fail("Pop cursor shouldn't fail on an empty stack");
+ }
+ assertEquals(Cursor.getDefaultCursor(), canvas.getCursor());
+ }
+
+ public void testSettingCanvasBoundsAffectsCameraBounds() {
+ canvas.setBounds(0, 0, 100, 100);
+ assertEquals(new PBounds(0, 0, 100, 100),
canvas.getCamera().getBounds());
+ }
+
+ public void testAddInputEventListenersIsHonoured() {
+ canvas.addInputEventListener(mockListener);
+ PInputEventListener[] listeners = canvas.getInputEventListeners();
+ assertNotNull(listeners);
+ assertEquals(3, listeners.length); // 3 since pan and zoom are
attached by default
+ }
+
+ public void testRemoveInputEventListenersIsHonoured() {
+ canvas.addInputEventListener(mockListener);
+ canvas.removeInputEventListener(mockListener);
+ PInputEventListener[] listeners = canvas.getInputEventListeners();
+ assertNotNull(listeners);
+ assertEquals(2, listeners.length); // 3 since pan and zoom are
attached by default
+ }
+
+
+ public void testMemoryLeak() throws InterruptedException {
+ JPanel panel = new JPanel();
+ for (int i = 0; i < 10; i++) {
PCanvas canvas = new PCanvas() {
public void finalize() {
- pCanvasFinalizerCount ++;
+ pCanvasFinalizerCount++;
}
};
panel.add(canvas);
- panel.remove(canvas);
+ panel.remove(canvas);
canvas = null;
}
System.gc();
System.runFinalization();
-
- // Not sure why I need -1 here, but I do. If I create 10000 it'll
always be 1 less
- //assertEquals(10-1, pCanvasFinalizerCount);
+ PCanvas.CURRENT_ZCANVAS = null;
+
+ // Not sure why I need -1 here, but I do. If I create 10000 it'll
always
+ // be 1 less
+ //assertEquals(10-1, pCanvasFinalizerCount);
}
-
+
}
--~--~---------~--~----~------------~-------~--~----~
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en
-~----------~----~----~----~------~----~------~--~---