165 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Web.UI;
 | |
| using System.Web.UI.Design;
 | |
| using System.ComponentModel;
 | |
| using System.Windows.Forms.Design;
 | |
| using Csla.Web;
 | |
| 
 | |
| namespace Csla.Web.Design
 | |
| {
 | |
|   /// <summary>
 | |
|   /// Implements designer support for CslaDataSource.
 | |
|   /// </summary>
 | |
|   public class CslaDataSourceDesigner : DataSourceDesigner
 | |
|   {
 | |
| 
 | |
|     private DataSourceControl _control = null;
 | |
|     private CslaDesignerDataSourceView _view = null;
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Initialize the designer component.
 | |
|     /// </summary>
 | |
|     /// <param name="component">The CslaDataSource control to 
 | |
|     /// be designed.</param>
 | |
|     public override void Initialize(IComponent component)
 | |
|     {
 | |
|       base.Initialize(component);
 | |
|       _control = (DataSourceControl)component;
 | |
|     }
 | |
| 
 | |
|     internal System.ComponentModel.ISite Site
 | |
|     {
 | |
|       get
 | |
|       {
 | |
|         return _control.Site;
 | |
|       }
 | |
|     }
 | |
|     /// <summary>
 | |
|     /// Returns the default view for this designer.
 | |
|     /// </summary>
 | |
|     /// <param name="viewName">Ignored</param>
 | |
|     /// <returns></returns>
 | |
|     /// <remarks>
 | |
|     /// This designer supports only a "Default" view.
 | |
|     /// </remarks>
 | |
|     public override DesignerDataSourceView GetView(string viewName)
 | |
|     {
 | |
|       if (_view == null)
 | |
|       {
 | |
|         _view = new CslaDesignerDataSourceView(this, "Default");
 | |
|       }
 | |
|       return _view;
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Return a list of available views.
 | |
|     /// </summary>
 | |
|     /// <remarks>
 | |
|     /// This designer supports only a "Default" view.
 | |
|     /// </remarks>
 | |
|     public override string[] GetViewNames()
 | |
|     {
 | |
|       return new string[] { "Default" };
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Refreshes the schema for the data.
 | |
|     /// </summary>
 | |
|     /// <param name="preferSilent"></param>
 | |
|     /// <remarks></remarks>
 | |
|     public override void RefreshSchema(bool preferSilent)
 | |
|     {
 | |
|       this.OnSchemaRefreshed(EventArgs.Empty);
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Get a value indicating whether the control can
 | |
|     /// refresh its schema.
 | |
|     /// </summary>
 | |
|     public override bool CanRefreshSchema
 | |
|     {
 | |
|       get
 | |
|       {
 | |
|         return true;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Invoke the design time configuration
 | |
|     /// support provided by the control.
 | |
|     /// </summary>
 | |
|     public override void Configure()
 | |
|     {
 | |
|       InvokeTransactedChange(_control, ConfigureCallback, null, "ConfigureDataSource");
 | |
|     }
 | |
| 
 | |
|     private bool ConfigureCallback(object context)
 | |
|     {
 | |
|       bool result = false;
 | |
| 
 | |
|       string oldTypeName;
 | |
|       if (string.IsNullOrEmpty(((CslaDataSource)DataSourceControl).TypeAssemblyName))
 | |
|         oldTypeName = ((CslaDataSource)DataSourceControl).TypeName;
 | |
|       else
 | |
|         oldTypeName = string.Format("{0}, {1}", 
 | |
|           ((CslaDataSource)DataSourceControl).TypeName, ((CslaDataSource)DataSourceControl).TypeAssemblyName);
 | |
| 
 | |
|       IUIService uiService = (IUIService)_control.Site.GetService(typeof(IUIService));
 | |
|       CslaDataSourceConfiguration cfg = new CslaDataSourceConfiguration(_control, oldTypeName);
 | |
|       if (uiService.ShowDialog(cfg) == System.Windows.Forms.DialogResult.OK)
 | |
|       {
 | |
|         SuppressDataSourceEvents();
 | |
|         try
 | |
|         {
 | |
|           ((CslaDataSource)DataSourceControl).TypeAssemblyName = string.Empty;
 | |
|           ((CslaDataSource)DataSourceControl).TypeName = cfg.TypeName;
 | |
|           OnDataSourceChanged(EventArgs.Empty);
 | |
|           result = true;
 | |
|         }
 | |
|         finally
 | |
|         {
 | |
|           ResumeDataSourceEvents();
 | |
|         }
 | |
|       }
 | |
|       cfg.Dispose();
 | |
|       return result;
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Get a value indicating whether this control
 | |
|     /// supports design time configuration.
 | |
|     /// </summary>
 | |
|     public override bool CanConfigure
 | |
|     {
 | |
|       get
 | |
|       {
 | |
|         return true;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Get a value indicating whether the control can
 | |
|     /// be resized.
 | |
|     /// </summary>
 | |
|     public override bool AllowResize
 | |
|     {
 | |
|       get
 | |
|       {
 | |
|         return false;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// Get a reference to the CslaDataSource control being
 | |
|     /// designed.
 | |
|     /// </summary>
 | |
|     internal CslaDataSource DataSourceControl
 | |
|     {
 | |
|       get
 | |
|       {
 | |
|         return (CslaDataSource)_control;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 |