using System;
using System.Collections;
using System.Configuration;
using System.Web.UI;
using BulletinX.Components;
namespace BulletinX.Controls
{
[PersistChildren(true), ParseChildren(false)]
public class Head : Control
{
public static readonly string titleKey = ConfigurationManager.AppSettings["SiteTitle"];
public static readonly string faviconKey = ConfigurationManager.AppSettings["Favicon"];
public static string styleFormat = "";
protected override void Render(HtmlTextWriter writer)
{
writer.Write( "" );
writer.Write( "
\n" );
RenderTitle( writer );
RenderFavicon( writer );
RenderStyleSheets( writer );
writer.Write( "" );
}
protected virtual void RenderTitle(HtmlTextWriter writer)
{
string title = titleKey;
if (title == null)
throw new ApplicationException( "Site Title is blank please enter a title in the web.config" );
writer.Write( "\t{0}\n", title );
}
protected virtual void RenderFavicon(HtmlTextWriter writer)
{
writer.Write("\t\n", faviconKey);
}
protected virtual void RenderStyleSheets(HtmlTextWriter writer)
{
RenderStyleSheets( writer, StyleFlags.First );
RenderStyleSheets( writer, StyleFlags.Unknown );
RenderStyleSheets( writer, StyleFlags.Last );
}
protected virtual void RenderStyleSheets(HtmlTextWriter writer, StyleFlags flags)
{
Queue queue = (Queue)styleFormat;
if(queue != null && queue.Count > 0)
{
IEnumerator ie = queue.GetEnumerator( );
while(ie.MoveNext())
{
StyleQueue si = (StyleQueue)ie.Current;
if (si.position == flags)
writer.WriteLine( si.styleTag );
}
}
}
public static void AddStyle(string url, string media)
{
AddStyle( url, media, StyleFlags.Unknown );
}
public static void AddStyle(string url, string media, StyleFlags flags)
{
Queue styleQueue = (Queue)styleFormat;
if(styleQueue == null)
{
styleQueue = new Queue( );
styleFormat = styleQueue;
}
styleQueue.Enqueue( new StyleQueue( string.Format( (string)styleFormat, url, media ), flags ) );
}
}
}