X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.Web%2FSystem.Web.UI.HtmlControls%2FHtmlInputImage.cs;h=9e441310ab7ca4c704d2ea32d1625cbde2c99a56;hb=53e266903ec6b2d822cf5b0c566f6374df5307a4;hp=eacbed41cc21c48317a368a1e20534fe30eda4b6;hpb=7c9ee1a3eee8ba8eda6fc266f2936d3930d40248;p=mono.git diff --git a/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlInputImage.cs b/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlInputImage.cs old mode 100755 new mode 100644 index eacbed41cc2..9e441310ab7 --- a/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlInputImage.cs +++ b/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlInputImage.cs @@ -1,130 +1,290 @@ -/* System.Web.UI.HtmlControls -* Authors -* Leen Toelen (toelen@hotmail.com) -*/ - -using System; -using System.Web; -using System.Web.UI; +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// +// System.Web.UI.HtmlControls.HtmlInputImage.cs +// +// Authors: +// Jackson Harper (jackson@ximian.com) +// +// (C) 2005 Novell, Inc. + + +// +// TODO: getting the .x and .y in LoadData doesn't work with mozilla +// + using System.Globalization; using System.Collections.Specialized; +using System.ComponentModel; +using System.Security.Permissions; -namespace System.Web.UI.HtmlControls{ - - public class HtmlInputImage : HtmlInputControl, IPostBackEventHandler, IPostBackDataHandler{ - - private static readonly object EventServerClick; - private int _x, _y; - - public HtmlInputImage(): base("image"){} - - protected override void OnPreRender(EventArgs e){ - if (Page != null && !Disabled){ - Page.RegisterRequiresPostBack(this); +namespace System.Web.UI.HtmlControls { + + // CAS + [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] + [AspNetHostingPermission (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] + // attributes + [DefaultEvent("ServerClick")] +#if NET_2_0 + [SupportsEventValidation] +#endif + public class HtmlInputImage : HtmlInputControl, IPostBackDataHandler, + IPostBackEventHandler { + + private static readonly object ServerClickEvent = new object (); + + private int clicked_x; + private int clicked_y; + + public HtmlInputImage () : base ("image") + { + } + + [DefaultValue(true)] + [WebSysDescription("")] + [WebCategory("Behavior")] +#if NET_2_0 + public virtual +#else + public +#endif + bool CausesValidation { + get { + return ViewState.GetBool ("CausesValidation", true); + } + set { + ViewState ["CausesValidation"] = value; } } - - protected void OnServerClick(ImageClickEventArgs e){ - ImageClickEventHandler handler = (ImageClickEventHandler) Events[EventServerClick]; - if (handler != null) handler.Invoke(this, e); + + [DefaultValue("")] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + [WebSysDescription("")] + [WebCategory("Appearance")] + public string Align { + get { return GetAtt ("align"); } + set { SetAtt ("align", value); } } - - protected override void RenderAttributes(HtmlTextWriter writer){ - PreProcessRelativeReference(writer,"src"); - if (Page != null && !CausesValidation){ - System.Web.UI.Util.WriteOnClickAttribute( - writer, - this, - false, - true, - CausesValidation == false? Page.Validators.Count > 0: false); + + [DefaultValue("")] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] +#if NET_2_0 + [Localizable (true)] +#endif + [WebSysDescription("")] + [WebCategory("Appearance")] + public string Alt { + get { return GetAtt ("alt"); } + set { SetAtt ("alt", value); } + } + + [DefaultValue("")] + [WebSysDescription("")] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + [WebCategory("Appearance")] +#if NET_2_0 + [UrlProperty] +#endif + public string Src { + get { return GetAtt ("src"); } + set { SetAtt ("src", value); } + } + +#if NET_2_0 + [DefaultValue("-1")] +#else + [DefaultValue("")] +#endif + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + [WebSysDescription("")] + [WebCategory("Appearance")] + public int Border { + get { + string border = Attributes ["border"]; + if (border == null) + return -1; + return Int32.Parse (border, CultureInfo.InvariantCulture); + } + set { + if (value == -1) { + Attributes.Remove ("border"); + return; + } + Attributes ["border"] = value.ToString (CultureInfo.InvariantCulture); } - RenderAttributes(writer); } - - public bool 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); + + bool LoadPostDataInternal (string postDataKey, NameValueCollection postCollection) + { + string x = postCollection [UniqueID + ".x"]; + string y = postCollection [UniqueID + ".y"]; + + if (x != null && x.Length != 0 && + y != null && y.Length != 0) { + clicked_x = Int32.Parse (x, CultureInfo.InvariantCulture); + clicked_y = Int32.Parse (y, CultureInfo.InvariantCulture); + Page.RegisterRequiresRaiseEvent (this); + return true; } + return false; } + - public void RaisePostBackEvent(string eventArgument){ - if (CausesValidation){ - Page.Validate(); - } - OnServerClick(new ImageClickEventArgs(_x,_y)); + void RaisePostBackEventInternal (string eventArgument) + { + if (CausesValidation) +#if NET_2_0 + Page.Validate (ValidationGroup); +#else + Page.Validate (); +#endif + OnServerClick (new ImageClickEventArgs (clicked_x, clicked_y)); } - - public void RaisePostDataChangedEvent(){} - - public event EventHandler ServerClick{ - add{ - Events.AddHandler(EventServerClick, value); - } - remove{ - Events.RemoveHandler(EventServerClick, value); - } + + void RaisePostDataChangedEventInternal () + { + /* no events to raise */ } - - public string Align{ - get{ - string attr = Attributes["align"]; - if (attr != null) return attr; - return ""; + +#if NET_2_0 + [DefaultValue ("")] + public virtual string ValidationGroup + { + get { + return ViewState.GetString ("ValidationGroup", ""); } - set{ - Attributes["align"] = AttributeToString(value); + set { + ViewState ["ValidationGroup"] = value; } } - - public string Alt{ - get{ - string attr = Attributes["alt"]; - if (attr != null) return attr; - return ""; - } - set{ - Attributes["alt"] = AttributeToString(value); - } + + protected virtual bool LoadPostData (string postDataKey, NameValueCollection postCollection) + { + return LoadPostDataInternal (postDataKey, postCollection); } - - public int Border{ - get{ - string attr = Attributes["border"]; - if (attr != null) return Int32.Parse(attr,CultureInfo.InvariantCulture); - return -1; - } - set{ - Attributes["border"] = AttributeToString(value); - } + + protected virtual void RaisePostBackEvent (string eventArgument) + { + RaisePostBackEventInternal (eventArgument); + } + + protected virtual void RaisePostDataChangedEvent () + { + RaisePostDataChangedEventInternal (); } +#endif + + bool IPostBackDataHandler.LoadPostData (string postDataKey, + NameValueCollection postCollection) + { +#if NET_2_0 + return LoadPostData (postDataKey, postCollection); +#else + return LoadPostDataInternal (postDataKey, postCollection); +#endif + } + - public bool CausesValidation{ - get{ - object causesVal = ViewState["CausesValidation"]; - if (causesVal != null) return (Boolean) causesVal; - return true; - } - set{ - ViewState["CausesValidation"] = (Boolean) value; + void IPostBackDataHandler.RaisePostDataChangedEvent () + { +#if NET_2_0 + RaisePostDataChangedEvent(); +#else + RaisePostDataChangedEventInternal (); +#endif + } + + void IPostBackEventHandler.RaisePostBackEvent (string eventArgument) + { +#if NET_2_0 + RaisePostBackEvent (eventArgument); +#else + RaisePostBackEventInternal (eventArgument); +#endif + } + +#if NET_2_0 + protected internal +#else + protected +#endif + override void OnPreRender (EventArgs e) + { + base.OnPreRender (e); + + if (Page != null) { + Page.RegisterRequiresPostBack (this); } } - - public string Src{ - get{ - string attr = Attributes["src"]; - if (attr != null) return attr; - return ""; + + protected virtual void OnServerClick (ImageClickEventArgs e) + { + EventHandler handler = Events [ServerClickEvent] as EventHandler; + if (handler != null) + handler (this, e); + } + + protected override void RenderAttributes (HtmlTextWriter writer) + { +#if NET_2_0 + if (Page != null) + Page.ClientScript.RegisterForEventValidation (this.UniqueID); + + if (CausesValidation && Page != null && Page.AreValidatorsUplevel (ValidationGroup)) { + ClientScriptManager csm = Page.ClientScript; + Attributes ["onclick"] += csm.GetClientValidationEvent (ValidationGroup); } - set{ - Attributes["src"] = AttributeToString(value); +#else + if (CausesValidation && Page != null && Page.AreValidatorsUplevel ()) { + ClientScriptManager csm = new ClientScriptManager (Page); + writer.WriteAttribute ("onclick", csm.GetClientValidationEvent ()); } +#endif + + base.RenderAttributes (writer); + } + + private void SetAtt (string name, string value) + { + if ((value == null) || (value.Length == 0)) + Attributes.Remove (name); + else + Attributes [name] = value; + } + + private string GetAtt (string name) + { + string res = Attributes [name]; + if (res == null) + return String.Empty; + return res; + } + + [WebSysDescription("")] + [WebCategory("Action")] + public event ImageClickEventHandler ServerClick { + add { Events.AddHandler (ServerClickEvent, value); } + remove { Events.AddHandler (ServerClickEvent, value); } } - } // class HtmlInputImage -} // namespace System.Web.UI.HtmlControls + } +}