001: /*******************************************************************************
002: * Copyright (c) 2000, 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.jface.util;
011:
012: import java.util.EventObject;
013: import org.eclipse.core.runtime.Assert;
014:
015: /**
016: * An event object describing a change to a named property.
017: * <p>
018: * This concrete class was designed to be instantiated, but may
019: * also be subclassed if required.
020: * </p>
021: * <p>
022: * The JFace frameworks contain classes that report property
023: * change events for internal state changes that may be of interest
024: * to external parties. A special listener interface
025: * (<code>IPropertyChangeListener</code>) is defined for this purpose,
026: * and a typical class allow listeners to be registered via
027: * an <code>addPropertyChangeListener</code> method.
028: * </p>
029: *
030: * @see IPropertyChangeListener
031: */
032: public class PropertyChangeEvent extends EventObject {
033:
034: /**
035: * Generated serial version UID for this class.
036: * @since 3.1
037: */
038: private static final long serialVersionUID = 3256726173533811256L;
039:
040: /**
041: * The name of the changed property.
042: */
043: private String propertyName;
044:
045: /**
046: * The old value of the changed property, or <code>null</code> if
047: * not known or not relevant.
048: */
049: private Object oldValue;
050:
051: /**
052: * The new value of the changed property, or <code>null</code> if
053: * not known or not relevant.
054: */
055: private Object newValue;
056:
057: /**
058: * Creates a new property change event.
059: *
060: * @param source the object whose property has changed
061: * @param property the property that has changed (must not be <code>null</code>)
062: * @param oldValue the old value of the property, or <code>null</code> if none
063: * @param newValue the new value of the property, or <code>null</code> if none
064: */
065: public PropertyChangeEvent(Object source, String property,
066: Object oldValue, Object newValue) {
067: super (source);
068: Assert.isNotNull(property);
069: this .propertyName = property;
070: this .oldValue = oldValue;
071: this .newValue = newValue;
072: }
073:
074: /**
075: * Returns the new value of the property.
076: *
077: * @return the new value, or <code>null</code> if not known
078: * or not relevant (for instance if the property was removed).
079: */
080: public Object getNewValue() {
081: return newValue;
082: }
083:
084: /**
085: * Returns the old value of the property.
086: *
087: * @return the old value, or <code>null</code> if not known
088: * or not relevant (for instance if the property was just
089: * added and there was no old value).
090: */
091: public Object getOldValue() {
092: return oldValue;
093: }
094:
095: /**
096: * Returns the name of the property that changed.
097: * <p>
098: * Warning: there is no guarantee that the property name returned
099: * is a constant string. Callers must compare property names using
100: * equals, not ==.
101: * </p>
102: *
103: * @return the name of the property that changed
104: */
105: public String getProperty() {
106: return propertyName;
107: }
108: }
|