File: AuthoringOM\ParameterBinding.cs
Project: ndp\cdf\src\WF\Common\System.Workflow.ComponentModel.csproj (System.Workflow.ComponentModel)
namespace System.Workflow.ComponentModel
{
    using System;
    using System.ComponentModel;
    using System.ComponentModel.Design;
    using System.CodeDom;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.ComponentModel.Design.Serialization;
    using System.Workflow.ComponentModel.Design;
    using System.Workflow.ComponentModel.Compiler;
    using System.Workflow.ComponentModel.Serialization;
 
    [Browsable(true)]
    [DesignerSerializer(typeof(DependencyObjectCodeDomSerializer), typeof(CodeDomSerializer))]
    [Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
    public sealed class WorkflowParameterBinding : DependencyObject
    {
        public static readonly DependencyProperty ParameterNameProperty = DependencyProperty.Register("ParameterName", typeof(string), typeof(WorkflowParameterBinding), new PropertyMetadata(DependencyPropertyOptions.Metadata));
        public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(object), typeof(WorkflowParameterBinding));
 
        public WorkflowParameterBinding()
        {
        }
 
        public WorkflowParameterBinding(string parameterName)
        {
            SetValue(ParameterNameProperty, parameterName);
        }
 
        [DefaultValue(null)]
        public object Value
        {
            get
            {
                return GetValue(ValueProperty);
            }
            set
            {
                SetValue(ValueProperty, value);
            }
        }
 
        public string ParameterName
        {
            get
            {
                return (string)GetValue(ParameterNameProperty);
            }
            set
            {
                SetValue(ParameterNameProperty, value);
            }
        }
    }
 
    [Serializable]
    [Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
    public sealed class WorkflowParameterBindingCollection : KeyedCollection<string, WorkflowParameterBinding>
    {
        private Activity ownerActivity = null;
 
        public WorkflowParameterBindingCollection(Activity ownerActivity)
        {
            if (ownerActivity == null)
                throw new ArgumentNullException("ownerActivity");
 
            this.ownerActivity = ownerActivity;
        }
 
        public WorkflowParameterBinding GetItem(string key)
        {
            return this[key];
        }
 
        protected override string GetKeyForItem(WorkflowParameterBinding item)
        {
            return item.ParameterName;
        }
        protected override void ClearItems()
        {
            if (!this.ownerActivity.DesignMode)
                throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime));
 
            base.ClearItems();
        }
        protected override void InsertItem(int index, WorkflowParameterBinding item)
        {
            if (item == null)
                throw new ArgumentNullException("item");
 
            if (!this.ownerActivity.DesignMode)
                throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime));
 
            if (Contains(item.ParameterName))
            {
                WorkflowParameterBinding oldItem = this[item.ParameterName];
                index = this.IndexOf(oldItem);
                RemoveItem(index);
            }
 
            base.InsertItem(index, item);
        }
        protected override void RemoveItem(int index)
        {
            if (!this.ownerActivity.DesignMode)
                throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime));
 
            base.RemoveItem(index);
        }
        protected override void SetItem(int index, WorkflowParameterBinding item)
        {
            if (item == null)
                throw new ArgumentNullException("item");
 
            if (!this.ownerActivity.DesignMode)
                throw new InvalidOperationException(SR.GetString(SR.Error_CanNotChangeAtRuntime));
 
            base.SetItem(index, item);
        }
    }
}