using System;

namespace MusicMetaTagger.UI
{
	/// <summary>
	///   This defines an interface which can be implemented by UI elements which indicate the progress of a long operation. (See ProgressWindow for a typical implementation)
	/// </summary>
	public interface IProgressCallback
	{
		/// <summary>
		///   If this property is true, then you should abort work
		/// </summary>
		bool IsAborting { get; }

		/// <summary>
		///   Call this method from the worker thread to initialize the progress callback, without setting the range
		/// </summary>
		void Begin();

		/// <summary>
		///   Call this method from the worker thread to reset the range in the progress callback
		/// </summary>
		void SetRange(int minimum, int maximum);

		/// <summary>
		///   Call this method from the worker thread to update the progress text.
		/// </summary>
		void SetText(String text);

		/// <summary>
		///   Call this method from the worker thread to step the progress meter to a particular value.
		/// </summary>
		void Increment(int val);
	}
}