
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
// 
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
/**
 * Namespace:   System.Web.UI.Design.WebControls
 * Class:       PanelDesigner
 *
 * Author:      Gaurav Vaish
 * Maintainer:  gvaish_mono@lycos.com
 *
 * (C) Gaurav Vaish (2002)
 */

using System;
using System.Web.UI.WebControls;
using System.Web.UI.Design;

namespace System.Web.UI.Design.WebControls
{
	public class PanelDesigner : ReadWriteControlDesigner
	{
		public PanelDesigner()
		{
		}
		
		protected override void MapPropertyToStyle(string propName,
		                                           object varPropValue)
		{
			if(propName != null)
			{
				try
				{
					bool hasBeenSet = false;
					if(propName == "BackImageUrl")
					{
						string url = varPropValue.ToString();
						if(url.Length > 0)
							url = "url(" + url + ")";
						// FIXME: CSS Specs read "background-image",
						// while MS implementation puts "backgroundImage".
						// Is it a MS implementation bug?
						Behavior.SetStyleAttribute("backgroundImage",
						                            true, url, true);
						hasBeenSet = true;
					} else if(propName == "HorizonalAlign")
					{
						HorizontalAlign alignment = (HorizontalAlign)varPropValue;
						if(alignment != HorizontalAlign.NotSet)
						{
							string value = Enum.Format(typeof(HorizontalAlign), 
							                           varPropValue, "G");
							Behavior.SetStyleAttribute("textAlign",
							                            true, value, true);
							hasBeenSet = true;
						}
					}
					if(!hasBeenSet)
						base.MapPropertyToStyle(propName, varPropValue);
						
				} catch(Exception) { }
			}
		}
		
		protected override void OnBehaviorAttached()
		{
			base.OnBehaviorAttached();
			Panel toDesign = (Panel)Component;
			MapPropertyToStyle("BackImageUrl", toDesign.BackImageUrl);
			MapPropertyToStyle("HorizontalAlign", toDesign.HorizontalAlign);
		}
	}
}
