X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Futil%2Fbeans%2FAbstractBean.java;h=7200324dfc9158c60a129f85a7a44054752b4add;hb=c63257e8cc0ba1a5aca9364b22171abe7279d479;hp=53fe69091e41a2d1ebd79945a1f0acf6d253f9a0;hpb=fffb06b094d47ecb7d0282fade99e2d2f109fcbf;p=jSite2.git diff --git a/src/net/pterodactylus/util/beans/AbstractBean.java b/src/net/pterodactylus/util/beans/AbstractBean.java index 53fe690..7200324 100644 --- a/src/net/pterodactylus/util/beans/AbstractBean.java +++ b/src/net/pterodactylus/util/beans/AbstractBean.java @@ -27,9 +27,8 @@ import java.util.List; /** * Abstract bean super class that contains property change listener management. - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - * @version $Id$ */ public abstract class AbstractBean { @@ -38,7 +37,7 @@ public abstract class AbstractBean { /** * Adds a property change listener. - * + * * @param propertyChangeListener * The property change listener to add */ @@ -48,7 +47,7 @@ public abstract class AbstractBean { /** * Removes a property change listener. - * + * * @param propertyChangeListener * The property change listener to remove */ @@ -58,7 +57,7 @@ public abstract class AbstractBean { /** * Notifies all listeners that a property has changed. - * + * * @param property * The name of the property * @param oldValue @@ -68,17 +67,37 @@ public abstract class AbstractBean { */ protected void firePropertyChange(String property, Object oldValue, Object newValue) { PropertyChangeEvent propertyChangeEvent = new PropertyChangeEvent(this, property, oldValue, newValue); - for (PropertyChangeListener propertyChangeListener: propertyChangeListeners) { + for (PropertyChangeListener propertyChangeListener : propertyChangeListeners) { propertyChangeListener.propertyChange(propertyChangeEvent); } } /** + * Fires a property change event if the two values are not equal. + * + * @param propertyName + * The name of the property + * @param oldValue + * The old value of the property + * @param newValue + * The new value of the property + */ + protected void fireIfPropertyChanged(String propertyName, Object oldValue, Object newValue) { + if (!equal(oldValue, newValue)) { + firePropertyChange(propertyName, oldValue, newValue); + } + } + + // + // PRIVATE METHODS + // + + /** * Compares the two objects and returns whether they are equal according to * {@link Object#equals(Object)}. This method takes null * into account as a valid value for an object. - * + * * @param first * The first object * @param second @@ -86,7 +105,7 @@ public abstract class AbstractBean { * @return true if the two objects are equal, * false otherwise */ - protected boolean equal(Object first, Object second) { + private boolean equal(Object first, Object second) { return ((first == null) && (second == null)) || ((first != null) && first.equals(second)) || ((second != null) && second.equals(first)); }