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;
|
|
}
|
|
}
|
|
}
|
|
}
|