using System;
using Spring.Context;
using Spring.Globalization;

namespace Spring.DataBinding
{
	/// <summary>
	/// A page or control must implement this interface to support spring's databinding infrastructure.
	/// </summary>
	/// <remarks>
	/// <seealso cref="IDataBound"/>
	/// <seealso cref="IBindingContainer"/>
	/// <seealso cref="Spring.Web.UI.Controls.DataBindingPanel"/>
	/// </remarks>
	public interface IWebDataBound : IDataBound
	{
		/// <summary>
		/// Return the UniqueID of this page or control.
		/// </summary>
		string UniqueID { get; }
		/// <summary>
		/// Return the <see cref="IApplicationContext"/> where <see cref="IFormatter"/> 
		/// instances should be optained from.
		/// </summary>
		IApplicationContext ApplicationContext { get; }
		/// <summary>
		/// This event is raised to initialize bindings for <see cref="IDataBound.BindingManager" />.
		/// </summary>
		event EventHandler DataBindingsInitialized;
	}
}
