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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to