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}
  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} 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 }