// 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 {
string text;
TemplateContainerAttribute containerAttribute;
-#if NET_2_0
- ArrayList bindings;
-#endif
+ TemplateInstanceAttribute instanceAttribute;
+ List <TemplateBinding> bindings;
public TemplateBuilder ()
{
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 {
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));
}
get { return bindings; }
}
- [MonoTODO ("why override?")]
public override object BuildObject ()
{
return base.BuildObject ();
}
-#endif
public override void Init (TemplateParser parser,
ControlBuilder parentBuilder,
IDictionary attribs)
{
// enough?
+ if (parser != null)
+ FileName = parser.InputFile;
base.Init (parser, parentBuilder, type, tagName, ID, attribs);
}
}
}
-#if NET_2_0
internal class TemplateBinding
{
public Type ControlType;
FieldName = fieldName;
}
}
-#endif
}