Revision: 1271
Author:   heuermh
Date:     Tue Dec 30 03:27:52 2014 UTC
Log: Issue 262 ; adding getPropertyChangeListeners and getPropertyChangeListeners(String) methods
https://code.google.com/p/piccolo2d/source/detail?r=1271

Modified:
 /piccolo2d.java/trunk/core/src/main/java/org/piccolo2d/PNode.java
 /piccolo2d.java/trunk/core/src/test/java/org/piccolo2d/PNodeTest.java

=======================================
--- /piccolo2d.java/trunk/core/src/main/java/org/piccolo2d/PNode.java Tue Dec 3 22:32:41 2013 UTC +++ /piccolo2d.java/trunk/core/src/main/java/org/piccolo2d/PNode.java Tue Dec 30 03:27:52 2014 UTC
@@ -1198,7 +1198,7 @@
* registered for all properties. See the fields in PNode and subclasses
      * that start with PROPERTY_ to find out which properties exist.
      *
-     * @param listener The PropertyChangeListener to be added
+     * @param listener the PropertyChangeListener to be added
      */
public void addPropertyChangeListener(final PropertyChangeListener listener) {
         if (changeSupport == null) {
@@ -1214,7 +1214,7 @@
      * PROPERTY_ to find out which properties are supported.
      *
      * @param propertyName The name of the property to listen on.
-     * @param listener The PropertyChangeListener to be added
+     * @param listener the PropertyChangeListener to be added
      */
public void addPropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
         if (listener == null) {
@@ -1230,7 +1230,7 @@
* Remove a PropertyChangeListener from the listener list. This removes a
      * PropertyChangeListener that was registered for all properties.
      *
-     * @param listener The PropertyChangeListener to be removed
+     * @param listener the PropertyChangeListener to be removed
      */
public void removePropertyChangeListener(final PropertyChangeListener listener) {
         if (changeSupport != null) {
@@ -1241,8 +1241,8 @@
     /**
      * Remove a PropertyChangeListener for a specific property.
      *
-     * @param propertyName The name of the property that was listened on.
-     * @param listener The PropertyChangeListener to be removed
+     * @param propertyName the name of the property that was listened on.
+     * @param listener the PropertyChangeListener to be removed
      */
public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
         if (listener == null) {
@@ -1253,6 +1253,58 @@
         }
         changeSupport.removePropertyChangeListener(propertyName, listener);
     }
+
+    /**
+ * Return an array of all the property change listeners added to this node.
+     * <p>
+     * If some listeners have been added with a named property, then
+     * the returned array will be a mixture of PropertyChangeListeners
+     * and <code>PropertyChangeListenerProxy</code>s. If the calling
+     * method is interested in distinguishing the listeners then it must
+ * test each element to see if it is a <code>PropertyChangeListenerProxy</code>,
+     * perform the cast, and examine the parameter.
+     *
+     * <pre>
+ * PropertyChangeListener[] listeners = bean.getPropertyChangeListeners();
+     * for (int i = 0; i &lt; listeners.length; i++) {
+     *   if (listeners[i] instanceof PropertyChangeListenerProxy) {
+ * PropertyChangeListenerProxy proxy = (PropertyChangeListenerProxy) listeners[i];
+     *     if (proxy.getPropertyName().equals("foo")) {
+     *       // proxy is a PropertyChangeListener which was associated
+     *       // with the property named "foo"
+     *     }
+     *   }
+     * }
+     *</pre>
+     *
+     * @since 3.0.1
+     * @return all of the <code>PropertyChangeListener</code>s added or an
+     *   empty array if no listeners have been added
+     */
+    public PropertyChangeListener[] getPropertyChangeListeners() {
+        if (changeSupport == null) {
+            return new PropertyChangeListener[0];
+        }
+        return changeSupport.getPropertyChangeListeners();
+    }
+
+    /**
+     * Return an array of all the property change listeners which have been
+     * associated with the named property.
+     *
+     * @since 3.0.1
+     * @param propertyName the name of the property being listened to
+ * @return all of the <code>PropertyChangeListener</code>s associated with
+     *   the named property.  If no such listeners have been added,
+     *   or if <code>propertyName</code> is null, an empty array is
+     *   returned.
+     */
+ public PropertyChangeListener[] getPropertyChangeListeners(final String propertyName) {
+        if (changeSupport == null) {
+            return new PropertyChangeListener[0];
+        }
+        return changeSupport.getPropertyChangeListeners(propertyName);
+    }

     /**
* Return the propertyChangeParentMask that determines which property change
=======================================
--- /piccolo2d.java/trunk/core/src/test/java/org/piccolo2d/PNodeTest.java Tue Dec 3 22:32:41 2013 UTC +++ /piccolo2d.java/trunk/core/src/test/java/org/piccolo2d/PNodeTest.java Tue Dec 30 03:27:52 2014 UTC
@@ -37,6 +37,7 @@
 import java.awt.geom.Rectangle2D;
 import java.awt.image.BufferedImage;
 import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -1577,4 +1578,38 @@
         final PPickPath path = canvas.getCamera().pick(5, 5, 5);
         assertSame(node1, path.getPickedNode());
     }
+
+    public void testGetPropertyChangeListenersEmpty() {
+ PropertyChangeListener[] listeners = node.getPropertyChangeListeners();
+        assertNotNull(listeners);
+        assertEquals(0, listeners.length);
+    }
+
+    public void testGetPropertyChangeListeners() {
+        node.addPropertyChangeListener(mockListener);
+ PropertyChangeListener[] listeners = node.getPropertyChangeListeners();
+        assertNotNull(listeners);
+        assertEquals(1, listeners.length);
+        assertEquals(mockListener, listeners[0]);
+    }
+
+    public void testGetPropertyChangeListenersStringNull() {
+ PropertyChangeListener[] listeners = node.getPropertyChangeListeners(null);
+        assertNotNull(listeners);
+        assertEquals(0, listeners.length);
+    }
+
+    public void testGetPropertyChangeListenersStringEmpty() {
+ PropertyChangeListener[] listeners = node.getPropertyChangeListeners("foo");
+        assertNotNull(listeners);
+        assertEquals(0, listeners.length);
+    }
+
+    public void testGetPropertyChangeListenersString() {
+        node.addPropertyChangeListener("foo", mockListener);
+ PropertyChangeListener[] listeners = node.getPropertyChangeListeners("foo");
+        assertNotNull(listeners);
+        assertEquals(1, listeners.length);
+        assertEquals(mockListener, listeners[0]);
+    }
 }

--
--
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en
--- You received this message because you are subscribed to the Google Groups "Piccolo2D Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to piccolo2d-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to