// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <owner name="Daniel Grunwald"/>
//     <version>$Revision$</version>
// </file>

using System;
using System.Collections.ObjectModel;
using System.ComponentModel;

namespace ICSharpCode.AvalonEdit.AddIn.Snippets
{
	/// <summary>
	/// A group of snippets (for a specific file extension).
	/// </summary>
	public class CodeSnippetGroup : INotifyPropertyChanged
	{
		string extensions = "";
		ObservableCollection<CodeSnippet> snippets = new ObservableCollection<CodeSnippet>();
		
		public ObservableCollection<CodeSnippet> Snippets {
			get { return snippets; }
		}
		
		public string Extensions {
			get { return extensions; }
			set {
				if (value == null)
					throw new ArgumentNullException();
				if (extensions != value) {
					extensions = value;
					OnPropertyChanged("Extensions");
				}
			}
		}
		
		public event PropertyChangedEventHandler PropertyChanged;
		
		protected virtual void OnPropertyChanged(string propertyName)
		{
			if (PropertyChanged != null) {
				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
			}
		}
	}
}