All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jdesktop.beansbinding.ObjectProperty Maven / Gradle / Ivy

/*
 * Copyright (C) 2007 Sun Microsystems, Inc. All rights reserved. Use is
 * subject to license terms.
 */

package org.jdesktop.beansbinding;

import static org.jdesktop.beansbinding.PropertyStateEvent.UNREADABLE;

/**
 * An immutable, read-only, {@code Property} implementation whose {@code getValue}
 * method returns the source object that it is given. This class is useful when
 * you want to configure a {@code Binding} to use its source object directly,
 * rather than some property of the source object. For example:
 * 

*


 *    new SomeBindingClass(sourceObject, ObjectProperty.create(), targetObject, targetProperty);
 * 
*

* Explicitly using {@code ObjectProperty} isn't necessary when creating {@code Bindings} * from this package or the {@code SwingBindings} package, as the set of static creation * methods include versions that handle this for you. * * @param the type of source object that this {@code Property} operates on * and therefore the type of value that it represents * * @author Shannon Hickey */ public final class ObjectProperty extends Property { /** * Creates an instance of {@code ObjectProperty}. */ public static ObjectProperty create() { return new ObjectProperty(); } private ObjectProperty() {} /** * Throws {@code UnsupportedOperationException}; {@code ObjectProperty} is never writeable. * * @param source {@inheritDoc} * @return never returns; always throws {@code UnsupportedOperationException}; {@code ObjectProperty} is never writeable * @throws UnsupportedOperationException always; {@code ObjectProperty} is never writeable * @see #isWriteable */ public Class getWriteType(S source) { throw new UnsupportedOperationException("Unwriteable"); } /** * Returns the source object passed to the method. * * @return the value of the {@code source} argument * @see #isReadable */ public S getValue(S source) { return source; } /** * Throws {@code UnsupportedOperationException}; {@code ObjectProperty} is never writeable. * * @param source {@inheritDoc} * @throws UnsupportedOperationException always; {@code ObjectProperty} is never writeable * @see #isWriteable * @see #getWriteType */ public void setValue(S source, S value) { throw new UnsupportedOperationException("Unwriteable"); } /** * Returns {@code true}; {@code ObjectProperty} is always readable. * * @return {@code true}; {@code ObjectPropert} is always readable * @see #isWriteable */ public boolean isReadable(Object source) { return true; } /** * Returns {@code false}; {@code ObjectProperty} is never writeable. * * @return {@code false}; {@code ObjectPropert} is never writeable * @see #isReadable */ public boolean isWriteable(Object source) { return false; } /** * Returns a string representation of the {@code ObjectProperty}. This * method is intended to be used for debugging purposes only, and * the content and format of the returned string may vary between * implementations. The returned string may be empty but may not * be {@code null}. * * @return a string representation of this {@code ObjectProperty} */ public String toString() { return getClass().getName(); } /** * Does nothing; the state of an {@code ObjectProperty} never changes so * listeners aren't useful. */ public void addPropertyStateListener(S source, PropertyStateListener listener) {} /** * Does nothing; the state of an {@code ObjectProperty} never changes so * listeners aren't useful. * * @see #addPropertyStateListener */ public void removePropertyStateListener(S source, PropertyStateListener listener) {} /** * Returns an empty array; the state of an {@code ObjectProperty} never changes * so listeners aren't useful. * * @return an empty array * @see #addPropertyStateListener */ public PropertyStateListener[] getPropertyStateListeners(S source) { return new PropertyStateListener[0]; } }