91 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Collections;
 | 
						|
using System.Web.UI;
 | 
						|
using System.Web.UI.Design;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.ComponentModel.Design;
 | 
						|
using System.Data;
 | 
						|
using System.Drawing;
 | 
						|
using System.Text;
 | 
						|
using System.Windows.Forms;
 | 
						|
 | 
						|
namespace Csla.Web.Design
 | 
						|
{
 | 
						|
  /// <summary>
 | 
						|
  /// CslaDataSource configuration form.
 | 
						|
  /// </summary>
 | 
						|
  public partial class CslaDataSourceConfiguration : Form
 | 
						|
  {
 | 
						|
    private DataSourceControl _control;
 | 
						|
 | 
						|
    /// <summary>
 | 
						|
    /// Create instance of object.
 | 
						|
    /// </summary>
 | 
						|
    public CslaDataSourceConfiguration()
 | 
						|
    {
 | 
						|
      InitializeComponent();
 | 
						|
    }
 | 
						|
 | 
						|
    /// <summary>
 | 
						|
    /// Create instance of object.
 | 
						|
    /// </summary>
 | 
						|
    /// <param name="control">Reference to the data source control.</param>
 | 
						|
    /// <param name="oldTypeName">Existing type name.</param>
 | 
						|
    public CslaDataSourceConfiguration(DataSourceControl control, string oldTypeName)
 | 
						|
      : this()
 | 
						|
    {
 | 
						|
      _control = control;
 | 
						|
      DiscoverTypes();
 | 
						|
      this.TypeComboBox.Text = oldTypeName;
 | 
						|
    }
 | 
						|
 | 
						|
    /// <summary>
 | 
						|
    /// Gets the type name entered by the user.
 | 
						|
    /// </summary>
 | 
						|
    public string TypeName
 | 
						|
    {
 | 
						|
      get { return this.TypeComboBox.Text; }
 | 
						|
    }
 | 
						|
 | 
						|
    private void DiscoverTypes()
 | 
						|
    {
 | 
						|
      // try to get a reference to the type discovery service
 | 
						|
      ITypeDiscoveryService discovery = null;
 | 
						|
      if (_control.Site != null)
 | 
						|
        discovery = (ITypeDiscoveryService)_control.Site.GetService(typeof(ITypeDiscoveryService));
 | 
						|
 | 
						|
      if (discovery != null)
 | 
						|
      {
 | 
						|
        // saves the cursor and sets the wait cursor
 | 
						|
        Cursor previousCursor = Cursor.Current;
 | 
						|
        Cursor.Current = Cursors.WaitCursor;
 | 
						|
        try
 | 
						|
        {
 | 
						|
          // gets all types using the type discovery service
 | 
						|
          ICollection types = discovery.GetTypes(typeof(object), true);
 | 
						|
          TypeComboBox.BeginUpdate();
 | 
						|
          TypeComboBox.Items.Clear();
 | 
						|
          // adds the types to the list
 | 
						|
          foreach (Type type in types)
 | 
						|
          {
 | 
						|
            if (type.Assembly.FullName.Substring(0, type.Assembly.FullName.IndexOf(",")) != "Csla" &&
 | 
						|
              typeof(Csla.Core.IBusinessObject).IsAssignableFrom(type))
 | 
						|
            {
 | 
						|
              string name = type.AssemblyQualifiedName;
 | 
						|
              if (name.Substring(name.Length - 19, 19) == "PublicKeyToken=null")
 | 
						|
                name = name.Substring(0, name.IndexOf(",", name.IndexOf(",") + 1));
 | 
						|
              TypeComboBox.Items.Add(name);
 | 
						|
            }
 | 
						|
          }
 | 
						|
        }
 | 
						|
        finally
 | 
						|
        {
 | 
						|
          Cursor.Current = previousCursor;
 | 
						|
          TypeComboBox.EndUpdate();
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
  }
 | 
						|
} |