using System;
using System.Collections.Generic;
using System.Text;

namespace Vortex.SceneFramework.CSS {

	/// <summary>
	/// It is contract for node to support style system
	/// </summary>
	public interface IStyledNode {

		/// <summary>
		/// Gets the style sheet used by node. Can be <c>null</c> if node is out of domain.
		/// </summary>
		/// <value>The style sheet used by node.</value>
		StyleSheet StyleSheet { get; }

		/// <summary>
		/// Gets the id of style node.
		/// </summary>
		/// <value>The id of style node. May be <c>null</c></value>
		string Id { get; }

		/// <summary>
		/// Gets the list of node classes (space separated).
		/// </summary>
		/// <value>The list of node classes (space separated).</value>
		string Class { get; }

		/// <summary>
		/// Gets the all of node style states.
		/// </summary>
		/// <returns>Enumeration of all of node style states</returns>
		IEnumerable<StyleState> GetElementStates();
	}
}
