/** * Add a property change listener. * * @param l the listener to add */ public synchronized void addPropertyChangeListener(PropertyChangeListener l) { if (support == null) synchronized (this) { // new test under synchronized block if (support == null) support = new PropertyChangeSupport(element); } support.addPropertyChangeListener(l); }
/** * Remove a property change listener. * * @param l the listener to remove */ public void removePropertyChangeListener(PropertyChangeListener l) { if (support != null) support.removePropertyChangeListener(l); }
/** * Fires property change event. * * @param name property name * @param o old value * @param n new value */ protected final void firePropertyChange(String name, Object o, Object n) { if (support != null) support.firePropertyChange(name, o, n); }