blob: ac6ccfb11afc6f41334e805a8c250d2332c90f9b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jface.databinding;
/**
* A standard description type representing a property of an object. Description
* objects can be passed to <code>DataBindingContext.bind()</code> or
* <code>DataBindingContext.createUpdatable()</code>. They are passed to
* <code>IUpdatableFactory.createUpdatable()</code> to create an updatable
* object. It is up to the IUpdatableFactory objects to interpret this
* description.
* <p>
* <strong>EXPERIMENTAL</strong>. This class or interface has been added as
* part of a work in progress. There is no guarantee that this API will remain
* unchanged during the 3.2 release cycle. Please do not use this API without
* consulting with the Platform/UI team.
* </p>
*
* @since 3.2
*
*/
public class Property {
private final Object object;
private final Object propertyID;
private final Class propertyType;
private final Boolean isCollectionProperty;
/**
* Creates a new property description from the given object and property
* identifier.
*
* @param object
* @param propertyID
*/
public Property(Object object, Object propertyID) {
this(object, propertyID, null, null);
}
/**
* Creates a new property description from the given object, property
* identifier, property type, and information whether the property is a
* collection property.
*
* @param object
* the object that has the given property
* @param propertyID
* the property identifier
* @param propertyType
* the property type, or <code>null</code> if unknown
* @param isCollectionProperty
* <code>Boolean.TRUE</code> if the property is a collection
* property, <code>Boolean.FALSE</code> if it is a simple
* property, or <code>null</code> if unknown
*/
public Property(Object object, Object propertyID,
Class propertyType, Boolean isCollectionProperty) {
this.object = object;
this.propertyID = propertyID;
this.propertyType = propertyType;
this.isCollectionProperty = isCollectionProperty;
}
/**
* Returns the object of this property description.
*
* @return the object
*/
public Object getObject() {
return object;
}
/**
* Returns the property identifier of this property description.
*
* @return the property identifier
*/
public Object getPropertyID() {
return propertyID;
}
/**
* Returns the property type of this property description, or
* <code>null</code> if unknown.
*
* @return the property identifier, or <code>null</code>
*/
public Class getPropertyType() {
return propertyType;
}
/**
* Returns whether the property is a collection property, or
* <code>null</code> if unknown. If the property is a collection property,
* getPropertyType() returns the element type of the collection.
*
* @return <code>Boolean.TRUE</code> if the property is a collection
* property, <code>null</code> if it is a simple property, or
* <code>null</code> if unknown
*/
public Boolean isCollectionProperty() {
return isCollectionProperty;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
public String toString() {
return "PropertyDescription(" + object.getClass().getName() + ", " + propertyID.toString() + ", ...)"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}