# Package org.eclipse.core.databinding.property

package org.eclipse.core.databinding.property
Interfaces and classes for representing and observing properties of objects.

## Package Specification

This package and its subpackages provide the `IProperty`, `IValueProperty`, `IListProperty`, `ISetProperty` and `IMapProperty` interfaces, along with classes which serve as base implementations of each interface.

Properties are intended to serve as a convenient path to creating observables for observing specific attributes of source objects. The main goals of this API are:

- Simplify the process of creating custom observables. Developing custom observables correctly can be tricky, so the properties API tries to ease this burden by providing all the observable implementations. Property implementers only need to extend one of the provided base classes (`SimpleValueProperty`, `SimpleListProperty`, `SimpleSetProperty` or `SimpleMapProperty`) and implement a handful of abstract methods which the observables use to function.
- Simplify observation of nested properties. Traditionally observing a nested property required creating an observable for the first property, then wrapping that observable in a master-detail observable for each successive property in the chain. Using property chaining it is trivial to define a nested property and to observe that property on a particular source object.

A set of delegating properties are also provided (`DelegatingValueProperty`, `DelegatingListProperty`, `DelegatingSetProperty` and `DelegatingMapProperty`) which may be used to implement properties where the property behavior depends on the type of source object.

Related Packages
Package
Description
org.eclipse.core.databinding
Provides classes for binding observable objects, for example UI widgets and model objects.
org.eclipse.core.databinding.property.list
org.eclipse.core.databinding.property.map
org.eclipse.core.databinding.property.set
org.eclipse.core.databinding.property.value
org.eclipse.core.databinding.beans
Provides classes for observing JavaBeans(tm) objects.
org.eclipse.core.databinding.conversion
Provides interfaces and classes for data type conversion.
org.eclipse.core.databinding.observable
Provides the core APIs for observing changes in objects.
org.eclipse.core.databinding.util
Provides general utilities for data binding.
org.eclipse.core.databinding.validation
Provides the core APIs for validation.
Class
Description
INativePropertyListener<S>
A listener capable of adding or removing itself as a listener on a source object using the source's "native" listener API.
IProperty
Marker interface for all property types in the properties framework.
IPropertyObservable<P extends IProperty>
Provides access to the details of property observables
ISimplePropertyListener<S,D extends IDiff>
Listener for changes to properties on a particular source object
NativePropertyListener<S,D extends IDiff>
Abstract INativePropertyListener implementation
Properties
Contains static methods to operate on or return IProperty objects.
SimplePropertyEvent<S,D extends IDiff>
Event object events in the properties API