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
-~----------~----~----~----~------~----~------~--~---

Reply via email to