EntityDataSourceStatementEditor.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataWebControlsDesign / System / Data / WebControls / Design / EntityDataSourceStatementEditor.cs / 3 / EntityDataSourceStatementEditor.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner       [....]
// @backupOwner [....] 
//--------------------------------------------------------------------- 
using System.Collections.Generic;
using System.ComponentModel; 
using System.ComponentModel.Design;
using System.Web.UI.Design.WebControls.Util;
using System.Diagnostics;
using System.Drawing.Design; 
using System.Web.UI;
using System.Web.UI.Design; 
using System.Web.UI.WebControls; 
using System.Windows.Forms;
 
namespace System.Web.UI.Design.WebControls
{
    internal class EntityDataSourceStatementEditor : UITypeEditor
    { 
        private bool EditQueryChangeCallback(object pair)
        { 
            // pair.First is a wrapper that contains the EntityDataSource instance and property name being edited 
            // pair.Second contains the value of the property being edited
            ITypeDescriptorContext context = (ITypeDescriptorContext)((Pair)pair).First; 
            string value = (string)((Pair)pair).Second;

            EntityDataSource entityDataSource = (EntityDataSource)context.Instance;
            IServiceProvider serviceProvider = entityDataSource.Site; 

            IDesignerHost designerHost = (IDesignerHost)serviceProvider.GetService(typeof(IDesignerHost)); 
            Debug.Assert(designerHost != null, "Did not get DesignerHost service."); 

            EntityDataSourceDesigner designer = (EntityDataSourceDesigner)designerHost.GetDesigner(entityDataSource); 

            // Configure the dialog for the specified property and display it
            return Initialize(designer, entityDataSource, context.PropertyDescriptor.Name, serviceProvider, value);
        } 

        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) 
        { 
            ControlDesigner.InvokeTransactedChange(
                (IComponent)context.Instance, 
                new TransactedChangeCallback(EditQueryChangeCallback),
                new Pair(context, value),
                Strings.ExpressionEditorTransactionDescription);
 
            return value;
        } 
 
        // Determines if the specified property is one that has an associated "AutoGenerateXXXClause" property
        private static bool GetAutoGen(string operation, EntityDataSourceDesigner entityDataSourceDesigner) 
        {
            if (String.Equals("Where", operation, StringComparison.Ordinal))
            {
                return entityDataSourceDesigner.AutoGenerateWhereClause; 
            }
            else if (String.Equals("OrderBy", operation, StringComparison.Ordinal)) 
            { 
                return entityDataSourceDesigner.AutoGenerateOrderByClause;
            } 
            return false;
        }

        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) 
        {
            return UITypeEditorEditStyle.Modal; 
        } 

        // Gets the name of the AutoGenerateXXXProperty associated with the specified property name 
        private static string GetOperationAutoGenerateProperty(string propertyName)
        {
            if (String.Equals("Where", propertyName, StringComparison.Ordinal))
            { 
                return "AutoGenerateWhereClause";
            } 
            else if (String.Equals("OrderBy", propertyName, StringComparison.Ordinal)) 
            {
                return "AutoGenerateOrderByClause"; 
            }
            return null;
        }
 
        // Gets the label text to display over the textbox for editing the specified property name
        private static string GetStatementLabel(string propertyName) 
        { 
            switch (propertyName)
            { 
                case "CommandText":
                    return Strings.ExpressionEditor_CommandTextLabel;
                case "OrderBy":
                case "Select": 
                case "Where":
                    return Strings.ExpressionEditor_ExpressionStatementLabel(propertyName); 
                default: 
                    Debug.Fail("Unknown property name in EntityDataSourceStatementEditor: " + propertyName);
                    return null; 
            }
        }

        // Gets the F1 help topic for each of the dialogs using the specified property name 
        private static string GetHelpTopic(string propertyName)
        { 
            switch (propertyName) 
            {
                case "CommandText": return "net.Asp.EntityDataSource.CommandTextExpression"; 
                case "OrderBy": return "net.Asp.EntityDataSource.OrderByExpression";
                case "Select": return "net.Asp.EntityDataSource.SelectExpression";
                case "Where": return "net.Asp.EntityDataSource.WhereExpression";
                default: 
                    Debug.Fail("Unknown property name in EntityDataSourceStatementEditor: " + propertyName);
                    return String.Empty; 
            } 
        }
 
        // Gets the property name for the parameters property associated with the specified property name
        private static string GetOperationParameterProperty(string propertyName)
        {
            switch (propertyName) 
            {
                case "CommandText": 
                    return "CommandParameters"; 
                case "OrderBy":
                    return "OrderByParameters"; 
                case "Select":
                     return "SelectParameters";
                case "Where":
                    return "WhereParameters"; 
                default:
                    Debug.Fail("Unknown property name in EntityDataSourceStatementEditor: " + propertyName); 
                    return null; 
            }
        } 

        // Gets a clone of the parameters collection associated with the specified property name
        private static ParameterCollection GetParameters(string propertyName, EntityDataSourceDesigner designer)
        { 
            switch (propertyName)
            { 
                case "CommandText": 
                    return designer.CloneCommandParameters();
                case "OrderBy": 
                    return designer.CloneOrderByParameters();
                case "Select":
                    return designer.CloneSelectParameters();
                case "Where": 
                    return designer.CloneWhereParameters();
                default: 
                    Debug.Fail("Unknown property name in EntityDataSourceStatementEditor: " + propertyName); 
                    return null;
            } 
        }

        // Updates the parameters collection associated with the specified property name
        private static void SetParameters(string propertyName, EntityDataSourceDesigner designer, ParameterCollection parameters) 
        {
            switch (propertyName) 
            { 
                case "CommandText":
                    designer.SetCommandParameterContents(parameters); 
                    break;
                case "OrderBy":
                    designer.SetOrderByParameterContents(parameters);
                    break; 
                case "Select":
                    designer.SetSelectParameterContents(parameters); 
                    break; 
                case "Where":
                    designer.SetWhereParameterContents(parameters); 
                    break;
                default:
                    Debug.Fail("Unknown property name in EntityDataSourceStatementEditor: " + propertyName);
                    break; 

            } 
        } 

        // Configures and displays the editor dialog based on the specified property name 
        private bool Initialize(EntityDataSourceDesigner designer, EntityDataSource entityDataSource, string propertyName, IServiceProvider serviceProvider, string statement)
        {
            string propertyParameters = GetOperationParameterProperty(propertyName);
            string autoGenProperty = GetOperationAutoGenerateProperty(propertyName); 
            bool hasAutoGen = (autoGenProperty != null);
            bool autoGen = GetAutoGen(propertyName, designer); 
            ParameterCollection parameters = GetParameters(propertyName, designer); 
            string label = GetStatementLabel(propertyName);
            string helpTopic = GetHelpTopic(propertyName); 

            EntityDataSourceStatementEditorForm form = new EntityDataSourceStatementEditorForm(entityDataSource, serviceProvider,
                hasAutoGen, autoGen, propertyName, label, helpTopic, statement, parameters);
 
            DialogResult result = UIHelper.ShowDialog(serviceProvider, form);
 
            if (result == DialogResult.OK) 
            {
                // We use the property descriptors to reset the values to 
                // make sure we clear out any databindings or expressions that
                // may be set.
                PropertyDescriptor propDesc = null;
 
                if (autoGenProperty != null)
                { 
                    propDesc = TypeDescriptor.GetProperties(entityDataSource)[autoGenProperty]; 
                    propDesc.ResetValue(entityDataSource);
                    propDesc.SetValue(entityDataSource, form.AutoGen); 
                }

                if (propertyName != null)
                { 
                    propDesc = TypeDescriptor.GetProperties(entityDataSource)[propertyName];
                    propDesc.ResetValue(entityDataSource); 
                    propDesc.SetValue(entityDataSource, form.Statement); 
                }
 
                if (propertyParameters != null)
                {
                    SetParameters(propertyName, designer, form.Parameters);
                } 

                return true; 
            } 
            else
            { 
                return false;
            }
        }
 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner       [....]
// @backupOwner [....] 
//--------------------------------------------------------------------- 
using System.Collections.Generic;
using System.ComponentModel; 
using System.ComponentModel.Design;
using System.Web.UI.Design.WebControls.Util;
using System.Diagnostics;
using System.Drawing.Design; 
using System.Web.UI;
using System.Web.UI.Design; 
using System.Web.UI.WebControls; 
using System.Windows.Forms;
 
namespace System.Web.UI.Design.WebControls
{
    internal class EntityDataSourceStatementEditor : UITypeEditor
    { 
        private bool EditQueryChangeCallback(object pair)
        { 
            // pair.First is a wrapper that contains the EntityDataSource instance and property name being edited 
            // pair.Second contains the value of the property being edited
            ITypeDescriptorContext context = (ITypeDescriptorContext)((Pair)pair).First; 
            string value = (string)((Pair)pair).Second;

            EntityDataSource entityDataSource = (EntityDataSource)context.Instance;
            IServiceProvider serviceProvider = entityDataSource.Site; 

            IDesignerHost designerHost = (IDesignerHost)serviceProvider.GetService(typeof(IDesignerHost)); 
            Debug.Assert(designerHost != null, "Did not get DesignerHost service."); 

            EntityDataSourceDesigner designer = (EntityDataSourceDesigner)designerHost.GetDesigner(entityDataSource); 

            // Configure the dialog for the specified property and display it
            return Initialize(designer, entityDataSource, context.PropertyDescriptor.Name, serviceProvider, value);
        } 

        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) 
        { 
            ControlDesigner.InvokeTransactedChange(
                (IComponent)context.Instance, 
                new TransactedChangeCallback(EditQueryChangeCallback),
                new Pair(context, value),
                Strings.ExpressionEditorTransactionDescription);
 
            return value;
        } 
 
        // Determines if the specified property is one that has an associated "AutoGenerateXXXClause" property
        private static bool GetAutoGen(string operation, EntityDataSourceDesigner entityDataSourceDesigner) 
        {
            if (String.Equals("Where", operation, StringComparison.Ordinal))
            {
                return entityDataSourceDesigner.AutoGenerateWhereClause; 
            }
            else if (String.Equals("OrderBy", operation, StringComparison.Ordinal)) 
            { 
                return entityDataSourceDesigner.AutoGenerateOrderByClause;
            } 
            return false;
        }

        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) 
        {
            return UITypeEditorEditStyle.Modal; 
        } 

        // Gets the name of the AutoGenerateXXXProperty associated with the specified property name 
        private static string GetOperationAutoGenerateProperty(string propertyName)
        {
            if (String.Equals("Where", propertyName, StringComparison.Ordinal))
            { 
                return "AutoGenerateWhereClause";
            } 
            else if (String.Equals("OrderBy", propertyName, StringComparison.Ordinal)) 
            {
                return "AutoGenerateOrderByClause"; 
            }
            return null;
        }
 
        // Gets the label text to display over the textbox for editing the specified property name
        private static string GetStatementLabel(string propertyName) 
        { 
            switch (propertyName)
            { 
                case "CommandText":
                    return Strings.ExpressionEditor_CommandTextLabel;
                case "OrderBy":
                case "Select": 
                case "Where":
                    return Strings.ExpressionEditor_ExpressionStatementLabel(propertyName); 
                default: 
                    Debug.Fail("Unknown property name in EntityDataSourceStatementEditor: " + propertyName);
                    return null; 
            }
        }

        // Gets the F1 help topic for each of the dialogs using the specified property name 
        private static string GetHelpTopic(string propertyName)
        { 
            switch (propertyName) 
            {
                case "CommandText": return "net.Asp.EntityDataSource.CommandTextExpression"; 
                case "OrderBy": return "net.Asp.EntityDataSource.OrderByExpression";
                case "Select": return "net.Asp.EntityDataSource.SelectExpression";
                case "Where": return "net.Asp.EntityDataSource.WhereExpression";
                default: 
                    Debug.Fail("Unknown property name in EntityDataSourceStatementEditor: " + propertyName);
                    return String.Empty; 
            } 
        }
 
        // Gets the property name for the parameters property associated with the specified property name
        private static string GetOperationParameterProperty(string propertyName)
        {
            switch (propertyName) 
            {
                case "CommandText": 
                    return "CommandParameters"; 
                case "OrderBy":
                    return "OrderByParameters"; 
                case "Select":
                     return "SelectParameters";
                case "Where":
                    return "WhereParameters"; 
                default:
                    Debug.Fail("Unknown property name in EntityDataSourceStatementEditor: " + propertyName); 
                    return null; 
            }
        } 

        // Gets a clone of the parameters collection associated with the specified property name
        private static ParameterCollection GetParameters(string propertyName, EntityDataSourceDesigner designer)
        { 
            switch (propertyName)
            { 
                case "CommandText": 
                    return designer.CloneCommandParameters();
                case "OrderBy": 
                    return designer.CloneOrderByParameters();
                case "Select":
                    return designer.CloneSelectParameters();
                case "Where": 
                    return designer.CloneWhereParameters();
                default: 
                    Debug.Fail("Unknown property name in EntityDataSourceStatementEditor: " + propertyName); 
                    return null;
            } 
        }

        // Updates the parameters collection associated with the specified property name
        private static void SetParameters(string propertyName, EntityDataSourceDesigner designer, ParameterCollection parameters) 
        {
            switch (propertyName) 
            { 
                case "CommandText":
                    designer.SetCommandParameterContents(parameters); 
                    break;
                case "OrderBy":
                    designer.SetOrderByParameterContents(parameters);
                    break; 
                case "Select":
                    designer.SetSelectParameterContents(parameters); 
                    break; 
                case "Where":
                    designer.SetWhereParameterContents(parameters); 
                    break;
                default:
                    Debug.Fail("Unknown property name in EntityDataSourceStatementEditor: " + propertyName);
                    break; 

            } 
        } 

        // Configures and displays the editor dialog based on the specified property name 
        private bool Initialize(EntityDataSourceDesigner designer, EntityDataSource entityDataSource, string propertyName, IServiceProvider serviceProvider, string statement)
        {
            string propertyParameters = GetOperationParameterProperty(propertyName);
            string autoGenProperty = GetOperationAutoGenerateProperty(propertyName); 
            bool hasAutoGen = (autoGenProperty != null);
            bool autoGen = GetAutoGen(propertyName, designer); 
            ParameterCollection parameters = GetParameters(propertyName, designer); 
            string label = GetStatementLabel(propertyName);
            string helpTopic = GetHelpTopic(propertyName); 

            EntityDataSourceStatementEditorForm form = new EntityDataSourceStatementEditorForm(entityDataSource, serviceProvider,
                hasAutoGen, autoGen, propertyName, label, helpTopic, statement, parameters);
 
            DialogResult result = UIHelper.ShowDialog(serviceProvider, form);
 
            if (result == DialogResult.OK) 
            {
                // We use the property descriptors to reset the values to 
                // make sure we clear out any databindings or expressions that
                // may be set.
                PropertyDescriptor propDesc = null;
 
                if (autoGenProperty != null)
                { 
                    propDesc = TypeDescriptor.GetProperties(entityDataSource)[autoGenProperty]; 
                    propDesc.ResetValue(entityDataSource);
                    propDesc.SetValue(entityDataSource, form.AutoGen); 
                }

                if (propertyName != null)
                { 
                    propDesc = TypeDescriptor.GetProperties(entityDataSource)[propertyName];
                    propDesc.ResetValue(entityDataSource); 
                    propDesc.SetValue(entityDataSource, form.Statement); 
                }
 
                if (propertyParameters != null)
                {
                    SetParameters(propertyName, designer, form.Parameters);
                } 

                return true; 
            } 
            else
            { 
                return false;
            }
        }
 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK