Browse Source

* TemplateControl.cs: corcompare work.

	* ExpressionBindingCollection.cs: same.

	* HierarchicalDataSourceControl.cs: same.

	* PostBackOptions.cs: same.

	* ClientScriptManager.cs: same.

	* FilterableAttribute.cs: same.

	* ControlCollection.cs: same.

	* DataBindingCollection.cs: same.
	
	* PropertyEntry.cs: mark ctor internal.

	* SimpleWebHandlerParser.cs: mark the 2.0 ctor as internal.

	* Page.cs: stub out two Theme oriented 2.0 properties.

	* DataBinder.cs: remove the obsolete attribute on the ctor.

	* TwoWayBoundPropertyEntry.cs: remove this.
	
	* ControlBuilder.cs (BindingContainerType): virtual in 2.0.

	* ThemeProvider: new (stubbed) class.

	* SkinBuilder.cs: same.

	* PageTheme.cs: same.

	* ControlSkin.cs: same.
	
	* ControlSkinProc.cs: rename this to ControlSkinDelegate.cs.
	
	* SimplePropertyEntry.cs: mark ctor as internal.

	* IThemeResolutionService.cs: enable the 3 members of this
	interface.

2006-02-27  Chris Toshok  <[email protected]>


svn path=/trunk/mcs/; revision=57352
Chris Toshok 20 years ago
parent
commit
d19727e2ed

+ 45 - 0
mcs/class/System.Web/System.Web.UI/ChangeLog

@@ -1,3 +1,48 @@
+2006-02-27  Chris Toshok  <[email protected]>
+
+	* TemplateControl.cs: corcompare work.
+
+	* ExpressionBindingCollection.cs: same.
+
+	* HierarchicalDataSourceControl.cs: same.
+
+	* PostBackOptions.cs: same.
+
+	* ClientScriptManager.cs: same.
+
+	* FilterableAttribute.cs: same.
+
+	* ControlCollection.cs: same.
+
+	* DataBindingCollection.cs: same.
+	
+	* PropertyEntry.cs: mark ctor internal.
+
+	* SimpleWebHandlerParser.cs: mark the 2.0 ctor as internal.
+
+	* Page.cs: stub out two Theme oriented 2.0 properties.
+
+	* DataBinder.cs: remove the obsolete attribute on the ctor.
+
+	* TwoWayBoundPropertyEntry.cs: remove this.
+	
+	* ControlBuilder.cs (BindingContainerType): virtual in 2.0.
+
+	* ThemeProvider: new (stubbed) class.
+
+	* SkinBuilder.cs: same.
+
+	* PageTheme.cs: same.
+
+	* ControlSkin.cs: same.
+	
+	* ControlSkinProc.cs: rename this to ControlSkinDelegate.cs.
+	
+	* SimplePropertyEntry.cs: mark ctor as internal.
+
+	* IThemeResolutionService.cs: enable the 3 members of this
+	interface.
+
 2006-02-27  Chris Toshok  <[email protected]>
 
 	* ListSourceHelper.cs: this class is static.

+ 3 - 2
mcs/class/System.Web/System.Web.UI/ClientScriptManager.cs

@@ -58,12 +58,13 @@ namespace System.Web.UI
 			this.page = page;
 		}
 
-		[Obsolete ("Use GetPostBackEventReference instead")]
+#if !NET_2_0
 		public string GetPostBackClientEvent (Control control, string argument)
 		{
 			return GetPostBackEventReference (control, argument);
 		}
-	
+#endif
+
 		public string GetPostBackClientHyperlink (Control control, string argument)
 		{
 			return "javascript:" + GetPostBackEventReference (control, argument);

+ 1 - 1
mcs/class/System.Web/System.Web.UI/ControlBuilder.cs

@@ -155,7 +155,7 @@ namespace System.Web.UI {
 		}
 
 #if NET_2_0
-		public
+		public virtual
 #else
 		internal
 #endif

+ 15 - 3
mcs/class/System.Web/System.Web.UI/ControlCollection.cs

@@ -51,7 +51,11 @@ namespace System.Web.UI {
 			this.owner = owner;
 		}
 
-		public int Count {
+		public
+#if NET_2_0
+		virtual
+#endif
+		int Count {
 			get { return count; }
 		}
 
@@ -155,7 +159,11 @@ namespace System.Web.UI {
 			return (controls != null && Array.IndexOf (controls, c) != -1);
 		}
 
-		public void CopyTo (Array array, int index)
+		public
+#if NET_2_0
+		virtual
+#endif
+		void CopyTo (Array array, int index)
 		{
 			if (controls == null)
 				return;
@@ -178,7 +186,11 @@ namespace System.Web.UI {
 				array.SetValue (controls [i], i);
 		}
 
-		public IEnumerator GetEnumerator ()
+		public
+#if NET_2_0
+		virtual
+#endif
+		IEnumerator GetEnumerator ()
 		{
 			return new SimpleEnumerator (this);
 		}

+ 24 - 26
mcs/class/System.Web/System.Web.UI/TwoWayBoundPropertyEntry.cs → mcs/class/System.Web/System.Web.UI/ControlSkin.cs

@@ -1,12 +1,10 @@
 //
-// System.Web.UI.TwoWayBoundPropertyEntry
+// System.Web.UI.ControlSkin.cs
 //
 // Authors:
-//	Gonzalo Paniagua Javier (gonzalo@ximian.com)
+//   Chris Toshok (toshok@ximian.com)
 //
-// Copyright (c) 2005 Novell, Inc (http://www.novell.com)
-//
-
+// (C) 2006 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
@@ -27,35 +25,35 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+
 #if NET_2_0
-namespace System.Web.UI
-{
-	public class TwoWayBoundPropertyEntry : BoundPropertyEntry {
-		string controlID;
-		Type controlType;
-		string fieldName;
-		string formatString;
 
-		public string ControlID {
-			get { return controlID; }
-			set { controlID = value; }
-		}
+using System.ComponentModel;
 
-		public Type ControlType {
-			get { return controlType; }
-			set { controlType = value; }
+namespace System.Web.UI {
+
+	[EditorBrowsable (EditorBrowsableState.Advanced)]
+	public class ControlSkin
+	{
+		Type controlType;
+		ControlSkinDelegate themeDelegate;
+
+		public ControlSkin (Type controlType, ControlSkinDelegate themeDelegate)
+		{
+			this.controlType = controlType;
+			this.themeDelegate = themeDelegate;
 		}
 
-		public string FieldName {
-			get { return fieldName; }
-			set { fieldName = value; }
+		public void ApplySkin (Control control)
+		{
+			themeDelegate (control);
 		}
 
-		public string FormatString {
-			get { return formatString; }
-			set { formatString = value; }
+		public Type ControlType {
+			get { return controlType; }
 		}
 	}
+
 }
-#endif // NET_2_0
 
+#endif

+ 4 - 3
mcs/class/System.Web/System.Web.UI/ControlSkinProc.cs → mcs/class/System.Web/System.Web.UI/ControlSkinDelegate.cs

@@ -1,5 +1,5 @@
 //
-// System.Web.UI.ControlSkinProc.cs
+// System.Web.UI.ControlSkinDelegate.cs
 //
 // Author:
 //   Sanjay Gupta <[email protected]>
@@ -31,11 +31,12 @@
 
 #if NET_2_0
 using System;
-using System.Web;
+using System.ComponentModel;
 
 namespace System.Web.UI
 {
-        public delegate Control ControlSkinProc (Control control);
+	[EditorBrowsable (EditorBrowsableState.Advanced)]
+        public delegate Control ControlSkinDelegate (Control control);
 }
 
 #endif

+ 0 - 3
mcs/class/System.Web/System.Web.UI/DataBinder.cs

@@ -38,9 +38,6 @@ namespace System.Web.UI {
 	// CAS - no InheritanceDemand here as the class is sealed
 	[AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
 	public sealed class DataBinder {
-#if NET_2_0
-		[Obsolete]
-#endif
 		public DataBinder ()
 		{
 		}

+ 1 - 5
mcs/class/System.Web/System.Web.UI/DataBindingCollection.cs

@@ -120,14 +120,10 @@ namespace System.Web.UI {
 		}
 
 		public event EventHandler Changed;
-
-		public
 #else
 		internal event EventHandler Changed;
-
-		internal
 #endif
-		void RaiseChanged ()
+		internal void RaiseChanged ()
 		{
 			if (Changed != null)
 				Changed (this, EventArgs.Empty);

+ 3 - 3
mcs/class/System.Web/System.Web.UI/ExpressionBindingCollection.cs

@@ -61,8 +61,8 @@ namespace System.Web.UI {
             		get { return list [propertyName] as ExpressionBinding; }
         	}
 
-		public string [] RemovedBindings {
-			get { return (string []) removed.ToArray (typeof (string)); }
+		public ICollection RemovedBindings {
+			get { return removed; }
 		}
 
 		public object SyncRoot {
@@ -133,7 +133,7 @@ namespace System.Web.UI {
 
         	public event EventHandler Changed;
 
-        	protected void OnChanged (EventArgs e)   
+        	void OnChanged (EventArgs e)   
         	{
             		if (Changed != null)
                 		Changed (this, e);

+ 1 - 16
mcs/class/System.Web/System.Web.UI/FilterableAttribute.cs

@@ -33,10 +33,9 @@ using System.ComponentModel;
 
 namespace System.Web.UI {
 	[AttributeUsage (AttributeTargets.Class | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
-	public sealed class FilterableAttribute : Attribute, IDisposable 
+	public sealed class FilterableAttribute : Attribute
 	{
 		private bool filterable;
-		private bool dispose;
 
 		public FilterableAttribute (bool filterable) 
 		{
@@ -53,20 +52,6 @@ namespace System.Web.UI {
 			get { return filterable; } 
 		}
 
-		public void Dispose ()
-		{
-			Dispose (true);
-			GC.SuppressFinalize (this);
-		}
-		
-		private void Dispose (bool disposing)
-		{
-			if (!this.dispose) {
-				//Do nothing
-				this.dispose = true;
-			}
-		}
-
 		public override bool Equals (object obj)
 		{
 			if (obj != null && obj is FilterableAttribute) {

+ 20 - 10
mcs/class/System.Web/System.Web.UI/HierarchicalDataSourceControl.cs

@@ -38,10 +38,10 @@ using System.ComponentModel;
 
 namespace System.Web.UI
 {
-	[NonVisualControlAttribute]
-	[DesignerAttribute ("System.Web.UI.Design.HierarchicalDataSourceDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
-//	[ControlBuilderAttribute (typeof(DataSourceControlBuilder))]
-	[BindableAttribute (false)]
+	[NonVisualControlAttribute]
+	[DesignerAttribute ("System.Web.UI.Design.HierarchicalDataSourceDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
+	[ControlBuilderAttribute (typeof(DataSourceControlBuilder))]
+	[BindableAttribute (false)]
 	public abstract class HierarchicalDataSourceControl : Control, IHierarchicalDataSource
 	{
 		static object dataSourceChanged = new object ();
@@ -50,26 +50,32 @@ namespace System.Web.UI
 		{
 		}
 		
-		protected virtual HierarchicalDataSourceView GetHierarchicalView (string viewPath)
-		{
-			return null;
-		}
+		protected abstract HierarchicalDataSourceView GetHierarchicalView (string viewPath);
 		
 		HierarchicalDataSourceView IHierarchicalDataSource.GetHierarchicalView (string viewPath)
 		{
-			return this.GetHierarchicalView (viewPath);
+			return GetHierarchicalView (viewPath);
 		}
-		
+
+		[Browsable (false)]
+		[DefaultValue (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override bool EnableTheming {
 			get { return false; }
 			set { throw new NotSupportedException (); }
 		}
 		
+		[Browsable (false)]
+		[DefaultValue ("")]
+		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override string SkinID {
 			get { return string.Empty; }
 			set { throw new NotSupportedException (); }
 		}
 		
+		[Browsable (false)]
+		[DefaultValue (false)]
+		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override bool Visible { 
 			get { return false; }
 			set { throw new NotSupportedException (); }
@@ -80,17 +86,20 @@ namespace System.Web.UI
 			return new EmptyControlCollection (this);
 		}
 		
+		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override Control FindControl (string id)
 		{
 			if (id == ID) return this;
 			else return null;
 		}
 		
+		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override bool HasControls ()
 		{
 			return false;
 		}
 		
+		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override void Focus ()
 		{
 			throw new NotSupportedException ();
@@ -108,6 +117,7 @@ namespace System.Web.UI
 				eh (this, e);
 		}
 		
+		[EditorBrowsable (EditorBrowsableState.Never)]
 		public override void RenderControl (HtmlTextWriter writer)
 		{
 			// nop

+ 3 - 3
mcs/class/System.Web/System.Web.UI/IThemeResolutionService.cs

@@ -36,9 +36,9 @@ namespace System.Web.UI
 {
 	public interface IThemeResolutionService
 	{
-		//ThemeProvider [] GetAllThemeProviders ();
-		//ThemeProvider GetStylesheetThemeProvider ();
-		//ThemeProvider GetThemeProvider ();
+		ThemeProvider [] GetAllThemeProviders ();
+		ThemeProvider GetStylesheetThemeProvider ();
+		ThemeProvider GetThemeProvider ();
 	}
 }
 #endif

+ 19 - 0
mcs/class/System.Web/System.Web.UI/Page.cs

@@ -453,6 +453,25 @@ public class Page : TemplateControl, IHttpHandler
 		set { _smartNavigation = value; }
 	}
 
+#if NET_2_0
+	[MonoTODO]
+	[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+	[Filterable (false)]
+	[Browsable (false)]
+	public virtual string StyleSheetTheme {
+		get { throw new NotImplementedException (); }
+		set { throw new NotImplementedException (); }
+	}
+
+	[MonoTODO]
+	[Browsable (false)]
+	[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+	public virtual string Theme {
+		get { throw new NotImplementedException (); }
+		set { throw new NotImplementedException (); }
+	}
+#endif
+
 #if NET_2_0
 	[Localizable (true)] 
 	[Bindable (true)] 

+ 116 - 0
mcs/class/System.Web/System.Web.UI/PageTheme.cs

@@ -0,0 +1,116 @@
+//
+// System.Web.UI.PageTheme.cs
+//
+// Authors:
+//   Chris Toshok ([email protected])
+//
+// (C) 2006 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
+// "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.
+//
+
+#if NET_2_0
+
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Xml;
+
+namespace System.Web.UI {
+
+	[EditorBrowsable (EditorBrowsableState.Advanced)]
+	public abstract class PageTheme
+	{
+		protected PageTheme ()
+		{
+		}
+
+		[MonoTODO]
+		public static object CreateSkinKey (Type controlType, string skinID)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected object Eval (string expression)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected string Eval (string expression, string format)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public bool TestDeviceFilter (string deviceFilterName)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected object XPath (string xPathExpression)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected object XPath (string xPathExpression, IXmlNamespaceResolver resolver)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected string XPath (string xPathExpression, string format)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected string XPath (string xPathExpression, string format, IXmlNamespaceResolver resolver)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected IEnumerable XPathSelect (string xPathExpression)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		protected IEnumerable XPathSelect (string xPathExpression, IXmlNamespaceResolver resolver)
+		{
+			throw new NotImplementedException ();
+		}
+
+		protected abstract string AppRelativeTemplateSourceDirectory { get; }
+		protected abstract IDictionary ControlSkins { get; }
+		protected abstract string[] LinkedStyleSheets { get; }
+
+		[MonoTODO]
+		protected Page Page {
+			get { throw new NotImplementedException (); }
+		}
+	}
+}
+
+#endif

+ 10 - 1
mcs/class/System.Web/System.Web.UI/PostBackOptions.cs

@@ -29,6 +29,7 @@
 
 #if NET_2_0
 using System;
+using System.ComponentModel;
 
 namespace System.Web.UI
 {
@@ -69,49 +70,57 @@ namespace System.Web.UI
 			this.validationGroup = validatingGroup;
 		}
 
+		[DefaultValue ("")]
 		public string ActionUrl {
 			get { return actionUrl;	}
 			set { actionUrl = value; }
 		}
 
+		[DefaultValue ("")]
 		public string Argument {
 			get { return  argument;	}
 			set { argument = value; }
 		}
 
 		[MonoTODO ("Implement support for this in Page")]
+		[DefaultValue (false)]
 		public bool AutoPostBack {
 			get { return autoPostBack; }
 			set { autoPostBack = value; }
 		}
 
+		[DefaultValue (true)]
 		public bool ClientSubmit {
 			get { return clientSubmit; }
 			set { clientSubmit = value; }
 		}
 		
+		[DefaultValue (false)]
 		public bool PerformValidation {
 			get { return performValidation;	}
 			set { performValidation = value; }
 		}
 
+		[DefaultValue (true)]
 		public bool RequiresJavaScriptProtocol {
 			get { return requiresJavaScriptProtocol; }
 			set { requiresJavaScriptProtocol = value; }
 		}
 
+		[DefaultValue (null)]
 		public Control TargetControl {
 			get { return control; }
-			set { control = value; }
 		}
 
 		[MonoTODO ("Implement support for this in Page")]
+		[DefaultValue (false)]
 		public bool TrackFocus {
 			get { return trackFocus; }
 			set { trackFocus = value; }
 		}
 
 		[MonoTODO ("Implement support for this in Page")]
+		[DefaultValue ("")]
 		public string ValidationGroup {
 			get { return validationGroup; }
 			set { validationGroup = value; }

+ 2 - 0
mcs/class/System.Web/System.Web.UI/PropertyEntry.cs

@@ -39,6 +39,8 @@ namespace System.Web.UI
 		string filter;
 		PropertyInfo pinfo;
 
+		internal PropertyEntry () { }
+
 		public Type DeclaringType {
 			get { return pinfo.DeclaringType; }
 		}

+ 2 - 0
mcs/class/System.Web/System.Web.UI/SimplePropertyEntry.cs

@@ -34,6 +34,8 @@ namespace System.Web.UI
 		bool useSetAttribute;
 		object val;
 
+		internal SimplePropertyEntry () { }
+
 		public bool UseSetAttribute {
 			get { return useSetAttribute; }
 			set { useSetAttribute = value; }

+ 1 - 1
mcs/class/System.Web/System.Web.UI/SimpleWebHandlerParser.cs

@@ -103,7 +103,7 @@ namespace System.Web.UI
 			GetDirectivesAndContent ();
 		}
 #if NET_2_0
-		protected SimpleWebHandlerParser (HttpContext context, string virtualPath, string physicalPath, TextReader reader)
+		internal SimpleWebHandlerParser (HttpContext context, string virtualPath, string physicalPath, TextReader reader)
 			: this (context, virtualPath, physicalPath)
 		{
 			this.reader = reader;

+ 60 - 0
mcs/class/System.Web/System.Web.UI/SkinBuilder.cs

@@ -0,0 +1,60 @@
+//
+// System.Web.UI.SkinBuilder.cs
+//
+// Authors:
+//   Chris Toshok ([email protected])
+//
+// (C) 2006 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
+// "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.
+//
+
+#if NET_2_0
+
+namespace System.Web.UI {
+
+	public sealed class SkinBuilder : ControlBuilder
+	{
+		ThemeProvider provider;
+		Control control;
+		ControlBuilder skinBuilder;
+		string themePath;
+
+		public SkinBuilder (ThemeProvider provider,
+				    Control control,
+				    ControlBuilder skinBuilder,
+				    string themePath)
+		{
+			this.provider = provider;
+			this.control = control;
+			this.skinBuilder = skinBuilder;
+			this.themePath = themePath;
+		}
+
+		[MonoTODO]
+		public Control ApplyTheme ()
+		{
+			return control;
+		}
+	}
+
+}
+
+#endif

+ 10 - 3
mcs/class/System.Web/System.Web.UI/TemplateControl.cs

@@ -73,6 +73,9 @@ namespace System.Web.UI {
 
 		#region Properties
 		[EditorBrowsable (EditorBrowsableState.Never)]
+#if NET_2_0
+		[Obsolete]
+#endif
 		protected virtual int AutoHandlers {
 			get { return 0; }
 			set { }
@@ -231,7 +234,11 @@ namespace System.Web.UI {
 		}
 
 		[EditorBrowsable (EditorBrowsableState.Never)]
-		public static object ReadStringResource ()
+		public 
+#if !NET_2_0
+		static
+#endif
+		object ReadStringResource ()
 		{
 			throw new NotSupportedException ();
 		}
@@ -331,7 +338,7 @@ namespace System.Web.UI {
 			return DataBinder.Eval (CurrentDataItem, expression);
 		}
 	
-		protected object Eval (string expression, string format)
+		protected string Eval (string expression, string format)
 		{
 			return DataBinder.Eval (CurrentDataItem, expression, format);
 		}
@@ -341,7 +348,7 @@ namespace System.Web.UI {
 			return XPathBinder.Eval (CurrentDataItem, xpathexpression);
 		}
 	
-		protected object XPath (string xpathexpression, string format)
+		protected string XPath (string xpathexpression, string format)
 		{
 			return XPathBinder.Eval (CurrentDataItem, xpathexpression, format);
 		}

+ 97 - 0
mcs/class/System.Web/System.Web.UI/ThemeProvider.cs

@@ -0,0 +1,97 @@
+//
+// System.Web.UI.ThemeProvider.cs
+//
+// Authors:
+//   Chris Toshok ([email protected])
+//
+// (C) 2006 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
+// "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.
+//
+
+#if NET_2_0
+
+using System.Collections;
+using System.Collections.Specialized;
+using System.ComponentModel;
+using System.ComponentModel.Design;
+
+namespace System.Web.UI {
+
+	public sealed class ThemeProvider
+	{
+		IDesignerHost host;
+		string name;
+		string themeDefinition;
+		string[] cssFiles;
+		string themePath;
+
+		public ThemeProvider (IDesignerHost host,
+				      string name,
+				      string themeDefinition,
+				      string[] cssFiles,
+				      string themePath)
+		{
+			this.host = host;
+			this.name = name;
+			this.themeDefinition = themeDefinition;
+			this.cssFiles = cssFiles; /* XXX copy? */
+			this.themePath = themePath;
+		}
+
+		[MonoTODO]
+		public SkinBuilder GetSkinBuilder (Control control)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public IDictionary GetSkinControlBuildersForControlType (Type type)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public ICollection GetSkinsForControl (Type type)
+		{
+			throw new NotImplementedException ();
+		}
+
+		[MonoTODO]
+		public int ContentHashCode {
+			get { throw new NotImplementedException (); }
+		}
+
+		public ICollection CssFiles {
+			get { return cssFiles; }
+		}
+
+		public IDesignerHost DesignerHost {
+			get { return host; }
+		}
+
+		public string ThemeName {
+			get { return name; }
+		}
+	}
+
+}
+
+#endif

+ 5 - 3
mcs/class/System.Web/System.Web.dll.sources

@@ -456,7 +456,8 @@ System.Web.UI/ControlBuilder.cs
 System.Web.UI/ControlCachePolicy.cs
 System.Web.UI/ControlCollection.cs
 System.Web.UI/Control.cs
-System.Web.UI/ControlSkinProc.cs
+System.Web.UI/ControlSkin.cs
+System.Web.UI/ControlSkinDelegate.cs
 System.Web.UI/ControlValuePropertyAttribute.cs
 System.Web.UI/CssStyleCollection.cs
 System.Web.UI/DataBinder.cs
@@ -579,6 +580,7 @@ System.Web.UI/Page.cs
 System.Web.UI/PageHandlerFactory.cs
 System.Web.UI/PageParser.cs
 System.Web.UI/PageStatePersister.cs
+System.Web.UI/PageTheme.cs
 System.Web.UI/Pair.cs
 System.Web.UI/ParseChildrenAttribute.cs
 System.Web.UI/PartialCachingAttribute.cs
@@ -594,6 +596,7 @@ System.Web.UI/RootBuilder.cs
 System.Web.UI/SimpleHandlerFactory.cs
 System.Web.UI/SimplePropertyEntry.cs
 System.Web.UI/SimpleWebHandlerParser.cs
+System.Web.UI/SkinBuilder.cs
 System.Web.UI/StateBag.cs
 System.Web.UI/StateItem.cs
 System.Web.UI/StateManagedCollection.cs
@@ -602,15 +605,14 @@ System.Web.UI/SupportsEventValidationAttribute.cs
 System.Web.UI/TagPrefixAttribute.cs
 System.Web.UI/TemplateBuilder.cs
 System.Web.UI/TemplateContainerAttribute.cs
-System.Web.UI/TemplateContentType.cs
 System.Web.UI/TemplateControl.cs
 System.Web.UI/TemplateControlParser.cs
 System.Web.UI/TemplateInstance.cs
 System.Web.UI/TemplateParser.cs
 System.Web.UI/ThemeableAttribute.cs
+System.Web.UI/ThemeProvider.cs
 System.Web.UI/ToolboxDataAttribute.cs
 System.Web.UI/Triplet.cs
-System.Web.UI/TwoWayBoundPropertyEntry.cs
 System.Web.UI/UrlPropertyAttribute.cs
 System.Web.UI/UserControlControlBuilder.cs
 System.Web.UI/UserControl.cs