using System;
using System.ComponentModel;
using System.IO;
using System.Web.UI.WebControls;
using SiberTek.Xenta.Utils;
using SiberTek.Xenta.Web.Controls;
namespace SiberTek.Xenta.Web.Admin.Modules
{
public partial class ThemeDropDownList : UserControlBase, IDropDownList<String>
{
#region Events
public event EventHandler SelectedIndexChanged;
#endregion
#region Properties
public bool AutoPostBack
{
get
{
return lstThemeList.AutoPostBack;
}
set
{
lstThemeList.AutoPostBack = value;
}
}
public bool AllowEmptyItem
{
get
{
return Convert.ToBoolean(ViewState["AllowEmptyItem"]);
}
set
{
ViewState["AllowEmptyItem"] = value;
}
}
[Browsable(false)]
public string SelectedValue
{
get
{
return lstThemeList.SelectedValue;
}
set
{
lstThemeList.SelectedValue = value;
}
}
public int ItemCount
{
get
{
return lstThemeList.Items.Count;
}
}
public bool Enabled
{
set
{
lstThemeList.Enabled = value;
}
}
#endregion
#region Methods
public override void BindData()
{
try
{
string themesDir = PathHelper.MapPath("App_Themes");
if(AllowEmptyItem)
{
lstThemeList.Items.Add(new ListItem("-", String.Empty));
}
if(Directory.Exists(themesDir))
{
foreach(string dirpath in Directory.GetDirectories(themesDir))
{
string dirname = Path.GetFileName(dirpath);
lstThemeList.Items.Add(new ListItem(dirname, dirname));
}
}
lstThemeList.DataBind();
}
catch(Exception ex)
{
Page.ShowMessage(ex.Message);
}
base.BindData();
}
#endregion
#region Handlers
protected void LstThemeList_OnSelectedIndexChanged(object sender, EventArgs e)
{
FireSelectedIndexChangedEvent();
}
#endregion
#region Utilities
private void FireSelectedIndexChangedEvent()
{
if(SelectedIndexChanged != null)
{
SelectedIndexChanged(this, EventArgs.Empty);
}
}
#endregion
}
}