rt/emul/compact/src/main/java/java/beans/VetoableChangeListenerProxy.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Tue, 26 Feb 2013 16:54:16 +0100
changeset 772 d382dacfd73f
parent 601 emul/compact/src/main/java/java/beans/VetoableChangeListenerProxy.java@5198affdb915
permissions -rw-r--r--
Moving modules around so the runtime is under one master pom and can be built without building other modules that are in the repository
     1 /*
     2  * Copyright (c) 2000, 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 
    26 package java.beans;
    27 
    28 import java.util.EventListenerProxy;
    29 
    30 /**
    31  * A class which extends the {@code EventListenerProxy}
    32  * specifically for adding a {@code VetoableChangeListener}
    33  * with a "constrained" property.
    34  * Instances of this class can be added
    35  * as {@code VetoableChangeListener}s to a bean
    36  * which supports firing vetoable change events.
    37  * <p>
    38  * If the object has a {@code getVetoableChangeListeners} method
    39  * then the array returned could be a mixture of {@code VetoableChangeListener}
    40  * and {@code VetoableChangeListenerProxy} objects.
    41  *
    42  * @see java.util.EventListenerProxy
    43  * @see VetoableChangeSupport#getVetoableChangeListeners
    44  * @since 1.4
    45  */
    46 public class VetoableChangeListenerProxy
    47         extends EventListenerProxy<VetoableChangeListener>
    48         implements VetoableChangeListener {
    49 
    50     private final String propertyName;
    51 
    52     /**
    53      * Constructor which binds the {@code VetoableChangeListener}
    54      * to a specific property.
    55      *
    56      * @param propertyName  the name of the property to listen on
    57      * @param listener      the listener object
    58      */
    59     public VetoableChangeListenerProxy(String propertyName, VetoableChangeListener listener) {
    60         super(listener);
    61         this.propertyName = propertyName;
    62     }
    63 
    64     /**
    65     * Forwards the property change event to the listener delegate.
    66     *
    67     * @param event  the property change event
    68     *
    69     * @exception PropertyVetoException if the recipient wishes the property
    70     *                                  change to be rolled back
    71     */
    72     public void vetoableChange(PropertyChangeEvent event) throws PropertyVetoException{
    73         getListener().vetoableChange(event);
    74     }
    75 
    76     /**
    77      * Returns the name of the named property associated with the listener.
    78      *
    79      * @return the name of the named property associated with the listener
    80      */
    81     public String getPropertyName() {
    82         return this.propertyName;
    83     }
    84 }