//------------------------------------------------------------------------------
// <copyright company="Telligent Systems">
//     Copyright (c) Telligent Systems Corporation.  All rights reserved.
// </copyright> 
//------------------------------------------------------------------------------

using System;
using System.ComponentModel;
using CommunityServer.Components;
using CommunityServer.Controls;

namespace CommunityServer.Controls
{
	/// <summary>
	/// ResourceLinkButton is a localized version of <seealso cref="CommunityServer.Controls.CSLinkButton" />.
	/// To accomplish this, ResourceName and/or ResourceFile properties must be provided.
	/// </summary>
	/// <remarks>
	/// ResourceFile is not mandatory.
	/// </remarks>
	public class ResourceLinkButton : CSLinkButton
	{
		/// <summary>
		/// Gets or sets the name of the resource to dispaly.
		/// </summary>
		[
			Bindable(true),
				Category( "Appearance" ),
				Description( "Gets or sets the name of the resource to display." ),
				DefaultValue( "" ),
		]
		public virtual String ResourceName 
		{
			get 
			{
				Object state = ViewState["ResourceName"];
				if ( state != null ) 
				{
					return (String)state;
				}
				return "";
			}
			set 
			{
				ViewState["ResourceName"] = value;
			}
		}

		/// <summary>
		/// Gets or sets the name of the resource file to pull from
		/// </summary>
		[
			Bindable(true),
				Category( "Appearance" ),
				Description( "Gets or sets the name of the resource file." ),
				DefaultValue( null ),
		]
		public virtual String ResourceFile 
		{
			get 
			{
				Object state = ViewState["ResourceFile"];
				if ( state != null ) 
				{
					return (String)state;
				}
				return "";
			}
			set 
			{
				ViewState["ResourceFile"] = value;
			}
		}

		protected override void OnPreRender(EventArgs e)
		{            
			base.OnPreRender( e );
	    
			if (!Globals.IsNullorEmpty( ResourceName ))
				this.Text = ResourceManager.GetString(ResourceName, ResourceFile);
		}

	}
}
