[asp.net] use auto-generated backing fields for all properties
[mono.git] / mcs / class / System.Web / System.Web.UI / TemplateBuilder.cs
index be5a3cf901c107b8fd5ddf9f2178c9741868d4ef..085ae900ff83ffc4e525721a7c54fbc331a88313 100644 (file)
@@ -5,7 +5,7 @@
 //     Gonzalo Paniagua Javier (gonzalo@ximian.com)
 //
 // (C) 2003 Ximian, Inc. (http://www.ximian.com)
-// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2005-2010 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 //
 
 using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
 using System.Reflection;
 using System.Security.Permissions;
-#if NET_2_0
-using System.ComponentModel;
-#endif
 
 namespace System.Web.UI {
 
@@ -43,9 +42,8 @@ namespace System.Web.UI {
 
                string text;
                TemplateContainerAttribute containerAttribute;
-#if NET_2_0
-               ArrayList bindings;
-#endif
+               TemplateInstanceAttribute instanceAttribute;
+               List <TemplateBinding> bindings;
 
                public TemplateBuilder ()
                {
@@ -53,10 +51,13 @@ namespace System.Web.UI {
 
                internal TemplateBuilder (ICustomAttributeProvider prov)
                {
-                       object[] ats = prov.GetCustomAttributes (typeof(TemplateContainerAttribute), true);
-                       if (ats.Length > 0) {
+                       object[] ats = prov.GetCustomAttributes (typeof (TemplateContainerAttribute), true);
+                       if (ats.Length > 0)
                                containerAttribute = (TemplateContainerAttribute) ats [0];
-                       }
+
+                       ats = prov.GetCustomAttributes (typeof (TemplateInstanceAttribute), true);
+                       if (ats.Length > 0)
+                               instanceAttribute = (TemplateInstanceAttribute) ats [0];
                }
 
                public virtual string Text {
@@ -68,14 +69,18 @@ namespace System.Web.UI {
                        get { return containerAttribute != null ? containerAttribute.ContainerType : null; }
                }
                
-#if NET_2_0
+               internal TemplateInstance? TemplateInstance {
+                       get { return instanceAttribute != null ? instanceAttribute.Instances : (TemplateInstance?)null; }
+               }
+                                       
                internal BindingDirection BindingDirection {
-                       get { return containerAttribute != null ? containerAttribute.BindingDirection : BindingDirection.OneWay; }
+                       get { return containerAttribute != null ? containerAttribute.BindingDirection : BindingDirection.TwoWay; }
                }
                
                internal void RegisterBoundProperty (Type controlType, string controlProperty, string controlId, string fieldName)
                {
-                       if (bindings == null) bindings = new ArrayList ();
+                       if (bindings == null)
+                               bindings = new List <TemplateBinding> ();
                        bindings.Add (new TemplateBinding (controlType, controlProperty, controlId, fieldName));
                }
                
@@ -87,7 +92,6 @@ namespace System.Web.UI {
                {
                        return base.BuildObject ();
                }
-#endif
 
                public override void Init (TemplateParser parser,
                                          ControlBuilder parentBuilder,
@@ -97,6 +101,8 @@ namespace System.Web.UI {
                                          IDictionary attribs)
                {
                        // enough?
+                       if (parser != null)
+                               FileName = parser.InputFile;
                        base.Init (parser, parentBuilder, type, tagName, ID, attribs);
                }
                
@@ -116,7 +122,6 @@ namespace System.Web.UI {
                }
        }
        
-#if NET_2_0
        internal class TemplateBinding
        {
                public Type ControlType;
@@ -132,6 +137,5 @@ namespace System.Web.UI {
                        FieldName = fieldName;
                }
        }
-#endif
 }