private void doFirePropertyChange(PropertyChangeEvent eventJ)
        {
            Object oldValue = eventJ.getOldValue();
            Object newValue = eventJ.getNewValue();

            if (oldValue != null && newValue != null && oldValue.equals(newValue))
            {
                return;
            }

            // Collect up the global listeners
            PropertyChangeListener[] gListeners;
            lock (this) {
                gListeners = globalListeners.toArray(new PropertyChangeListener[0]);
            }

            // Fire the events for global listeners
            for (int i = 0; i < gListeners.Length; i++)
            {
                gListeners[i].propertyChange(eventJ);
            }

            // Fire the events for the property specific listeners if any
            if (eventJ.getPropertyName() != null)
            {
                PropertyChangeSupport namedListener = children
                                                      .get(eventJ.getPropertyName());
                if (namedListener != null)
                {
                    namedListener.firePropertyChange(eventJ);
                }
            }
        }
        public void firePropertyChange(String propertyName, Object oldValue,
                                       Object newValue)
        {
            PropertyChangeEvent eventJ = createPropertyChangeEvent(propertyName,
                                                                   oldValue, newValue);

            doFirePropertyChange(eventJ);
        }
 public void firePropertyChange(PropertyChangeEvent eventJ)
 {
     doFirePropertyChange(eventJ);
 }
        public void propertyChange(PropertyChangeEvent eventJ)
        {
            PropertyChangeListener listener = (PropertyChangeListener)getListener();

            listener.propertyChange(eventJ);
        }