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