using System;
using System.Data;
using System.Collections;
using yaf.pages;
namespace yaf.controls
{
///
/// Summary description for ForumJump.
///
public class PopMenu : BaseControl, System.Web.UI.IPostBackEventHandler
{
private string m_control = string.Empty;
private Hashtable m_items = new Hashtable();
public string Control
{
set
{
m_control = value;
}
get
{
return m_control;
}
}
protected string ControlID
{
get
{
return string.Format( "{0}_{1}", Parent.ClientID, m_control );
}
}
public void AddItem( string title, string script )
{
m_items.Add( title, script );
}
public void Attach( System.Web.UI.WebControls.WebControl ctl )
{
ctl.Attributes ["onclick"] = string.Format( "yaf_popit('{0}')", this.UniqueID );
ctl.Attributes ["onmouseover"] = string.Format( "yaf_mouseover('{0}')", this.UniqueID );
}
private void Page_Load( object sender, System.EventArgs e )
{
/*
if ( this.Visible )
{
Page.ClientScript.RegisterStartupScript( ClientID, string.Format( "", ControlID ) );
}
*/
}
override protected void OnInit( EventArgs e )
{
this.Load += new System.EventHandler( this.Page_Load );
this.PreRender += new EventHandler( PopMenu_PreRender );
base.OnInit( e );
}
protected override void Render( System.Web.UI.HtmlTextWriter writer )
{
}
private void PopMenu_PreRender( object sender, EventArgs e )
{
if ( !this.Visible )
return;
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.AppendFormat( "
", UniqueID );
foreach ( string key in m_items.Keys )
{
sb.AppendFormat( "| {0} |
\n", m_items [key], Page.ClientScript.GetPostBackClientHyperlink( this, key ) );
}
sb.AppendFormat( "
" );
Page.ClientScript.RegisterStartupScript( this.GetType(), ClientID + "_menuscript", sb.ToString() );
}
#region IPostBackEventHandler
public event PopEventHandler ItemClick;
public void RaisePostBackEvent( string eventArgument )
{
if ( ItemClick != null )
{
ItemClick( this, new PopEventArgs( eventArgument ) );
}
}
#endregion
}
public class PopEventArgs : EventArgs
{
private string m_item;
public PopEventArgs( string eventArgument )
{
m_item = eventArgument;
}
public string Item
{
get
{
return m_item;
}
}
}
public delegate void PopEventHandler( object sender, PopEventArgs e );
}