001: /*
002: * @(#)PropertyChangeEvent.java 1.38 06/10/10
003: *
004: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: *
026: */
027:
028: package java.beans;
029:
030: /**
031: * A "PropertyChange" event gets delivered whenever a bean changes a "bound"
032: * or "constrained" property. A PropertyChangeEvent object is sent as an
033: * argument to the PropertyChangeListener and VetoableChangeListener methods.
034: * <P>
035: * Normally PropertyChangeEvents are accompanied by the name and the old
036: * and new value of the changed property. If the new value is a primitive
037: * type (such as int or boolean) it must be wrapped as the
038: * corresponding java.lang.* Object type (such as Integer or Boolean).
039: * <P>
040: * Null values may be provided for the old and the new values if their
041: * true values are not known.
042: * <P>
043: * An event source may send a null object as the name to indicate that an
044: * arbitrary set of if its properties have changed. In this case the
045: * old and new values should also be null.
046: */
047:
048: public class PropertyChangeEvent extends java.util.EventObject {
049: /**
050: * Constructs a new <code>PropertyChangeEvent</code>.
051: *
052: * @param source The bean that fired the event.
053: * @param propertyName The programmatic name of the property
054: * that was changed.
055: * @param oldValue The old value of the property.
056: * @param newValue The new value of the property.
057: */
058: public PropertyChangeEvent(Object source, String propertyName,
059: Object oldValue, Object newValue) {
060: super (source);
061: this .propertyName = propertyName;
062: this .newValue = newValue;
063: this .oldValue = oldValue;
064: }
065:
066: /**
067: * Gets the programmatic name of the property that was changed.
068: *
069: * @return The programmatic name of the property that was changed.
070: * May be null if multiple properties have changed.
071: */
072: public String getPropertyName() {
073: return propertyName;
074: }
075:
076: /**
077: * Sets the new value for the property, expressed as an Object.
078: *
079: * @return The new value for the property, expressed as an Object.
080: * May be null if multiple properties have changed.
081: */
082: public Object getNewValue() {
083: return newValue;
084: }
085:
086: /**
087: * Gets the old value for the property, expressed as an Object.
088: *
089: * @return The old value for the property, expressed as an Object.
090: * May be null if multiple properties have changed.
091: */
092: public Object getOldValue() {
093: return oldValue;
094: }
095:
096: /**
097: * Sets the propagationId object for the event.
098: *
099: * @param propagationId The propagationId object for the event.
100: */
101: public void setPropagationId(Object propagationId) {
102: this .propagationId = propagationId;
103: }
104:
105: /**
106: * The "propagationId" field is reserved for future use. In Beans 1.0
107: * the sole requirement is that if a listener catches a PropertyChangeEvent
108: * and then fires a PropertyChangeEvent of its own, then it should
109: * make sure that it propagates the propagationId field from its
110: * incoming event to its outgoing event.
111: *
112: * @return the propagationId object associated with a bound/constrained
113: * property update.
114: */
115: public Object getPropagationId() {
116: return propagationId;
117: }
118:
119: /**
120: * name of the property that changed. May be null, if not known.
121: * @serial
122: */
123: private String propertyName;
124: /**
125: * New value for property. May be null if not known.
126: * @serial
127: */
128: private Object newValue;
129: /**
130: * Previous value for property. May be null if not known.
131: * @serial
132: */
133: private Object oldValue;
134: /**
135: * Propagation ID. May be null.
136: * @serial
137: * @see #getPropagationId.
138: */
139: private Object propagationId;
140: }
|