/* System.Web.UI.HtmlControls
* Authors
* Leen Toelen (toelen@hotmail.com)
*/
using System;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Globalization;
using System.Web;
using System.Web.UI;
namespace System.Web.UI.HtmlControls{
[DefaultEvent("ServerClick")]
public class HtmlInputImage : HtmlInputControl, IPostBackEventHandler, IPostBackDataHandler{
private static readonly object EventServerClick = new object ();
private int _x, _y;
public HtmlInputImage(): base("image"){}
protected override void OnPreRender(EventArgs e){
if (Page != null && !Disabled){
Page.RegisterRequiresPostBack(this);
}
}
protected override void RenderAttributes(HtmlTextWriter writer)
{
base.RenderAttributes (writer);
// Anything else?
}
protected virtual void OnServerClick(ImageClickEventArgs e){
ImageClickEventHandler handler = (ImageClickEventHandler) Events[EventServerClick];
if (handler != null) handler (this, e);
}
bool IPostBackDataHandler.LoadPostData (string postDataKey,
NameValueCollection postCollection)
{
string postX = postCollection[String.Concat(RenderedName,".x")];
string postY = postCollection[String.Concat(RenderedName,".y")];
if (postX != null && postY != null && postX.Length >= 0 && postY.Length >= 0){
_x = Int32.Parse(postX, CultureInfo.InvariantCulture);
_y = Int32.Parse(postY, CultureInfo.InvariantCulture);
Page.RegisterRequiresRaiseEvent(this);
}
return false;
}
void IPostBackEventHandler.RaisePostBackEvent (string eventArgument)
{
if (CausesValidation)
Page.Validate();
OnServerClick (new ImageClickEventArgs(_x, _y));
}
void IPostBackDataHandler.RaisePostDataChangedEvent ()
{
}
[WebCategory("Action")]
[WebSysDescription("Fires when the image is clicked.")]
public event ImageClickEventHandler ServerClick{
add{
Events.AddHandler(EventServerClick, value);
}
remove{
Events.RemoveHandler(EventServerClick, value);
}
}
[DefaultValue("")]
[WebCategory("Appearance")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Align{
get{
string attr = Attributes["align"];
if (attr != null) return attr;
return String.Empty;
}
set{
Attributes["align"] = AttributeToString(value);
}
}
[DefaultValue("")]
[WebCategory("Appearance")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Alt{
get{
string attr = Attributes["alt"];
if (attr != null) return attr;
return String.Empty;
}
set{
Attributes["alt"] = AttributeToString(value);
}
}
[DefaultValue("")]
[WebCategory("Appearance")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int Border{
get{
string attr = Attributes["border"];
if (attr != null) return Int32.Parse(attr,CultureInfo.InvariantCulture);
return -1;
}
set{
Attributes["border"] = AttributeToString(value);
}
}
[DefaultValue(true)]
[WebCategory("Behavior")]
public bool CausesValidation{
get{
object causesVal = ViewState["CausesValidation"];
if (causesVal != null) return (Boolean) causesVal;
return true;
}
set{
ViewState["CausesValidation"] = (Boolean) value;
}
}
[DefaultValue("")]
[WebCategory("Appearance")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Src{
get{
string attr = Attributes["src"];
if (attr != null) return attr;
return String.Empty;
}
set{
Attributes["src"] = AttributeToString(value);
}
}
} // class HtmlInputImage
} // namespace System.Web.UI.HtmlControls