Home | History | Annotate | Download | only in beans
      1 /*
      2  * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
      3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
      4  *
      5  * This code is free software; you can redistribute it and/or modify it
      6  * under the terms of the GNU General Public License version 2 only, as
      7  * published by the Free Software Foundation.  Oracle designates this
      8  * particular file as subject to the "Classpath" exception as provided
      9  * by Oracle in the LICENSE file that accompanied this code.
     10  *
     11  * This code is distributed in the hope that it will be useful, but WITHOUT
     12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     14  * version 2 for more details (a copy is included in the LICENSE file that
     15  * accompanied this code).
     16  *
     17  * You should have received a copy of the GNU General Public License version
     18  * 2 along with this work; if not, write to the Free Software Foundation,
     19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
     20  *
     21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
     22  * or visit www.oracle.com if you need additional information or have any
     23  * questions.
     24  */
     25 package java.beans;
     26 
     27 /**
     28  * An "IndexedPropertyChange" event gets delivered whenever a component that
     29  * conforms to the JavaBeans™ specification (a "bean") changes a bound
     30  * indexed property. This class is an extension of <code>PropertyChangeEvent</code>
     31  * but contains the index of the property that has changed.
     32  * <P>
     33  * Null values may be provided for the old and the new values if their
     34  * true values are not known.
     35  * <P>
     36  * An event source may send a null object as the name to indicate that an
     37  * arbitrary set of if its properties have changed.  In this case the
     38  * old and new values should also be null.
     39  *
     40  * @since 1.5
     41  * @author Mark Davidson
     42  */
     43 public class IndexedPropertyChangeEvent extends PropertyChangeEvent {
     44     private static final long serialVersionUID = -320227448495806870L;
     45 
     46     private int index;
     47 
     48     /**
     49      * Constructs a new <code>IndexedPropertyChangeEvent</code> object.
     50      *
     51      * @param source  The bean that fired the event.
     52      * @param propertyName  The programmatic name of the property that
     53      *             was changed.
     54      * @param oldValue      The old value of the property.
     55      * @param newValue      The new value of the property.
     56      * @param index index of the property element that was changed.
     57      */
     58     public IndexedPropertyChangeEvent(Object source, String propertyName,
     59                                       Object oldValue, Object newValue,
     60                                       int index) {
     61         super (source, propertyName, oldValue, newValue);
     62         this.index = index;
     63     }
     64 
     65     /**
     66      * Gets the index of the property that was changed.
     67      *
     68      * @return The index specifying the property element that was
     69      *         changed.
     70      */
     71     public int getIndex() {
     72         return index;
     73     }
     74 
     75     void appendTo(StringBuilder sb) {
     76         sb.append("; index=").append(getIndex());
     77     }
     78 }
     79