1442 * @see #addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
1443 * @see #getPropertyChangeListeners(java.lang.String)
1444 * @see #removePropertyChangeListener(java.beans.PropertyChangeListener)
1445 */
1446 public void removePropertyChangeListener(String propertyName,
1447 PropertyChangeListener listener) {
1448 if (listener != null) {
1449 synchronized (this) {
1450 if (changeSupport != null) {
1451 changeSupport.removePropertyChangeListener(propertyName,
1452 listener);
1453 }
1454 }
1455 }
1456 }
1457
1458 /**
1459 * Returns an array of all the <code>PropertyChangeListener</code>s
1460 * associated with the named property.
1461 *
1462 * @return all of the <code>PropertyChangeListener</code>s associated with
1463 * the named property or an empty array if no such listeners have
1464 * been added.
1465 *
1466 * @see #addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
1467 * @see #removePropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
1468 * @since 1.4
1469 */
1470 public synchronized PropertyChangeListener[] getPropertyChangeListeners(String propertyName) {
1471 if (changeSupport == null) {
1472 changeSupport = new PropertyChangeSupport(this);
1473 }
1474 return changeSupport.getPropertyChangeListeners(propertyName);
1475 }
1476
1477 /**
1478 * Fires a PropertyChangeEvent in response to a change in a bound property.
1479 * The event will be delivered to all registered PropertyChangeListeners.
1480 * No event will be delivered if oldValue and newValue are the same.
1481 *
1611 * @see #addVetoableChangeListener
1612 * @see #getVetoableChangeListeners
1613 * @see #removeVetoableChangeListener(java.beans.VetoableChangeListener)
1614 */
1615 public void removeVetoableChangeListener(String propertyName,
1616 VetoableChangeListener listener) {
1617 if (listener != null) {
1618 synchronized (this) {
1619 if (vetoableSupport != null) {
1620 vetoableSupport.removeVetoableChangeListener(propertyName,
1621 listener);
1622 }
1623 }
1624 }
1625 }
1626
1627 /**
1628 * Returns an array of all the <code>VetoableChangeListener</code>s
1629 * associated with the named property.
1630 *
1631 * @return all of the <code>VetoableChangeListener</code>s associated with
1632 * the named property or an empty array if no such listeners have
1633 * been added.
1634 *
1635 * @see #addVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener)
1636 * @see #removeVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener)
1637 * @see #getVetoableChangeListeners
1638 * @since 1.4
1639 */
1640 public synchronized VetoableChangeListener[] getVetoableChangeListeners(String propertyName) {
1641 if (vetoableSupport == null) {
1642 vetoableSupport = new VetoableChangeSupport(this);
1643 }
1644 return vetoableSupport.getVetoableChangeListeners(propertyName);
1645 }
1646
1647 /**
1648 * Fires a PropertyChangeEvent in response to a change in a vetoable
1649 * property. The event will be delivered to all registered
1650 * VetoableChangeListeners. If a VetoableChangeListener throws a
|
1442 * @see #addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
1443 * @see #getPropertyChangeListeners(java.lang.String)
1444 * @see #removePropertyChangeListener(java.beans.PropertyChangeListener)
1445 */
1446 public void removePropertyChangeListener(String propertyName,
1447 PropertyChangeListener listener) {
1448 if (listener != null) {
1449 synchronized (this) {
1450 if (changeSupport != null) {
1451 changeSupport.removePropertyChangeListener(propertyName,
1452 listener);
1453 }
1454 }
1455 }
1456 }
1457
1458 /**
1459 * Returns an array of all the <code>PropertyChangeListener</code>s
1460 * associated with the named property.
1461 *
1462 * @param propertyName the property name
1463 * @return all of the <code>PropertyChangeListener</code>s associated with
1464 * the named property or an empty array if no such listeners have
1465 * been added.
1466 *
1467 * @see #addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
1468 * @see #removePropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
1469 * @since 1.4
1470 */
1471 public synchronized PropertyChangeListener[] getPropertyChangeListeners(String propertyName) {
1472 if (changeSupport == null) {
1473 changeSupport = new PropertyChangeSupport(this);
1474 }
1475 return changeSupport.getPropertyChangeListeners(propertyName);
1476 }
1477
1478 /**
1479 * Fires a PropertyChangeEvent in response to a change in a bound property.
1480 * The event will be delivered to all registered PropertyChangeListeners.
1481 * No event will be delivered if oldValue and newValue are the same.
1482 *
1612 * @see #addVetoableChangeListener
1613 * @see #getVetoableChangeListeners
1614 * @see #removeVetoableChangeListener(java.beans.VetoableChangeListener)
1615 */
1616 public void removeVetoableChangeListener(String propertyName,
1617 VetoableChangeListener listener) {
1618 if (listener != null) {
1619 synchronized (this) {
1620 if (vetoableSupport != null) {
1621 vetoableSupport.removeVetoableChangeListener(propertyName,
1622 listener);
1623 }
1624 }
1625 }
1626 }
1627
1628 /**
1629 * Returns an array of all the <code>VetoableChangeListener</code>s
1630 * associated with the named property.
1631 *
1632 * @param propertyName the property name
1633 * @return all of the <code>VetoableChangeListener</code>s associated with
1634 * the named property or an empty array if no such listeners have
1635 * been added.
1636 *
1637 * @see #addVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener)
1638 * @see #removeVetoableChangeListener(java.lang.String,java.beans.VetoableChangeListener)
1639 * @see #getVetoableChangeListeners
1640 * @since 1.4
1641 */
1642 public synchronized VetoableChangeListener[] getVetoableChangeListeners(String propertyName) {
1643 if (vetoableSupport == null) {
1644 vetoableSupport = new VetoableChangeSupport(this);
1645 }
1646 return vetoableSupport.getVetoableChangeListeners(propertyName);
1647 }
1648
1649 /**
1650 * Fires a PropertyChangeEvent in response to a change in a vetoable
1651 * property. The event will be delivered to all registered
1652 * VetoableChangeListeners. If a VetoableChangeListener throws a
|