Click here to Skip to main content
15,896,063 members
Articles / Desktop Programming / Windows Forms

Storm - the world's best IDE framework for .NET

Rate me:
Please Sign up or sign in to vote.
4.96/5 (82 votes)
4 Feb 2010LGPL311 min read 277.9K   6.5K   340  
Create fast, flexible, and extensible IDE applications easily with Storm - it takes nearly no code at all!
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;

namespace Storm.TextEditor.Editor
{
	/// <summary>
	/// Used to describe the apperance of text.
	/// </summary>
	[Editor(typeof(TextStyleUIEditor), typeof(UITypeEditor))]
	public class TextStyle
		: ICloneable
	{
		#region Fields

		private string name = null;

		private bool bold      = false;
		private bool italic    = false;
		private bool underline = false;

		private Color foreColor = Color.Black;
		private Color backColor = Color.Transparent;

		#region Events

		/// <summary>
		/// Occurs when the TextStyle has changed.
		/// </summary>
		public event EventHandler Change = null;

		#endregion

		#endregion

		#region Properties

		/// <summary>
		/// Gets or sets the name of the TextStyle.
		/// </summary>
		[Browsable(true)]
		[Category("Other")]
		[Description("Gets or sets the name of the TextStyle.")]
		public string Name
		{
			get { return name; }
			set
			{
				name = value;
				this.OnChange();
			}
		}

		/// <summary>
		/// Gets or sets whether the TextStyle should use a bold font.
		/// </summary>
		[Browsable(true)]
		[Category("Apperance")]
		[Description("Gets or sets whether the TextStyle should use a bold font.")]
		public bool Bold
		{
			get { return bold; }
			set
			{
				bold = value;
				this.OnChange();
			}
		}

		/// <summary>
		/// Gets or sets whether the TextStyle should use an italic font.
		/// </summary>
		[Browsable(true)]
		[Category("Apperance")]
		[Description("Gets or sets whether the TextStyle should use an italic font.")]
		public bool Italic
		{
			get { return italic; }
			set
			{
				italic = value;
				this.OnChange();
			}
		}

		/// <summary>
		/// Gets or sets whether the TextStyle should use an underlined font.
		/// </summary>
		[Browsable(true)]
		[Category("Apperance")]
		[Description("Gets or sets whether the TextStyle should use an underlined font.")]
		public bool Underline
		{
			get { return underline; }
			set
			{
				underline = value;
				this.OnChange();
			}
		}

		/// <summary>
		/// Gets or sets the foreground color of the TextStyle.
		/// </summary>
		[Browsable(true)]
		[Category("Apperance")]
		[Description("Gets or sets the foreground color of the TextStyle.")]
		public Color ForeColor
		{
			get { return foreColor; }
			set
			{
				foreColor = value;
				this.OnChange();
			}
		}

		/// <summary>
		/// Gets or sets the background color of the TextStyle.
		/// </summary>
		[Browsable(true)]
		[Category("Apperance")]
		[Description("Gets or sets the background color of the TextStyle.")]
		public Color BackColor
		{
			get { return backColor; }
			set
			{
				backColor = value;
				this.OnChange();
			}
		}

		/// <summary>
		/// Gets whether the background color of the TextStyle is transparent.
		/// </summary>
		[Browsable(false)]
		[Category("Other")]
		[Description("Gets whether the background color of the TextStyle is transparent.")]
		public bool Transparent
		{
			get { return (this.BackColor.A == 0); }
		}

		#endregion

		#region Methods

		#region Public

		/// <summary>
		/// Returns the TextStyle as a string.
		/// </summary>
		/// <returns>The TextStyle as a string.</returns>
		public override string ToString()
		{
			if (this.name == null)
				return "TextStyle";

			return this.name;
		}

		#endregion

		#region Protected

		/// <summary>
		/// Raises the Change event.
		/// </summary>
		protected virtual void OnChange()
		{
			if (this.Change != null)
				this.Change(this, EventArgs.Empty);
		}

		#endregion

		#endregion

		/// <summary>
		/// Initializes a new instance of TextStyle.
		/// </summary>
		public TextStyle()
		{
		}

		#region ICloneable Members

		public object Clone()
		{
			TextStyle textStyle = new TextStyle();

			textStyle.BackColor = BackColor;
			textStyle.Bold = Bold;

			textStyle.ForeColor = ForeColor;
			textStyle.Italic = Italic;

			textStyle.Underline = Underline;
			textStyle.name = name;

			return textStyle;
		}

		#endregion
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)



Comments and Discussions