refactoring: Button, ImageButton and LinkButton are used insted internal DataControlB...
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / ButtonField.cs
index 9915e628e2e6b88262bf6c6c39b9111c8f85a919..92eb9c65fea64a4e9b3167e0dd2d2fdcae13c013 100644 (file)
@@ -44,73 +44,59 @@ namespace System.Web.UI.WebControls {
        {
                PropertyDescriptor boundProperty;
 
-           [WebCategoryAttribute ("Behavior")]\r
-           [DefaultValueAttribute ("")]\r
+               [DefaultValueAttribute ("")]
+               [WebSysDescription ("Raised when a Button Command is executed.")]
+               [WebCategoryAttribute ("Behavior")]
                public virtual string CommandName {
-                       get {
-                               object ob = ViewState ["CommandName"];
-                               if (ob != null) return (string) ob;
-                               return "";
-                       }
+                       get { return ViewState.GetString ("CommandName", ""); }
                        set {
                                ViewState ["CommandName"] = value;
                                OnFieldChanged ();
                        }
                }
                
-           [WebCategoryAttribute ("Data")]\r
-           [DefaultValueAttribute ("")]\r
+               [DefaultValueAttribute ("")]
+               [TypeConverterAttribute ("System.Web.UI.Design.DataSourceViewSchemaConverter, " + Consts.AssemblySystem_Design)]
+               [WebSysDescription ("")]
+               [WebCategoryAttribute ("Data")]
                public virtual string DataTextField {
-                       get {
-                               object ob = ViewState ["DataTextField"];
-                               if (ob != null) return (string) ob;
-                               return "";
-                       }
+                       get { return ViewState.GetString ("DataTextField", ""); }
                        set {
                                ViewState ["DataTextField"] = value;
                                OnFieldChanged ();
                        }
                }
                
-           [WebCategoryAttribute ("Data")]\r
-           [DefaultValueAttribute ("")]\r
+               [DefaultValueAttribute ("")]\r
+               [WebSysDescription ("")]
+               [WebCategoryAttribute ("Data")]
                public virtual string DataTextFormatString {
-                       get {
-                               object ob = ViewState ["DataTextFormatString"];
-                               if (ob != null) return (string) ob;
-                               return "";
-                       }
+                       get { return ViewState.GetString ("DataTextFormatString", ""); }
                        set {
                                ViewState ["DataTextFormatString"] = value;
                                OnFieldChanged ();
                        }
                }
                
-               [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]\r
-           [WebCategoryAttribute ("Appearance")]\r
-           [DefaultValueAttribute ("")]\r
-           [UrlPropertyAttribute]\r
+               [EditorAttribute ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)]
+               [WebSysDescription ("")]
+               [WebCategoryAttribute ("Appearance")]
+               [DefaultValueAttribute ("")]\r
+               [UrlPropertyAttribute]\r
                public virtual string ImageUrl {
-                       get {
-                               object ob = ViewState ["ImageUrl"];
-                               if (ob != null) return (string) ob;
-                               return "";
-                       }
+                       get { return ViewState.GetString ("ImageUrl", ""); }
                        set {
                                ViewState ["ImageUrl"] = value;
                                OnFieldChanged ();
                        }
                }
                
-           [LocalizableAttribute (true)]\r
-           [WebCategoryAttribute ("Appearance")]\r
-           [DefaultValueAttribute ("")]\r
+               [LocalizableAttribute (true)]
+               [DefaultValueAttribute ("")]
+               [WebSysDescription ("")]
+               [WebCategoryAttribute ("Appearance")]
                public virtual string Text {
-                       get {
-                               object ob = ViewState ["Text"];
-                               if (ob != null) return (string) ob;
-                               return "";
-                       }
+                       get { return ViewState.GetString ("Text", ""); }
                        set {
                                ViewState ["Text"] = value;
                                OnFieldChanged ();
@@ -142,7 +128,8 @@ namespace System.Web.UI.WebControls {
                                btn.CommandArgument = index;
                                
                                if (DataTextField != "") {
-                                       cell.DataBinding += new EventHandler (OnDataBindField);
+                                       if ((rowState & DataControlRowState.Insert) == 0)
+                                               cell.DataBinding += new EventHandler (OnDataBindField);
                                }
                                else {
                                        btn.Text = Text;
@@ -155,7 +142,7 @@ namespace System.Web.UI.WebControls {
                                base.InitializeCell (cell, cellType, rowState, rowIndex);
                }
                
-               protected virtual void OnDataBindField (object sender, EventArgs e)
+               void OnDataBindField (object sender, EventArgs e)
                {
                        DataControlFieldCell cell = (DataControlFieldCell) sender;
                        DataControlButton btn = (DataControlButton) cell.Controls [0]; 
@@ -168,20 +155,34 @@ namespace System.Web.UI.WebControls {
                {
                        IDataItemContainer dic = controlContainer as IDataItemContainer;
                        if (boundProperty == null) {
-                               ICustomTypeDescriptor desc = dic.DataItem as ICustomTypeDescriptor;
-                               if (desc != null) {
-                                       boundProperty = desc.GetProperties () [DataTextField];
-                                       if (boundProperty != null)
-                                               return boundProperty.GetValue (dic.DataItem);
-                               } else {
-                                       PropertyInfo pi = dic.DataItem.GetType ().GetProperty (DataTextField);
-                                       if (pi != null)
-                                               return pi.GetValue (dic.DataItem, null);
-                               }
-                               throw new InvalidOperationException ("Property '" + DataTextField + "' not found in data bound item");
+                               boundProperty = TypeDescriptor.GetProperties (dic.DataItem) [DataTextField];
+                               if (boundProperty == null)
+                                       new InvalidOperationException ("Property '" + DataTextField + "' not found in object of type " + dic.DataItem.GetType());
                        }
                        return boundProperty.GetValue (dic.DataItem);
                }
+               
+               protected override DataControlField CreateField ()
+               {
+                       return new ButtonField ();
+               }
+               
+               protected override void CopyProperties (DataControlField newField)
+               {
+                       base.CopyProperties (newField);
+                       ButtonField field = (ButtonField) newField;
+                       field.CommandName = CommandName;
+                       field.DataTextField = DataTextField;
+                       field.DataTextFormatString = DataTextFormatString;
+                       field.ImageUrl = ImageUrl;
+                       field.Text = Text;
+               }
+
+               [MonoTODO]
+               public override void ValidateSupportsCallback ()
+               {
+                       throw new NotImplementedException ();
+               }
        }
 }
 #endif