using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace MSPress.ServerControls {
[
DefaultEvent("ClickNext"),
DefaultProperty("NextText")
]
public class NavButtons: WebControl, IPostBackEventHandler {
private static readonly object EventClickNext = new object();
private static readonly object EventClickPrevious = new object();
[
Bindable(true),
Category("Behavior"),
DefaultValue(""),
Description("The text to display on the Next button")
]
public virtual string NextText {
get {
string s = (string)ViewState["NextText"];
return((s == null) ? String.Empty : s);
}
set {
ViewState["NextText"] = value;
}
}
[
Bindable(true),
Category("Behavior"),
DefaultValue(""),
Description("The text to display on the Previous button")
]
public virtual string PreviousText {
get {
string s = (string)ViewState["PreviousText"];
return((s == null) ? String.Empty : s);
}
set {
ViewState["PreviousText"] = value;
}
}
[
Category("Action"),
Description("Raised when the Next button is clicked")
]
public event EventHandler ClickNext {
add {
Events.AddHandler(EventClickNext, value);
}
remove {
Events.RemoveHandler(EventClickNext, value);
}
}
[
Category("Action"),
Description("Raised when the Previous button is clicked")
]
public event EventHandler ClickPrevious {
add {
Events.AddHandler(EventClickPrevious, value);
}
remove {
Events.RemoveHandler(EventClickPrevious, value);
}
}
// Invokes delegates registered with the ClickNext event.
protected virtual void OnClickNext (EventArgs e) {
EventHandler clickNextHandler = (EventHandler)Events[EventClickNext];
if (clickNextHandler != null) {
clickNextHandler(this, e);
}
}
// Invokes delegates registered with the ClickPrevious event.
protected virtual void OnClickPrevious (EventArgs e) {
EventHandler clickPreviousHandler = (EventHandler)Events[EventClickPrevious];
if (clickPreviousHandler != null) {
clickPreviousHandler(this, e);
}
}
// Method of IPostBackEventHandler that raises postback events.
void IPostBackEventHandler.RaisePostBackEvent(string eventArgument){
if (eventArgument == "Previous")
OnClickPrevious(EventArgs.Empty);
else if (eventArgument == "Next")
OnClickNext(EventArgs.Empty);
}
protected override void Render(HtmlTextWriter writer) {
// Ensures that this control is nested in a server form.
if (Page != null) {
Page.VerifyRenderingInServerForm(this);
}
base.Render(writer);
}
protected override void RenderContents(HtmlTextWriter writer) {
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.GetPostBackEventReference(this, "Previous"));
writer.AddAttribute("language", "javascript");
writer.RenderBeginTag(HtmlTextWriterTag.Button);
writer.Write(this.PreviousText);
writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.GetPostBackEventReference(this, "Next"));
writer.AddAttribute("language", "javascript");
writer.RenderBeginTag(HtmlTextWriterTag.Button);
writer.Write(this.NextText);
writer.RenderEndTag();
}
}
}