With this patch the EventsTab class exposes the whole needed API, and
implements what is sufficiently documented. Many MonoTODOs still on
board.

Hope it helps!!!

:)

-- 
Rafael "Monoman" Teixeira
---------------------------------------
I'm trying to become a "Rosh Gadol" before my own eyes. 
See http://www.joelonsoftware.com/items/2004/12/06.html for enlightment.
It hurts!
Index: System.Windows.Forms.Design/EventsTab.cs
===================================================================
--- System.Windows.Forms.Design/EventsTab.cs	(revision 44532)
+++ System.Windows.Forms.Design/EventsTab.cs	(working copy)
@@ -21,19 +21,102 @@
 //
 // Authors:
 //	Dennis Hayes ([EMAIL PROTECTED])
+//  Rafael Teixeira ([EMAIL PROTECTED])
 //
 
 // NOT COMPLETE
 
 using System;
+using System.ComponentModel;
+using System.ComponentModel.Design;
 
 namespace System.Windows.Forms.Design
 {
-	public class EventsTab
+	public class EventsTab : PropertyTab
 	{
+		[MonoTODO]
 		public EventsTab()
 		{
-			throw new NotImplementedException ();
 		}
+		
+		private IServiceProvider serviceProvider;
+
+		[MonoTODO]
+		public EventsTab(IServiceProvider serviceProvider)
+		{
+			this.serviceProvider = serviceProvider;
+		}
+
+		[MonoTODO("What value should we return?")]
+		public override string HelpKeyword 
+		{
+			get {
+				return TabName;				
+			}
+		}
+		
+		[MonoTODO("Localization")]
+		public override string TabName 
+		{
+			get {
+				return "Events";
+			}
+		}
+		
+		[MonoTODO("Test")]
+		public override PropertyDescriptorCollection GetProperties(
+			ITypeDescriptorContext context,
+			object component,
+			Attribute[] attributes)
+		{
+			IEventBindingService eventPropertySvc = null;
+			EventDescriptorCollection events;
+			
+			if (serviceProvider != null)
+				eventPropertySvc = (IEventBindingService)
+					serviceProvider.GetService(typeof(IEventBindingService));
+
+			if (eventPropertySvc == null)			 
+				return new PropertyDescriptorCollection(null);
+
+			if (attributes != null)			
+				events = TypeDescriptor.GetEvents(component, attributes);
+			else
+				events = TypeDescriptor.GetEvents(component);
+	 
+			// Return event properties for the event descriptors.
+			return eventPropertySvc.GetEventProperties(events);
+		}
+		
+		public override PropertyDescriptorCollection GetProperties(object component, Attribute[] attributes)
+		{
+			return this.GetProperties(null, component, attributes);
+		}
+		
+		[MonoTODO]
+		public override bool CanExtend(object component)
+		{
+			return false;
+		}
+		
+		[MonoTODO("Test")]
+		public override PropertyDescriptor GetDefaultProperty(object component)
+		{
+			object[] attributes = component.GetType().GetCustomAttributes(typeof(DefaultEventAttribute), true);
+			if (attributes.Length > 0) {
+				DefaultEventAttribute defaultEvent = attributes[0] as DefaultEventAttribute;
+				if (defaultEvent != null && serviceProvider != null) {
+					IEventBindingService eventPropertySvc = (IEventBindingService)
+						serviceProvider.GetService(typeof(IEventBindingService));
+	
+					if (eventPropertySvc == null)
+						foreach (EventDescriptor ed in TypeDescriptor.GetEvents(component))
+							if (ed.Name == defaultEvent.Name)
+								return eventPropertySvc.GetEventProperty(ed);
+				}
+			}	
+			return null;
+		}
+
 	}
 }
Index: System.Windows.Forms.Design/ChangeLog
===================================================================
--- System.Windows.Forms.Design/ChangeLog	(revision 44532)
+++ System.Windows.Forms.Design/ChangeLog	(working copy)
@@ -1,3 +1,6 @@
+2005-05-14  Rafael Teixeira <[EMAIL PROTECTED]>
+	* EventsTab.cs: Implementation start with many gaping holes
+
 2005-05-09  Marek Safar  <[EMAIL PROTECTED]>
 
 	* PropertyTab.cs: Implemented.
_______________________________________________
Mono-winforms-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-winforms-list

Reply via email to